From fe10d9d38f02dbfe229e40f96f9640c3568a7f69 Mon Sep 17 00:00:00 2001 From: "Dmitrij D. Czarkoff" Date: Tue, 26 Apr 2016 22:07:02 +0200 Subject: Reimplement '-x' flag This change effectively backs out f1737ddd06141afbe99f37af3b5c2d0f1df5fe7a, implementing the same functionality in a simpler and more correct way. Implementation details: * imv_navigator.wrapped - a new field that has value "0" by default; once navigator wraps around the list, this field recieves value "1". * imv_navigator_wrapped(&nav) - a new function that returns non-zero value iff navigator wrapped around the list. Currently just returns value of imv_navigator.wrapped. While at it, expanded "test_navigator_remove" and merged it with "test_navigator_add". Resulting test is called "test_navigator_add_remove". Fixes #94. --- test/navigator.c | 60 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 24 deletions(-) (limited to 'test') diff --git a/test/navigator.c b/test/navigator.c index 9b756e9..2a8a7bb 100644 --- a/test/navigator.c +++ b/test/navigator.c @@ -12,48 +12,61 @@ #define FILENAME1 "example.file.1" #define FILENAME2 "example.file.2" #define FILENAME3 "example.file.3" +#define FILENAME4 "example.file.4" +#define FILENAME5 "example.file.5" +#define FILENAME6 "example.file.6" -static void test_navigator_add(void **state) +static void test_navigator_add_remove(void **state) { (void)state; struct imv_navigator nav; imv_navigator_init(&nav); + /* Check poll_changed */ assert_false(imv_navigator_poll_changed(&nav, 0)); - imv_navigator_add(&nav, FILENAME1, 0); - assert_true(imv_navigator_poll_changed(&nav, 0)); - assert_string_equal(imv_navigator_selection(&nav), FILENAME1); - - imv_navigator_destroy(&nav); -} - -static void test_navigator_remove(void **state) -{ - (void)state; - struct imv_navigator nav; - imv_navigator_init(&nav); /* Add 3 paths */ imv_navigator_add(&nav, FILENAME1, 0); imv_navigator_add(&nav, FILENAME2, 0); imv_navigator_add(&nav, FILENAME3, 0); - assert_int_equal(nav.num_paths, 3); + imv_navigator_add(&nav, FILENAME4, 0); + imv_navigator_add(&nav, FILENAME5, 0); + imv_navigator_add(&nav, FILENAME6, 0); + assert_int_equal(nav.num_paths, 6); + + /* Check poll_changed */ + assert_true(imv_navigator_poll_changed(&nav, 0)); + /* Make sure current selection is #1 */ assert_string_equal(imv_navigator_selection(&nav), FILENAME1); - assert_true(imv_navigator_select_rel(&nav, 1, 0)); + + /* Move right and remove current file (#2); should get to #3 */ + imv_navigator_select_rel(&nav, 1); assert_string_equal(imv_navigator_selection(&nav), FILENAME2); imv_navigator_remove(&nav, FILENAME2); - assert_int_equal(nav.num_paths, 2); + assert_int_equal(nav.num_paths, 5); assert_string_equal(imv_navigator_selection(&nav), FILENAME3); - assert_false(imv_navigator_select_rel(&nav, 1, 0)); - assert_string_equal(imv_navigator_selection(&nav), FILENAME3); - imv_navigator_remove(&nav, FILENAME3); - assert_int_equal(nav.num_paths, 1); + /* Move left and remove current file (#1); should get to #6 */ + imv_navigator_select_rel(&nav, -1); assert_string_equal(imv_navigator_selection(&nav), FILENAME1); imv_navigator_remove(&nav, FILENAME1); - assert_int_equal(nav.num_paths, 0); - assert_false(imv_navigator_selection(&nav)); + assert_string_equal(imv_navigator_selection(&nav), FILENAME6); + + /* Move left, right, remove current file (#6); should get to #3 */ + imv_navigator_select_rel(&nav, -1); + imv_navigator_select_rel(&nav, 1); + assert_string_equal(imv_navigator_selection(&nav), FILENAME6); + imv_navigator_remove(&nav, FILENAME6); + assert_string_equal(imv_navigator_selection(&nav), FILENAME3); + + /* Remove #4; should not move */ + imv_navigator_remove(&nav, FILENAME4); + assert_string_equal(imv_navigator_selection(&nav), FILENAME3); + + /* Verify that #4 is removed by moving left; should get to #5 */ + imv_navigator_select_rel(&nav, 1); + assert_string_equal(imv_navigator_selection(&nav), FILENAME5); imv_navigator_destroy(&nav); } @@ -100,8 +113,7 @@ static void test_navigator_file_changed(void **state) int main(void) { const struct CMUnitTest tests[] = { - cmocka_unit_test(test_navigator_add), - cmocka_unit_test(test_navigator_remove), + cmocka_unit_test(test_navigator_add_remove), cmocka_unit_test(test_navigator_file_changed), }; -- cgit v1.2.3