summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2018-01-20 00:21:47 +0100
committerCarlos Soriano <csoriano@gnome.org>2018-01-20 00:24:04 +0100
commiteb97e77546b07afee1d03c3458d329c65b7a05f3 (patch)
tree37eba1d85f913cdf3c01f6891a41c50217a2c47e
parent2fd582a1b2813bea8270a14a1262421fddac7479 (diff)
downloadnautilus-eb97e77546b07afee1d03c3458d329c65b7a05f3.tar.gz
tests: Add test for the attributes cache
-rw-r--r--test/automated/displayless/meson.build9
-rw-r--r--test/automated/displayless/test-file-attributes-cache.c154
-rw-r--r--test/automated/displayless/test_file_010
-rw-r--r--test/automated/displayless/test_file_02bin0 -> 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
new file mode 100644
index 000000000..5cd593515
--- /dev/null
+++ b/test/automated/displayless/test_file_02
Binary files differ