[tracker/wip/miner-fs-refactor: 13/31] libtracker-miner, tests: First tests to check indexing tree capabilities
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/miner-fs-refactor: 13/31] libtracker-miner, tests: First tests to check indexing tree capabilities
- Date: Tue, 27 Sep 2011 16:55:08 +0000 (UTC)
commit 29d7571408fa4a32076524f9753df7616c0fd0d7
Author: Aleksander Morgado <aleksander lanedo com>
Date: Wed Aug 3 17:11:18 2011 +0200
libtracker-miner,tests: First tests to check indexing tree capabilities
tests/libtracker-miner/Makefile.am | 6 +-
.../libtracker-miner/tracker-indexing-tree-test.c | 190 +++++++++++++-------
2 files changed, 132 insertions(+), 64 deletions(-)
---
diff --git a/tests/libtracker-miner/Makefile.am b/tests/libtracker-miner/Makefile.am
index 3cd1a06..7ed8c98 100644
--- a/tests/libtracker-miner/Makefile.am
+++ b/tests/libtracker-miner/Makefile.am
@@ -23,7 +23,8 @@ TEST_PROGS += \
tracker-thumbnailer-test \
tracker-monitor-test \
tracker-priority-queue-test \
- tracker-task-pool-test
+ tracker-task-pool-test \
+ tracker-indexing-tree-test
AM_CPPFLAGS = \
$(BUILD_CFLAGS) \
@@ -87,6 +88,9 @@ tracker_priority_queue_test_SOURCES = \
tracker_task_pool_test_SOURCES = \
tracker-task-pool-test.c
+tracker_indexing_tree_test_SOURCES = \
+ tracker-indexing-tree-test.c
+
noinst_HEADERS = \
$(libtracker_miner_marshal_headers) \
$(libtracker_miner_monitor_headers) \
diff --git a/tests/libtracker-miner/tracker-indexing-tree-test.c b/tests/libtracker-miner/tracker-indexing-tree-test.c
index 9bac491..b390e2e 100644
--- a/tests/libtracker-miner/tracker-indexing-tree-test.c
+++ b/tests/libtracker-miner/tracker-indexing-tree-test.c
@@ -23,75 +23,141 @@
#include <glib.h>
#include <glib/gstdio.h>
-#include <tracker-indexing-tree.h>
+#include <libtracker-miner/tracker-indexing-tree.h>
-static void
-test_indexing_tree_recursive (void)
-{
+/*
+ * Test directory structure:
+ * - Directory A
+ * -- Directory AA
+ * --- Directory AAA
+ * ---- Directory AAAA
+ * ---- Directory AAAB
+ * --- Directory AAB
+ * -- Directory AB
+ * --- Directory ABA
+ * --- Directory ABB
+ */
+typedef enum {
+ TEST_DIRECTORY_A = 0,
+ TEST_DIRECTORY_AA,
+ TEST_DIRECTORY_AAA,
+ TEST_DIRECTORY_AAAA,
+ TEST_DIRECTORY_AAAB,
+ TEST_DIRECTORY_AAB,
+ TEST_DIRECTORY_AB,
+ TEST_DIRECTORY_ABA,
+ TEST_DIRECTORY_ABB,
+ TEST_DIRECTORY_LAST
+} TestDirectory;
+
+/* Fixture struct */
+typedef struct {
+ /* Array with all existing test directories */
+ GFile *test_dir[TEST_DIRECTORY_LAST];
+ /* The tree to test */
TrackerIndexingTree *tree;
- GFile *recursive;
- GFile *aux;
-
- tree = tracker_indexing_tree_new ();
-
- recursive = g_file_new_for_path ("/home/user/Music");
- tracker_indexing_tree_add (tree,
- recursive,
- (TRACKER_DIRECTORY_FLAG_MONITOR | TRACKER_DIRECTORY_FLAG_RECURSE));
-
- aux = g_file_new_for_path ("/home/user/Music/Album");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_DIRECTORY) == TRUE);
- g_object_unref (aux);
-
- aux = g_file_new_for_path ("/home/user/Music/File.mp3");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_REGULAR) == TRUE);
- g_object_unref (aux);
-
- aux = g_file_new_for_path ("/home/user/Music/Album/Artist");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_DIRECTORY) == TRUE);
- g_object_unref (aux);
+} TestCommonContext;
+
+#define ASSERT_INDEXABLE(fixture, id) \
+ g_assert (tracker_indexing_tree_file_is_indexable (fixture->tree, \
+ fixture->test_dir[id], \
+ G_FILE_TYPE_DIRECTORY) == TRUE)
+#define ASSERT_NOT_INDEXABLE(fixture, id) \
+ g_assert (tracker_indexing_tree_file_is_indexable (fixture->tree, \
+ fixture->test_dir[id], \
+ G_FILE_TYPE_DIRECTORY) == FALSE)
+
+#define test_add(path,fun) \
+ g_test_add (path, \
+ TestCommonContext, \
+ NULL, \
+ test_common_context_setup, \
+ fun, \
+ test_common_context_teardown)
+
+void
+test_common_context_setup (TestCommonContext *fixture,
+ gconstpointer data)
+{
+ guint i;
+ static const gchar *test_directories_subpaths [TEST_DIRECTORY_LAST] = {
+ "/A",
+ "/A/A",
+ "/A/A/A",
+ "/A/A/A/A",
+ "/A/A/A/B",
+ "/A/A/B",
+ "/A/B/",
+ "/A/B/A",
+ "/A/B/B"
+ };
+
+ /* Initialize aux directories */
+ for (i = 0; i < TEST_DIRECTORY_LAST; i++)
+ fixture->test_dir[i] = g_file_new_for_path (test_directories_subpaths[i]);
+
+ fixture->tree = tracker_indexing_tree_new ();
+}
- aux = g_file_new_for_path ("/home/user/Music/Artist/File.mp3");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_REGULAR) == TRUE);
- g_object_unref (aux);
+void
+test_common_context_teardown (TestCommonContext *fixture,
+ gconstpointer data)
+{
+ gint i;
+ /* Deinit aux directories, from last to first */
+ for (i = TEST_DIRECTORY_LAST-1; i >= 0; i--) {
+ if (fixture->test_dir[i])
+ g_object_unref (fixture->test_dir[i]);
+ }
- g_object_unref (aux);
- g_object_unref (tree);
+ if (fixture->tree)
+ g_object_unref (fixture->tree);
}
+/* If A is ignored,
+ * -A, AA, AB, AAA, AAB, ABA and ABB are not indexable
+ */
static void
-test_indexing_tree_non_recursive (void)
+test_indexing_tree_001 (TestCommonContext *fixture,
+ gconstpointer data)
{
- TrackerIndexingTree *tree;
- GFile *recursive;
- GFile *aux;
-
- tree = tracker_indexing_tree_new ();
-
- recursive = g_file_new_for_path ("/home/user/Music");
- tracker_indexing_tree_add (tree,
- recursive,
- (TRACKER_DIRECTORY_FLAG_MONITOR);
-
- aux = g_file_new_for_path ("/home/user/Music/Album");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_DIRECTORY) == TRUE);
- g_object_unref (aux);
-
- aux = g_file_new_for_path ("/home/user/Music/File.mp3");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_REGULAR) == TRUE);
- g_object_unref (aux);
-
- aux = g_file_new_for_path ("/home/user/Music/Album/Artist");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_DIRECTORY) == FALSE);
- g_object_unref (aux);
-
- aux = g_file_new_for_path ("/home/user/Music/Artist/File.mp3");
- g_assert (tracker_indexing_tree_file_is_indexable (tree, aux, G_FILE_TYPE_REGULAR) == FALSE);
- g_object_unref (aux);
+ tracker_indexing_tree_add (fixture->tree,
+ fixture->test_dir[TEST_DIRECTORY_A],
+ TRACKER_DIRECTORY_FLAG_IGNORE);
+
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_A);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAAA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAAB);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAB);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AB);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_ABA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_ABA);
+}
- g_object_unref (aux);
- g_object_unref (tree);
+/* If A is monitored (NOT recursively):
+ * -A, AA, AB are indexable
+ * -AAA, AAB, ABA and ABB are not indexable
+ */
+static void
+test_indexing_tree_002 (TestCommonContext *fixture,
+ gconstpointer data)
+{
+ tracker_indexing_tree_add (fixture->tree,
+ fixture->test_dir[TEST_DIRECTORY_A],
+ TRACKER_DIRECTORY_FLAG_MONITOR);
+
+ ASSERT_INDEXABLE (fixture, TEST_DIRECTORY_A);
+ ASSERT_INDEXABLE (fixture, TEST_DIRECTORY_AA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAAA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAAB);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_AAB);
+ ASSERT_INDEXABLE (fixture, TEST_DIRECTORY_AB);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_ABA);
+ ASSERT_NOT_INDEXABLE (fixture, TEST_DIRECTORY_ABA);
}
gint
@@ -104,10 +170,8 @@ main (gint argc,
g_test_message ("Testing indexing tree");
- g_test_add_func ("/libtracker-miner/tracker-indexing-tree/recursive",
- test_indexing_tree_recursive);
- g_test_add_func ("/libtracker-miner/tracker-indexing-tree/non-recursive",
- test_indexing_tree_non_recursive);
+ test_add ("/libtracker-miner/indexing-tree/001", test_indexing_tree_001);
+ test_add ("/libtracker-miner/indexing-tree/002", test_indexing_tree_002);
return g_test_run ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]