Testcase for removal from navigator

Test that removing items leads to predictable results.  Right now test is fairly
incomplete, because it does not cover moving in reversed direction.
This commit is contained in:
Dmitrij D. Czarkoff 2016-04-26 19:27:18 +02:00
parent 34a37303bf
commit 42fe047e73

View file

@ -9,7 +9,9 @@
#include "navigator.h"
#define FILENAME "example.file"
#define FILENAME1 "example.file.1"
#define FILENAME2 "example.file.2"
#define FILENAME3 "example.file.3"
static void test_navigator_add(void **state)
{
@ -18,9 +20,40 @@ static void test_navigator_add(void **state)
imv_navigator_init(&nav);
assert_false(imv_navigator_poll_changed(&nav, 0));
imv_navigator_add(&nav, FILENAME, 0);
imv_navigator_add(&nav, FILENAME1, 0);
assert_true(imv_navigator_poll_changed(&nav, 0));
assert_string_equal(imv_navigator_selection(&nav), FILENAME);
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);
assert_string_equal(imv_navigator_selection(&nav), FILENAME1);
assert_true(imv_navigator_select_rel(&nav, 1, 0));
assert_string_equal(imv_navigator_selection(&nav), FILENAME2);
imv_navigator_remove(&nav, FILENAME2);
assert_int_equal(nav.num_paths, 2);
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);
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));
imv_navigator_destroy(&nav);
}
@ -34,21 +67,21 @@ static void test_navigator_file_changed(void **state)
(void)state;
imv_navigator_init(&nav);
fd = open(FILENAME, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
fd = open(FILENAME1, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
if (fd == -1) {
imv_navigator_destroy(&nav);
(void)unlink(FILENAME);
(void)unlink(FILENAME1);
skip();
}
assert_false(futimens(fd, times) == -1);
imv_navigator_add(&nav, FILENAME, 0);
imv_navigator_add(&nav, FILENAME1, 0);
assert_true(imv_navigator_poll_changed(&nav, 0));
assert_false(imv_navigator_poll_changed(&nav, 0));
assert_false(sleep(1));
fd = open(FILENAME, O_RDWR);
fd = open(FILENAME1, O_RDWR);
assert_false(fd == -1);
times[0].tv_nsec = UTIME_NOW;
@ -60,7 +93,7 @@ static void test_navigator_file_changed(void **state)
assert_true(imv_navigator_poll_changed(&nav, 0));
(void)close(fd);
(void)unlink(FILENAME);
(void)unlink(FILENAME1);
imv_navigator_destroy(&nav);
}
@ -68,6 +101,7 @@ int main(void)
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_navigator_add),
cmocka_unit_test(test_navigator_remove),
cmocka_unit_test(test_navigator_file_changed),
};