[tracker/wip/carlosg/sparql1.1: 109/113] tests: Add tests for DESCRIBE



commit c92d90816eca8388a6e8534e849c9c9a95d723cf
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Jul 21 12:17:18 2019 +0200

    tests: Add tests for DESCRIBE

 tests/libtracker-data/describe/describe-limit.out  | 11 ++++++++
 tests/libtracker-data/describe/describe-limit.rq   |  1 +
 .../libtracker-data/describe/describe-multiple.out | 22 ++++++++++++++++
 .../libtracker-data/describe/describe-multiple.rq  |  1 +
 .../describe/describe-non-existent.out             |  0
 .../describe/describe-non-existent.rq              |  1 +
 .../libtracker-data/describe/describe-pattern.out  |  6 +++++
 tests/libtracker-data/describe/describe-pattern.rq |  1 +
 tests/libtracker-data/describe/describe-single.out |  5 ++++
 tests/libtracker-data/describe/describe-single.rq  |  1 +
 tests/libtracker-data/tracker-sparql-test.c        | 29 +++++++++++++++++++---
 11 files changed, 75 insertions(+), 3 deletions(-)
---
diff --git a/tests/libtracker-data/describe/describe-limit.out 
b/tests/libtracker-data/describe/describe-limit.out
new file mode 100644
index 000000000..e983c2b48
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-limit.out
@@ -0,0 +1,11 @@
+"a"    "http://example/number"; "42"
+"a"    "http://example/date";   "2000-01-01T00:00:01Z"
+"a"    "http://example/name";   "nameA"
+"a"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"a"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
+"b"    "http://example/relation";       "z"
+"b"    "http://example/number"; "73"
+"b"    "http://example/date";   "2001-01-01T00:00:01Z"
+"b"    "http://example/name";   "nameB"
+"b"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"b"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
diff --git a/tests/libtracker-data/describe/describe-limit.rq 
b/tests/libtracker-data/describe/describe-limit.rq
new file mode 100644
index 000000000..f09f243e1
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-limit.rq
@@ -0,0 +1 @@
+describe ?u { ?u a example:A } limit 2 order by ?u
diff --git a/tests/libtracker-data/describe/describe-multiple.out 
b/tests/libtracker-data/describe/describe-multiple.out
new file mode 100644
index 000000000..034058637
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-multiple.out
@@ -0,0 +1,22 @@
+"b"    "http://example/relation";       "z"
+"b"    "http://example/number"; "73"
+"b"    "http://example/date";   "2001-01-01T00:00:01Z"
+"b"    "http://example/name";   "nameB"
+"b"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"b"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
+"z"    "http://example/title";  "titleZ"
+"z"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"z"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/B";
+"c"    "http://example/relation";       "x"
+"c"    "http://example/number"; "113"
+"c"    "http://example/name";   "nameC"
+"c"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"c"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
+"x"    "http://example/title";  "titleX"
+"x"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"x"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/B";
+"d"    "http://example/relation";       "z"
+"d"    "http://example/date";   "2002-01-01T00:00:01Z"
+"d"    "http://example/name";   "nameD"
+"d"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"d"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
diff --git a/tests/libtracker-data/describe/describe-multiple.rq 
b/tests/libtracker-data/describe/describe-multiple.rq
new file mode 100644
index 000000000..3e67f4e16
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-multiple.rq
@@ -0,0 +1 @@
+DESCRIBE ?u ?r { ?u example:relation ?r }
diff --git a/tests/libtracker-data/describe/describe-non-existent.out 
b/tests/libtracker-data/describe/describe-non-existent.out
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/libtracker-data/describe/describe-non-existent.rq 
b/tests/libtracker-data/describe/describe-non-existent.rq
new file mode 100644
index 000000000..e80fd6229
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-non-existent.rq
@@ -0,0 +1 @@
+DESCRIBE <non-existent>
diff --git a/tests/libtracker-data/describe/describe-pattern.out 
b/tests/libtracker-data/describe/describe-pattern.out
new file mode 100644
index 000000000..e512b1d8c
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-pattern.out
@@ -0,0 +1,6 @@
+"b"    "http://example/relation";       "z"
+"b"    "http://example/number"; "73"
+"b"    "http://example/date";   "2001-01-01T00:00:01Z"
+"b"    "http://example/name";   "nameB"
+"b"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"b"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
diff --git a/tests/libtracker-data/describe/describe-pattern.rq 
b/tests/libtracker-data/describe/describe-pattern.rq
new file mode 100644
index 000000000..061b49c7a
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-pattern.rq
@@ -0,0 +1 @@
+DESCRIBE ?u { ?u example:name 'nameB' }
diff --git a/tests/libtracker-data/describe/describe-single.out 
b/tests/libtracker-data/describe/describe-single.out
new file mode 100644
index 000000000..0bb548ba0
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-single.out
@@ -0,0 +1,5 @@
+"a"    "http://example/number"; "42"
+"a"    "http://example/date";   "2000-01-01T00:00:01Z"
+"a"    "http://example/name";   "nameA"
+"a"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       
"http://www.w3.org/2000/01/rdf-schema#Resource";
+"a"    "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";       "http://example/A";
diff --git a/tests/libtracker-data/describe/describe-single.rq 
b/tests/libtracker-data/describe/describe-single.rq
new file mode 100644
index 000000000..bc781f9a6
--- /dev/null
+++ b/tests/libtracker-data/describe/describe-single.rq
@@ -0,0 +1 @@
+DESCRIBE <a>
diff --git a/tests/libtracker-data/tracker-sparql-test.c b/tests/libtracker-data/tracker-sparql-test.c
index 1b0ff46de..62952b7f5 100644
--- a/tests/libtracker-data/tracker-sparql-test.c
+++ b/tests/libtracker-data/tracker-sparql-test.c
@@ -87,6 +87,11 @@ const TestInfo tests[] = {
        { "datetime/functions-localtime-1", "datetime/data-1", FALSE },
        { "datetime/functions-timezone-1", "datetime/data-2", FALSE },
        { "datetime/functions-timezone-2", "datetime/data-2", FALSE },
+       { "describe/describe-single", "describe/data", FALSE },
+       { "describe/describe-non-existent", "describe/data", FALSE },
+       { "describe/describe-pattern", "describe/data", FALSE },
+       { "describe/describe-limit", "describe/data", FALSE },
+       { "describe/describe-multiple", "describe/data", FALSE },
        { "expr-ops/query-ge-1", "expr-ops/data", FALSE },
        { "expr-ops/query-le-1", "expr-ops/data", FALSE },
        { "expr-ops/query-minus-1", "expr-ops/data", FALSE },
@@ -263,21 +268,39 @@ check_result (TrackerDBCursor *cursor,
                gint col;
 
                while (tracker_db_cursor_iter_next (cursor, NULL, &error)) {
+                       GString *row_str = g_string_new (NULL);
+
                        for (col = 0; col < tracker_db_cursor_get_n_columns (cursor); col++) {
                                const gchar *str;
 
                                if (col > 0) {
-                                       g_string_append (test_results, "\t");
+                                       g_string_append (row_str, "\t");
                                }
 
                                str = tracker_db_cursor_get_string (cursor, col, NULL);
+
+                               /* Hack to avoid misc properties that might tamper with
+                                * test reproduceability in DESCRIBE and other unrestricted
+                                * queries.
+                                */
+                               if (g_strcmp0 (str, TRACKER_PREFIX_TRACKER "modified") == 0 ||
+                                   g_strcmp0 (str, TRACKER_PREFIX_TRACKER "added") == 0) {
+                                       g_string_free (row_str, TRUE);
+                                       row_str = NULL;
+                                       break;
+                               }
+
                                if (str != NULL) {
                                        /* bound variable */
-                                       g_string_append_printf (test_results, "\"%s\"", str);
+                                       g_string_append_printf (row_str, "\"%s\"", str);
                                }
                        }
 
-                       g_string_append (test_results, "\n");
+                       if (row_str) {
+                               g_string_append (test_results, row_str->str);
+                               g_string_free (row_str, TRUE);
+                               g_string_append (test_results, "\n");
+                       }
                }
        } else if (test_info->expect_query_error) {
                g_assert (error != NULL && error->domain == TRACKER_SPARQL_ERROR);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]