static void test_disbalance(void) { static int undo_levels = 10; init_undo_list(&execute_fail, &undo_levels); reset_undo_list(); cmd_group_begin("msg0"); assert_int_equal(0, add_operation(OP_COPY, NULL, NULL, "do_msg0", "undo_msg0")); cmd_group_end(); cmd_group_begin("msg1"); assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg1", "undo_msg1")); cmd_group_end(); assert_int_equal(0, undo_group()); assert_int_equal(-3, undo_group()); assert_int_equal(-1, undo_group()); assert_int_equal(-4, redo_group()); assert_int_equal(0, redo_group()); assert_int_equal(-1, redo_group()); }
static void test_underflow(void) { assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(-1, undo_group()); assert_int_equal(4, i); }
static void test_redo(void) { assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, redo_group()); assert_int_equal(0, redo_group()); assert_int_equal(0, redo_group()); assert_int_equal(8, i); }
static void test_undolevel_change_to_smaller(void) { static int undo_levels = 4; init_undo_list_for_tests(&execute_dummy, &undo_levels); cmd_group_begin("msg4"); assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg4", "undo_msg4")); cmd_group_end(); assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(-1, undo_group()); }
static void test_cannot_be_undone(void) { cmd_group_begin("msg0"); assert_int_equal(0, add_operation(OP_REMOVE, NULL, NULL, "do_msg0", "")); cmd_group_end(); assert_int_equal(-5, undo_group()); }
static void test_list_truncating(void) { assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, redo_group()); assert_int_equal(0, redo_group()); assert_int_equal(0, redo_group()); assert_int_equal(0, undo_group()); assert_int_equal(0, undo_group()); cmd_group_begin("msg4"); assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg4", "undo_msg4")); cmd_group_end(); assert_int_equal(-1, redo_group()); assert_int_equal(11, i); }
static void test_removing_of_incomplete_groups(void) { static int undo_levels = 10; int i; init_undo_list(&exec_dummy, &undo_levels); cmd_group_begin("msg0"); for(i = 0; i < 10; i++) assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg0", "undo_msg0")); cmd_group_end(); cmd_group_begin("msg1"); assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg1", "undo_msg1")); cmd_group_end(); assert_int_equal(0, undo_group()); assert_int_equal(-1, undo_group()); }
static void test_skipping(void) { static int undo_levels = 10; init_undo_list(&exec_skip, &undo_levels); cmd_group_begin("msg0"); assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg0", "undo_msg0")); cmd_group_end(); assert_int_equal(-6, undo_group()); assert_int_equal(-4, redo_group()); }
static void test_cmd_1undo_1redo(void) { static int undo_levels = 10; reset_undo_list(); init_undo_list(&exec_dummy, &undo_levels); cmd_group_begin("msg0"); assert_int_equal(0, add_operation(OP_MOVE, NULL, NULL, "do_msg0", "undo_msg0")); cmd_group_end(); assert_int_equal(0, undo_group()); assert_int_equal(0, redo_group()); }