[tracker/wip/sam/resource: 5/7] tests: Add unit test for tracker-resource
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/sam/resource: 5/7] tests: Add unit test for tracker-resource
- Date: Thu, 7 Apr 2016 14:24:25 +0000 (UTC)
commit b3a4c6ca3fcf7c9ce2a6e242b28f7f587db791f1
Author: Sam Thursfield <sam afuera me uk>
Date: Thu Apr 7 11:28:17 2016 +0100
tests: Add unit test for tracker-resource
tests/libtracker-sparql/Makefile.am | 3 +
tests/libtracker-sparql/tracker-resource-test.c | 147 +++++++++++++++++++++++
2 files changed, 150 insertions(+), 0 deletions(-)
---
diff --git a/tests/libtracker-sparql/Makefile.am b/tests/libtracker-sparql/Makefile.am
index 1f4cac0..e1dedc6 100644
--- a/tests/libtracker-sparql/Makefile.am
+++ b/tests/libtracker-sparql/Makefile.am
@@ -3,6 +3,7 @@ include $(top_srcdir)/Makefile.decl
noinst_PROGRAMS += $(test_programs)
test_programs = \
+ tracker-resource-test \
tracker-sparql-test \
tracker-gb-737023-test
@@ -18,6 +19,8 @@ LDADD = \
$(BUILD_LIBS) \
$(LIBTRACKER_SPARQL_LIBS)
+tracker_resource_test_SOURCES = tracker-resource-test.c
+
tracker_sparql_test_SOURCES = tracker-sparql-test.c
tracker_gb_737023_test_SOURCES = tracker-gb-737023.c
diff --git a/tests/libtracker-sparql/tracker-resource-test.c b/tests/libtracker-sparql/tracker-resource-test.c
new file mode 100644
index 0000000..92537b9
--- /dev/null
+++ b/tests/libtracker-sparql/tracker-resource-test.c
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2016, Sam Thursfield <sam afuera me uk>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#include <locale.h>
+
+#include <libtracker-sparql/tracker-resource.h>
+
+static void
+test_resource_get_empty (void)
+{
+ TrackerResource *resource;
+
+ resource = tracker_resource_new ("http://example.com/resource");
+
+ g_assert (tracker_resource_get_values (resource, "http://example.com/0") == NULL);
+
+ g_assert (tracker_resource_get_first_double (resource, "http://example.com/0") == 0.0);
+ g_assert (tracker_resource_get_first_int (resource, "http://example.com/0") == 0);
+ g_assert (tracker_resource_get_first_int64 (resource, "http://example.com/0") == 0);
+ g_assert (tracker_resource_get_first_string (resource, "http://example.com/0") == NULL);
+ g_assert (tracker_resource_get_first_uri (resource, "http://example.com/0") == NULL);
+
+ g_object_unref (resource);
+}
+
+static void
+test_resource_get_set_simple (void)
+{
+ TrackerResource *resource;
+
+ resource = tracker_resource_new ("http://example.com/resource");
+
+ tracker_resource_set_double (resource, "http://example.com/1", 0.6);
+ tracker_resource_set_int (resource, "http://example.com/2", 60);
+ tracker_resource_set_int64 (resource, "http://example.com/3", 123456789);
+ tracker_resource_set_string (resource, "http://example.com/4", "Hello");
+ tracker_resource_set_uri (resource, "http://example.com/5", "http://example.com/");
+
+ g_assert (tracker_resource_get_first_double (resource, "http://example.com/1") == 0.6);
+ g_assert_cmpint (tracker_resource_get_first_int (resource, "http://example.com/2"), ==, 60);
+ g_assert (tracker_resource_get_first_int64 (resource, "http://example.com/3") == 123456789);
+ g_assert_cmpstr (tracker_resource_get_first_string (resource, "http://example.com/4"), ==, "Hello");
+ g_assert_cmpstr (tracker_resource_get_first_uri (resource, "http://example.com/5"), ==,
"http://example.com/");
+
+ g_object_unref (resource);
+}
+
+static void
+test_resource_get_set_gvalue (void)
+{
+ TrackerResource *resource;
+ GValue value = G_VALUE_INIT;
+ GList *list;
+
+ resource = tracker_resource_new ("http://example.com/resource");
+
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, "xyzzy");
+ tracker_resource_set_gvalue (resource, "http://example.com/0", &value);
+
+ list = tracker_resource_get_values (resource, "http://example.com/0");
+ g_assert_cmpint (g_list_length (list), ==, 1);
+
+ g_object_unref (resource);
+}
+
+#define RANDOM_GVALUE_TYPE (G_TYPE_HASH_TABLE)
+
+static void
+init_gvalue_with_random_type (GValue *value)
+{
+ /* Hash table is used here as an "unexpected" value type. The rationale
+ * is that while makes no sense to do this in practice, the code shouldn't
+ * crash or assert.
+ */
+ g_value_init (value, G_TYPE_HASH_TABLE);
+ g_value_take_boxed (value, g_hash_table_new (NULL, NULL));
+}
+
+static void
+test_resource_get_set_many (void)
+{
+ TrackerResource *resource;
+ GValue value = G_VALUE_INIT;
+ GList *list;
+
+ resource = tracker_resource_new ("http://example.com/resource");
+
+ /* All the add_* functions except for add_gvalue are generated using the
+ * same macro, so we only need to test one or two of them here.
+ */
+ tracker_resource_add_int (resource, "http://example.com/0", 60);
+ tracker_resource_add_string (resource, "http://example.com/0", "Hello");
+
+ init_gvalue_with_random_type (&value);
+ tracker_resource_add_gvalue (resource, "http://example.com/0", &value);
+ g_value_unset (&value);
+
+ list = tracker_resource_get_values (resource, "http://example.com/0");
+ g_assert_cmpint (g_list_length (list), ==, 3);
+
+ g_assert_cmpint (g_value_get_int (list->data), ==, 60);
+ g_assert_cmpstr (g_value_get_string (list->next->data), ==, "Hello");
+ g_assert (G_VALUE_HOLDS (list->next->next->data, RANDOM_GVALUE_TYPE));
+
+ g_list_free_full (list, (GDestroyNotify) g_value_unset);
+
+ g_object_unref (resource);
+}
+
+int
+main (int argc,
+ char **argv)
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_message ("Testing Tracker resource abstraction");
+
+ g_test_add_func ("/libtracker-sparql/tracker-resource/get_empty",
+ test_resource_get_empty);
+ g_test_add_func ("/libtracker-sparql/tracker-resource/get_set_simple",
+ test_resource_get_set_simple);
+ g_test_add_func ("/libtracker-sparql/tracker-resource/get_set_gvalue",
+ test_resource_get_set_gvalue);
+ g_test_add_func ("/libtracker-sparql/tracker-resource/get_set_many",
+ test_resource_get_set_many);
+
+ return g_test_run ();
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]