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:
parent
34a37303bf
commit
42fe047e73
|
@ -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),
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue