diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/list.c | 50 | ||||
-rw-r--r-- | test/loader.c | 15 | ||||
-rw-r--r-- | test/navigator.c | 79 |
3 files changed, 98 insertions, 46 deletions
diff --git a/test/list.c b/test/list.c new file mode 100644 index 0000000..8c095d6 --- /dev/null +++ b/test/list.c @@ -0,0 +1,50 @@ +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> +#include <unistd.h> +#include "list.h" + +static void test_split_string(void **state) +{ + (void)state; + + struct imv_list *list; + + list = imv_split_string("word", ' '); + assert_true(list); + assert_true(list->len == 1); + assert_false(strcmp(list->items[0], "word")); + imv_list_deep_free(list); + + list = imv_split_string("hello world this is a test", ' '); + assert_true(list); + assert_true(list->len == 6); + assert_false(strcmp(list->items[0], "hello")); + assert_false(strcmp(list->items[1], "world")); + assert_false(strcmp(list->items[2], "this")); + assert_false(strcmp(list->items[3], "is")); + assert_false(strcmp(list->items[4], "a")); + assert_false(strcmp(list->items[5], "test")); + imv_list_deep_free(list); + + list = imv_split_string(" odd whitespace test ", ' '); + assert_true(list); + assert_true(list->len == 3); + assert_false(strcmp(list->items[0], "odd")); + assert_false(strcmp(list->items[1], "whitespace")); + assert_false(strcmp(list->items[2], "test")); + imv_list_deep_free(list); +} + +int main(void) +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_split_string), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +} + + +/* vim:set ts=2 sts=2 sw=2 et: */ diff --git a/test/loader.c b/test/loader.c index bbbb8d7..e8791c0 100644 --- a/test/loader.c +++ b/test/loader.c @@ -10,24 +10,25 @@ static void test_jpeg_rotation(void **state) { (void)state; - struct imv_loader ldr; + struct imv_loader *ldr = imv_loader_create(); void *retval; char *error; unsigned int width; - imv_init_loader(&ldr); - imv_loader_load(&ldr, "test/orientation.jpg", NULL, 0); - pthread_join(ldr.bg_thread, &retval); + imv_loader_load(ldr, "test/orientation.jpg", NULL, 0); + pthread_join(ldr->bg_thread, &retval); - error = imv_loader_get_error(&ldr); + error = imv_loader_get_error(ldr); assert_false(error); assert_false(retval == PTHREAD_CANCELED); - assert_false(ldr.out_bmp == NULL); + assert_false(ldr->out_bmp == NULL); - width = FreeImage_GetWidth(ldr.out_bmp); + width = FreeImage_GetWidth(ldr->out_bmp); assert_true(width == 1); + + imv_loader_free(ldr); } int main(void) diff --git a/test/navigator.c b/test/navigator.c index 55ab392..3f2c50f 100644 --- a/test/navigator.c +++ b/test/navigator.c @@ -19,78 +19,76 @@ static void test_navigator_add_remove(void **state) { (void)state; - struct imv_navigator nav; - imv_navigator_init(&nav); + struct imv_navigator *nav = imv_navigator_create(); /* Check poll_changed */ - assert_false(imv_navigator_poll_changed(&nav, 0)); + assert_false(imv_navigator_poll_changed(nav)); /* Add 6 paths, one non-existant should fail */ - assert_false(imv_navigator_add(&nav, FILENAME1, 0)); - assert_false(imv_navigator_add(&nav, FILENAME2, 0)); - assert_false(imv_navigator_add(&nav, FILENAME3, 0)); - assert_false(imv_navigator_add(&nav, FILENAME4, 0)); - assert_false(imv_navigator_add(&nav, FILENAME5, 0)); - assert_false(imv_navigator_add(&nav, FILENAME6, 0)); - assert_int_equal(nav.num_paths, 6); + assert_false(imv_navigator_add(nav, FILENAME1, 0)); + assert_false(imv_navigator_add(nav, FILENAME2, 0)); + assert_false(imv_navigator_add(nav, FILENAME3, 0)); + assert_false(imv_navigator_add(nav, FILENAME4, 0)); + assert_false(imv_navigator_add(nav, FILENAME5, 0)); + assert_false(imv_navigator_add(nav, FILENAME6, 0)); + assert_int_equal(nav->num_paths, 6); /* Check poll_changed */ - assert_true(imv_navigator_poll_changed(&nav, 0)); + assert_true(imv_navigator_poll_changed(nav)); /* Make sure current selection is #1 */ - assert_string_equal(imv_navigator_selection(&nav), FILENAME1); + assert_string_equal(imv_navigator_selection(nav), FILENAME1); /* 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, 5); - assert_string_equal(imv_navigator_selection(&nav), FILENAME3); + 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, 5); + assert_string_equal(imv_navigator_selection(nav), FILENAME3); /* 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_string_equal(imv_navigator_selection(&nav), FILENAME6); + imv_navigator_select_rel(nav, -1); + assert_string_equal(imv_navigator_selection(nav), FILENAME1); + imv_navigator_remove(nav, FILENAME1); + 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); + 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); + 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_select_rel(nav, 1); + assert_string_equal(imv_navigator_selection(nav), FILENAME5); - imv_navigator_destroy(&nav); + imv_navigator_free(nav); } static void test_navigator_file_changed(void **state) { int fd; - struct imv_navigator nav; + struct imv_navigator *nav = imv_navigator_create(); struct timespec times[2] = { {0, 0}, {0, 0} }; (void)state; - imv_navigator_init(&nav); fd = open(FILENAME1, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); if (fd == -1) { - imv_navigator_destroy(&nav); + imv_navigator_free(nav); (void)unlink(FILENAME1); skip(); } assert_false(futimens(fd, times) == -1); - assert_false(imv_navigator_add(&nav, FILENAME1, 0)); - assert_true(imv_navigator_poll_changed(&nav, 0)); - assert_false(imv_navigator_poll_changed(&nav, 0)); + assert_false(imv_navigator_add(nav, FILENAME1, 0)); + assert_true(imv_navigator_poll_changed(nav)); + assert_false(imv_navigator_poll_changed(nav)); assert_false(sleep(1)); @@ -103,11 +101,14 @@ static void test_navigator_file_changed(void **state) times[1].tv_sec = UTIME_NOW; assert_false(futimens(fd, times) == -1); - assert_true(imv_navigator_poll_changed(&nav, 0)); + /* sleep to ensure we don't hit the poll rate-limiting */ + sleep(1); + + assert_true(imv_navigator_poll_changed(nav)); (void)close(fd); (void)unlink(FILENAME1); - imv_navigator_destroy(&nav); + imv_navigator_free(nav); } int main(void) |