aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/list.c50
-rw-r--r--test/loader.c15
-rw-r--r--test/navigator.c79
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)