diff options
author | Carlos Soriano <csoriano@gnome.org> | 2018-01-20 00:21:47 +0100 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2018-01-20 00:24:04 +0100 |
commit | eb97e77546b07afee1d03c3458d329c65b7a05f3 (patch) | |
tree | 37eba1d85f913cdf3c01f6891a41c50217a2c47e | |
parent | 2fd582a1b2813bea8270a14a1262421fddac7479 (diff) | |
download | nautilus-eb97e77546b07afee1d03c3458d329c65b7a05f3.tar.gz |
tests: Add test for the attributes cache
-rw-r--r-- | test/automated/displayless/meson.build | 9 | ||||
-rw-r--r-- | test/automated/displayless/test-file-attributes-cache.c | 154 | ||||
-rw-r--r-- | test/automated/displayless/test_file_01 | 0 | ||||
-rw-r--r-- | test/automated/displayless/test_file_02 | bin | 0 -> 1982 bytes |
4 files changed, 162 insertions, 1 deletions
diff --git a/test/automated/displayless/meson.build b/test/automated/displayless/meson.build index fc8570f3c..77067983f 100644 --- a/test/automated/displayless/meson.build +++ b/test/automated/displayless/meson.build @@ -2,11 +2,18 @@ tests = [ ['test-file-utilities-get-common-filename-prefix', [ 'test-file-utilities-get-common-filename-prefix.c' ]], + ['test-file-attributes-cache', [ + 'test-file-attributes-cache.c' + ]], ['test-eel-string-get-common-prefix', [ 'test-eel-string-get-common-prefix.c' ]] ] +install_data (['test_file_01', 'test_file_02'], + install_dir: '/tmp') foreach t: tests - test(t[0], executable(t[0], t[1], dependencies: libnautilus_dep)) + test(t[0], executable(t[0], t[1], + dependencies: [libnautilus_dep, libnautilus_ng_dep]), + workdir: '/tmp') endforeach diff --git a/test/automated/displayless/test-file-attributes-cache.c b/test/automated/displayless/test-file-attributes-cache.c new file mode 100644 index 000000000..32d381b54 --- /dev/null +++ b/test/automated/displayless/test-file-attributes-cache.c @@ -0,0 +1,154 @@ +#include <glib.h> +#include <glib/gprintf.h> +#include <gtk/gtk.h> + +#include "src-ng/nautilus-file.h" + +#define THUMBNAIL_EXPECT_WIDTH 101 +#define THUMBNAIL_EXPECT_HEIGHT 34 + +static GMutex mutex; +static GCond cond; + +typedef struct +{ + gboolean completed; + gboolean success; +} TestResult; + +static void +free_result (TestResult *result) +{ + g_free (result); +} + +static void +on_query_info_finished (NautilusFile *file, + GFileInfo *info, + GError *error, + gpointer user_data) +{ + TestResult *result; + + result = user_data; + + g_mutex_lock (&mutex); + result->completed = TRUE; + result->success = error == NULL; + g_cond_signal (&cond); + g_mutex_unlock (&mutex); + g_print ("unlocking\n"); +} + +static void +test_query_info () +{ + g_autoptr (NautilusFile) file = NULL; + g_autoptr (GFile) location = NULL; + TestResult *result; + gint64 end_time; + + location = g_file_new_for_path ("test_file_01"); + file = nautilus_file_new (location); + g_assert_nonnull (file); + + result = g_new (TestResult, 1); + result->completed = FALSE; + result->success = FALSE; + + g_mutex_lock (&mutex); + end_time = g_get_monotonic_time () + 10 * G_TIME_SPAN_SECOND; + nautilus_file_query_info (file, NULL, on_query_info_finished, result); + while (!result->completed) + { + if (!g_cond_wait_until (&cond, &mutex, end_time)) + { + g_printerr ("Timeout has been reached"); + g_mutex_unlock (&mutex); + g_assert_not_reached (); + } + } + g_assert (result->success); + + free_result(result); + g_mutex_unlock (&mutex); +} + +static void +on_get_thumbnail_finished (NautilusFile *file, + GdkPixbuf *thumbnail, + gpointer user_data) +{ + TestResult *result; + gint width; + gint height; + + result = user_data; + + g_mutex_lock (&mutex); + result->completed = TRUE; + width = gdk_pixbuf_get_width (thumbnail); + height = gdk_pixbuf_get_height (thumbnail); + g_assert_cmpint (width, THUMBNAIL_EXPECT_WIDTH); + g_assert_cmpint (height, THUMBNAIL_EXPECT_HEIGHT); + result->success = TRUE; + g_cond_signal (&cond); + g_mutex_unlock (&mutex); +} + +static void +test_get_thumbnail () +{ + g_autoptr (NautilusFile) file = NULL; + g_autoptr (GFile) location = NULL; + TestResult *result; + gint64 end_time; + + location = g_file_new_for_path ("test_file_02"); + file = nautilus_file_new (location); + g_assert_nonnull (file); + + result = g_new (TestResult, 1); + result->completed = FALSE; + result->success = FALSE; + + g_mutex_lock (&mutex); + end_time = g_get_monotonic_time () + 10 * G_TIME_SPAN_SECOND; + nautilus_file_get_thumbnail (file, on_get_thumbnail_finished, result); + while (!result->completed) + { + if (!g_cond_wait_until (&cond, &mutex, end_time)) + { + g_printerr ("Timeout has been reached"); + g_mutex_unlock (&mutex); + g_assert_not_reached (); + } + } + + g_assert (result->success); + + free_result(result); + g_mutex_unlock (&mutex); +} + +static void +setup_test_suite () +{ + g_test_add_func ("/info/1.0", + test_query_info); + + g_test_add_func ("/thumbnail/1.1", + test_get_thumbnail); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + g_test_set_nonfatal_assertions (); + + setup_test_suite (); + + return g_test_run (); +} diff --git a/test/automated/displayless/test_file_01 b/test/automated/displayless/test_file_01 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/automated/displayless/test_file_01 diff --git a/test/automated/displayless/test_file_02 b/test/automated/displayless/test_file_02 Binary files differnew file mode 100644 index 000000000..5cd593515 --- /dev/null +++ b/test/automated/displayless/test_file_02 |