diff options
author | Sam Thursfield <sam@afuera.me.uk> | 2022-03-13 15:39:58 +0000 |
---|---|---|
committer | Sam Thursfield <sam@afuera.me.uk> | 2022-03-13 15:39:58 +0000 |
commit | 32bd56cc4a5d7d700a300b3231abe551e18252e5 (patch) | |
tree | 6eb628c0fe8040269a96c443fdbf72ddd23528d6 | |
parent | 9e598b0c06ef31c7563fad4828391833db35f1af (diff) | |
parent | eaa2d2edd11eec098e509a44644599966afef497 (diff) | |
download | tracker-32bd56cc4a5d7d700a300b3231abe551e18252e5.tar.gz |
Merge branch 'wip/carlosg/more-tests' into 'master'
Add more tests
See merge request GNOME/tracker!495
105 files changed, 774 insertions, 12 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 31fd39fea..8c7f91ed6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -251,6 +251,8 @@ build-fedora@aarch64: needs: - build-fedora-container@aarch64 allow_failure: true + variables: + NO_DOCS: "true" <<: *build build-ubuntu-rolling@x86_64: @@ -292,7 +294,7 @@ build-alpine-latest@x86_64: --exclude=../utils --exclude=../examples --exclude=../docs/reference --exclude='\.\./build/.*\.[ch]$' --exclude='.*/tests/.*\.[ch]$' --exclude='\.\./src/.*\.vala$' - --json --output=../coverage-${CI_JOB_NAME}.json 2>/dev/null + --json --print-summary --output=../coverage-${CI_JOB_NAME}.json 2>/dev/null - popd - | echo "Distribution: " diff --git a/tests/functional-tests/portal.py b/tests/functional-tests/portal.py index 373bf8d5b..057ea3f10 100644 --- a/tests/functional-tests/portal.py +++ b/tests/functional-tests/portal.py @@ -90,6 +90,7 @@ class TestPortal(fixtures.TrackerPortalTest): self.fail("Timeout, the signal never came after %i seconds!" % configuration.DEFAULT_TIMEOUT) def __notifier_event_cb(self, notifier, service, graph, events): + self.notifier_events += events if self.timeout_id != 0: GLib.source_remove(self.timeout_id) self.timeout_id = 0 @@ -98,6 +99,7 @@ class TestPortal(fixtures.TrackerPortalTest): def test_05_local_connection_notifier(self): self.start_service('org.freedesktop.PortalTest') + self.notifier_events = [] conn = self.create_local_connection() notifier = conn.create_notifier(); notifier.connect('events', self.__notifier_event_cb) @@ -106,20 +108,27 @@ class TestPortal(fixtures.TrackerPortalTest): 'org.freedesktop.PortalTest', None, 'tracker:Allowed') + signalId2 = notifier.signal_subscribe( + self.bus, + 'org.freedesktop.PortalTest', + None, + 'tracker:Disallowed') self.update( 'org.freedesktop.PortalTest', + 'INSERT { GRAPH tracker:Disallowed { <a> a nmm:MusicPiece } }') + self.update( + 'org.freedesktop.PortalTest', 'INSERT { GRAPH tracker:Allowed { <b> a nmm:MusicPiece } }') self.__wait_for_notifier() notifier.signal_unsubscribe(signalId); - conn.close() + notifier.signal_unsubscribe(signalId2); - res = self.query( - 'org.freedesktop.PortalTest', - 'select ?a { ?a a nmm:MusicPiece }') - self.assertEqual(len(res), 1) - self.assertEqual(res[0][0], 'b') + # Only one event is expected, from the allowed graph + self.assertEqual(len(self.notifier_events), 1); + self.assertEqual(self.notifier_events[0].get_urn(), 'b') + conn.close() def test_06_id_access(self): self.start_service('org.freedesktop.PortalTest') @@ -141,5 +150,308 @@ class TestPortal(fixtures.TrackerPortalTest): self.assertNotEqual(res[0][0], '0') self.assertEqual(res[0][1], 'b') + def test_07_id_access_disallowed(self): + self.start_service('org.freedesktop.PortalTest') + + # Insert resource into disallowed graph, ensure it is not visible + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Disallowed;' + + 'INSERT { GRAPH tracker:Disallowed { <b> a nfo:FileDataObject } }') + res = self.query( + 'org.freedesktop.PortalTest', + 'select tracker:id(<b>) tracker:uri(tracker:id(<b>)) { }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], '0') + self.assertIsNone(res[0][1]) + + # Insert same resource into allowed graph, ensure it is visible + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Allowed;' + + 'INSERT { GRAPH tracker:Allowed { <b> a nfo:FileDataObject } }') + res = self.query( + 'org.freedesktop.PortalTest', + 'select tracker:id(<b>) tracker:uri(tracker:id(<b>)) { }') + self.assertEqual(len(res), 1) + self.assertNotEqual(res[0][0], '0') + self.assertEqual(res[0][1], 'b') + resourceId = res[0][0]; + + # Delete resource from allowed graph, ensure it is not visible again + self.update( + 'org.freedesktop.PortalTest', + 'DELETE { GRAPH tracker:Allowed { <b> a rdfs:Resource } }') + res = self.query( + 'org.freedesktop.PortalTest', + 'select tracker:id(<b>) tracker:uri(tracker:id(<b>)) tracker:uri(' + str(resourceId) + ') { }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], '0') + self.assertIsNone(res[0][1]) + self.assertIsNone(res[0][2]) + + def test_08_local_connection_service(self): + self.start_service('org.freedesktop.PortalTest') + + self.notifier_events = [] + conn = self.create_local_connection() + self.update( + 'org.freedesktop.PortalTest', + 'INSERT { GRAPH tracker:Disallowed { <a> a nmm:MusicPiece } }') + self.update( + 'org.freedesktop.PortalTest', + 'INSERT { GRAPH tracker:Allowed { <b> a nmm:MusicPiece } }') + + # Only one resource is expected, from the allowed graph + cursor = conn.query('select ?u { SERVICE <dbus:org.freedesktop.PortalTest> { ?u a nmm:MusicPiece } }') + self.assertTrue(cursor.next()) + self.assertEqual(cursor.get_string(0)[0], 'b') + self.assertFalse(cursor.next()) + cursor.close() + conn.close() + + # Test that all ways to specify a graph in the query hit a dead end + def test_09_query_graphs(self): + self.start_service('org.freedesktop.PortalTest') + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Disallowed;' + + 'INSERT { GRAPH tracker:Disallowed { <a> a nfo:FileDataObject } }') + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u from tracker:Disallowed { ?u a rdfs:Resource }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { graph tracker:Disallowed { ?u a rdfs:Resource } }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'constraint graph tracker:Disallowed select ?u { ?u a rdfs:Resource }') + self.assertEqual(len(res), 0) + + # Test that it is not possible to break through into other services + def test_10_query_services(self): + self.start_service('org.freedesktop.PortalTest') + self.start_service('org.freedesktop.InaccessibleService') + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Allowed;' + + 'INSERT { GRAPH tracker:Allowed { <a> a nfo:FileDataObject } }') + self.update( + 'org.freedesktop.InaccessibleService', + 'CREATE GRAPH tracker:Allowed;' + + 'INSERT { GRAPH tracker:Allowed { <b> a nfo:FileDataObject } }') + + try: + exception = None + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { service <dbus:org.freedesktop.InaccessibleService> { ?u a rdfs:Resource } }') + except Exception as e: + exception = e; + finally: + self.assertIsNotNone(exception) + + try: + exception = None + res = self.query( + 'org.freedesktop.InaccessibleService', + 'select ?u { ?u a rdfs:Resource }') + except Exception as e: + exception = e; + finally: + self.assertIsNotNone(exception) + + # Test that property paths resolve correctly across allowed + # and disallowed graphs + def test_11_query_property_paths(self): + self.start_service('org.freedesktop.PortalTest') + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Disallowed;' + + 'INSERT { GRAPH tracker:Disallowed { ' + + ' <a> a nfo:FileDataObject ; nfo:fileName "A" ; nie:interpretedAs <b1> .' + + ' <b1> a nmm:MusicPiece ; nie:isStoredAs <a> ; nie:title "title2" } }') + + # Test property paths with allowed/disallowed graphs in both ends + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?t { ?u nie:interpretedAs/nie:title ?t }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?fn { ?u nie:isStoredAs/nfo:fileName ?fn }') + self.assertEqual(len(res), 0) + + # Insert a resource in the allowed graph + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Allowed;' + + 'INSERT { GRAPH tracker:Allowed { ' + + ' <a> a nfo:FileDataObject ; nfo:fileName "A" ; nie:interpretedAs <a1> .' + + ' <a1> a nmm:MusicPiece ; nie:isStoredAs <a> ; nie:title "title1" } }') + + # Try the queries again + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?t { ?u nie:interpretedAs/nie:title ?t }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], 'a') + self.assertEqual(res[0][1], 'title1') + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?fn { ?u nie:isStoredAs/nfo:fileName ?fn }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], 'a1') + self.assertEqual(res[0][1], 'A') + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?fn { GRAPH tracker:Disallowed { ?u nie:isStoredAs/nfo:fileName ?fn } }') + self.assertEqual(len(res), 0) + + # Delete the allowed resource again + self.update( + 'org.freedesktop.PortalTest', + 'DROP GRAPH tracker:Allowed') + + # Query results should revert to the original values + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?t { ?u nie:interpretedAs/nie:title ?t }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u ?fn { ?u nie:isStoredAs/nfo:fileName ?fn }') + self.assertEqual(len(res), 0) + + # Test that property paths resolve correctly across allowed + # and disallowed graphs + def test_12_query_fts(self): + self.start_service('org.freedesktop.PortalTest') + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Disallowed;' + + 'INSERT { GRAPH tracker:Disallowed { ' + + ' <a> a nfo:FileDataObject ; nie:interpretedAs <b1> .' + + ' <b1> a nmm:MusicPiece ; nie:isStoredAs <a> ; nie:title "apples and oranges" } }') + + # Query for both keywords, they are expected to be non-visible + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { ?u fts:match "apples" }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { ?u fts:match "oranges" }') + self.assertEqual(len(res), 0) + + # Insert a resource in the allowed graph + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Allowed;' + + 'INSERT { GRAPH tracker:Allowed { ' + + ' <a> a nfo:FileDataObject ; nfo:fileName "file name" ; nie:interpretedAs <a1> .' + + ' <a1> a nmm:MusicPiece ; nie:isStoredAs <a> ; nie:title "apples" } }') + + # Try the queries again, we should get a match from the allowed graph for 'apples' + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { ?u fts:match "apples" }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], 'a1') + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { ?u fts:match "oranges" }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { GRAPH tracker:Disallowed { ?u fts:match "oranges" } }') + self.assertEqual(len(res), 0) + + # Delete the allowed resource again + self.update( + 'org.freedesktop.PortalTest', + 'DROP GRAPH tracker:Allowed') + + # The query results should revert to the original values + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { ?u fts:match "apples" }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?u { ?u fts:match "oranges" }') + self.assertEqual(len(res), 0) + + # Test that property paths resolve correctly across allowed + # and disallowed graphs + def test_13_query_unrestricted_triples(self): + self.start_service('org.freedesktop.PortalTest') + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Disallowed;' + + 'INSERT { GRAPH tracker:Disallowed { ' + + ' <a> a nfo:FileDataObject ; nfo:fileName "A" . } }') + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?s { ?s ?p "A" }') + self.assertEqual(len(res), 0) + + res = self.query( + 'org.freedesktop.PortalTest', + 'ASK { <a> ?p "A" }') + self.assertEqual(len(res), 1) + self.assertNotEqual(res[0][0], 'true') + + # Insert a resource in the allowed graph + self.update( + 'org.freedesktop.PortalTest', + 'CREATE GRAPH tracker:Allowed;' + + 'INSERT { GRAPH tracker:Allowed { ' + + ' <a> a nfo:FileDataObject ; nfo:fileName "A" . } }') + + # Try the queries again + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?s { ?s ?p "A" }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], 'a') + + res = self.query( + 'org.freedesktop.PortalTest', + 'ASK { <a> ?p "A" }') + self.assertEqual(len(res), 1) + self.assertEqual(res[0][0], 'true') + + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?s { GRAPH tracker:Disallowed { ?s ?p "A" } }') + self.assertEqual(len(res), 0) + + # Delete the allowed resource again + self.update( + 'org.freedesktop.PortalTest', + 'DROP GRAPH tracker:Allowed') + + # The query results should revert to the original values + res = self.query( + 'org.freedesktop.PortalTest', + 'select ?s { ?s ?p "A" }') + self.assertEqual(len(res), 0) + + if __name__ == '__main__': fixtures.tracker_test_main() diff --git a/tests/libtracker-data/aggregates/aggregate-count-1.out b/tests/libtracker-data/aggregates/aggregate-count-1.out new file mode 100644 index 000000000..18d17df02 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-count-1.out @@ -0,0 +1 @@ +"3" diff --git a/tests/libtracker-data/aggregates/aggregate-count-1.rq b/tests/libtracker-data/aggregates/aggregate-count-1.rq new file mode 100644 index 000000000..dbdb24acf --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-count-1.rq @@ -0,0 +1,3 @@ +PREFIX : <http://example/> + +SELECT COUNT(?u) { [ :i2 ?u ] } diff --git a/tests/libtracker-data/aggregates/aggregate-count-2.out b/tests/libtracker-data/aggregates/aggregate-count-2.out new file mode 100644 index 000000000..18d17df02 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-count-2.out @@ -0,0 +1 @@ +"3" diff --git a/tests/libtracker-data/aggregates/aggregate-count-2.rq b/tests/libtracker-data/aggregates/aggregate-count-2.rq new file mode 100644 index 000000000..dd440145d --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-count-2.rq @@ -0,0 +1,3 @@ +PREFIX : <http://example/> + +SELECT COUNT(*) { [ :i2 ?u ] } diff --git a/tests/libtracker-data/aggregates/aggregate-count-3.out b/tests/libtracker-data/aggregates/aggregate-count-3.out new file mode 100644 index 000000000..1026c253e --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-count-3.out @@ -0,0 +1 @@ +"2" diff --git a/tests/libtracker-data/aggregates/aggregate-count-3.rq b/tests/libtracker-data/aggregates/aggregate-count-3.rq new file mode 100644 index 000000000..73a072b8a --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-count-3.rq @@ -0,0 +1,3 @@ +PREFIX : <http://example/> + +SELECT COUNT(DISTINCT ?u) { [ :i2 ?u ] } diff --git a/tests/libtracker-data/aggregates/aggregate-group-3.out b/tests/libtracker-data/aggregates/aggregate-group-3.out new file mode 100644 index 000000000..3b41f134b --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-group-3.out @@ -0,0 +1,2 @@ +"http://example/x" "2" "8" "string t|string y" +"http://example/z" "1" "13" "string u" diff --git a/tests/libtracker-data/aggregates/aggregate-group-3.rq b/tests/libtracker-data/aggregates/aggregate-group-3.rq new file mode 100644 index 000000000..440dceaf9 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-group-3.rq @@ -0,0 +1,9 @@ +PREFIX : <http://example/> + +SELECT ?a COUNT(DISTINCT ?b) SUM(?ib) GROUP_CONCAT(?sb; SEPARATOR="|") +{ ?a a :A ; + :b ?b . + ?b :ib ?ib . + ?b :sb ?sb . + FILTER (?ib>2) } +GROUP BY ?a diff --git a/tests/libtracker-data/aggregates/aggregate-group-having-1.out b/tests/libtracker-data/aggregates/aggregate-group-having-1.out new file mode 100644 index 000000000..e66f8d307 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-group-having-1.out @@ -0,0 +1 @@ +"http://example/x" "2" "8" "string t|string y" diff --git a/tests/libtracker-data/aggregates/aggregate-group-having-1.rq b/tests/libtracker-data/aggregates/aggregate-group-having-1.rq new file mode 100644 index 000000000..c8dc7bef8 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-group-having-1.rq @@ -0,0 +1,10 @@ +PREFIX : <http://example/> + +SELECT ?a COUNT(DISTINCT ?b) SUM(?ib) GROUP_CONCAT(?sb, "|") +{ ?a a :A ; + :b ?b . + ?b :ib ?ib . + ?b :sb ?sb . + FILTER (?ib>2) } +GROUP BY ?a +HAVING (SUM(?ib)<10) diff --git a/tests/libtracker-data/aggregates/aggregate-sample-1.out b/tests/libtracker-data/aggregates/aggregate-sample-1.out new file mode 100644 index 000000000..5378d4f58 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-sample-1.out @@ -0,0 +1,2 @@ +"http://example/x" "8" +"http://example/z" "8" diff --git a/tests/libtracker-data/aggregates/aggregate-sample-1.rq b/tests/libtracker-data/aggregates/aggregate-sample-1.rq new file mode 100644 index 000000000..08d142806 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-sample-1.rq @@ -0,0 +1,8 @@ +PREFIX : <http://example/> + +# All samples have the same length +SELECT ?a STRLEN(SAMPLE(?s)) +{ ?a :b ?b . + ?b :sb ?s . } +GROUP BY ?a +ORDER BY ?a diff --git a/tests/libtracker-data/aggregates/aggregate-sample-2.out b/tests/libtracker-data/aggregates/aggregate-sample-2.out new file mode 100644 index 000000000..5378d4f58 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-sample-2.out @@ -0,0 +1,2 @@ +"http://example/x" "8" +"http://example/z" "8" diff --git a/tests/libtracker-data/aggregates/aggregate-sample-2.rq b/tests/libtracker-data/aggregates/aggregate-sample-2.rq new file mode 100644 index 000000000..c95554179 --- /dev/null +++ b/tests/libtracker-data/aggregates/aggregate-sample-2.rq @@ -0,0 +1,8 @@ +PREFIX : <http://example/> + +# All samples have the same length +SELECT ?a STRLEN(SAMPLE(DISTINCT ?s)) +{ ?a :b ?b . + ?b :sb ?s . } +GROUP BY ?a +ORDER BY ?a diff --git a/tests/libtracker-data/functions/functions-builtin-abs-1.out b/tests/libtracker-data/functions/functions-builtin-abs-1.out new file mode 100644 index 000000000..d691312ad --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-abs-1.out @@ -0,0 +1 @@ +"4.0" "4.0" "4.999999999" "4.999999999" diff --git a/tests/libtracker-data/functions/functions-builtin-abs-1.rq b/tests/libtracker-data/functions/functions-builtin-abs-1.rq new file mode 100644 index 000000000..bebb448c2 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-abs-1.rq @@ -0,0 +1 @@ +SELECT (ABS(4.0) AS ?a) (ABS(-4.0) AS ?b) (ABS(4.999999999) AS ?c) (ABS(4.999999999) AS ?c) { FILTER (ABS (-40) > ABS(2)) } diff --git a/tests/libtracker-data/functions/functions-builtin-bnode-1.out b/tests/libtracker-data/functions/functions-builtin-bnode-1.out new file mode 100644 index 000000000..826861551 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-bnode-1.out @@ -0,0 +1 @@ +"true" diff --git a/tests/libtracker-data/functions/functions-builtin-bnode-1.rq b/tests/libtracker-data/functions/functions-builtin-bnode-1.rq new file mode 100644 index 000000000..13cc98366 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-bnode-1.rq @@ -0,0 +1,11 @@ +ASK +{ + BIND (BNODE () AS ?a) . + BIND (BNODE () AS ?b) . + # Check prefix + FILTER (SUBSTR(STR(?a), 0, 11) = 'urn:bnode:') . + FILTER (SUBSTR(STR(?a), 0, 11) = SUBSTR(STR(?b), 0, 11)) . + # Check UUIDv4 version char, this is always 4 + FILTER (SUBSTR(STR(?a), 25, 1) = '4') . + FILTER (SUBSTR(STR(?a), 25, 1) = SUBSTR(STR(?b), 25, 1)) . +} diff --git a/tests/libtracker-data/functions/functions-builtin-bnode-2.out b/tests/libtracker-data/functions/functions-builtin-bnode-2.out new file mode 100644 index 000000000..826861551 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-bnode-2.out @@ -0,0 +1 @@ +"true" diff --git a/tests/libtracker-data/functions/functions-builtin-bnode-2.rq b/tests/libtracker-data/functions/functions-builtin-bnode-2.rq new file mode 100644 index 000000000..81afe0a00 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-bnode-2.rq @@ -0,0 +1,11 @@ +ASK +{ + BIND (BNODE ("a") AS ?a) . + BIND (BNODE ("b") AS ?b) . + # Check prefix + FILTER (SUBSTR(STR(?a), 0, 11) = 'urn:bnode:') . + FILTER (SUBSTR(STR(?a), 0, 11) = SUBSTR(STR(?b), 0, 11)) . + # Check UUIDv4 version char, this is always 4 + FILTER (SUBSTR(STR(?a), 25, 1) = '4') . + FILTER (SUBSTR(STR(?a), 25, 1) = SUBSTR(STR(?b), 25, 1)) . +} diff --git a/tests/libtracker-data/functions/functions-builtin-contains-1.out b/tests/libtracker-data/functions/functions-builtin-contains-1.out new file mode 100644 index 000000000..6cd3c6c29 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-contains-1.out @@ -0,0 +1 @@ +"true" "false" "false" diff --git a/tests/libtracker-data/functions/functions-builtin-contains-1.rq b/tests/libtracker-data/functions/functions-builtin-contains-1.rq new file mode 100644 index 000000000..e88afc65c --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-contains-1.rq @@ -0,0 +1 @@ +SELECT (CONTAINS('abcd', 'b') AS ?a) (CONTAINS('abcd', 'z') AS ?b) (CONTAINS('\u2323', '\u0023') AS ?a) {} diff --git a/tests/libtracker-data/functions/functions-builtin-day-1.out b/tests/libtracker-data/functions/functions-builtin-day-1.out new file mode 100644 index 000000000..4f3685941 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-day-1.out @@ -0,0 +1,5 @@ +"10" +"01" +"31" +"02" +"31" diff --git a/tests/libtracker-data/functions/functions-builtin-day-1.rq b/tests/libtracker-data/functions/functions-builtin-day-1.rq new file mode 100644 index 000000000..57647f94a --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-day-1.rq @@ -0,0 +1,9 @@ +SELECT DAY(?d) { + VALUES ?d { + '2022-03-10T12:23:34Z'^^xsd:dateTime + '2022-01-01T01:00:00-0600'^^xsd:dateTime + '2022-12-31T23:00:00+0600'^^xsd:dateTime + '0001-01-02'^^xsd:date + '9998-12-31'^^xsd:date + } +} diff --git a/tests/libtracker-data/functions/functions-builtin-encode-for-uri-1.out b/tests/libtracker-data/functions/functions-builtin-encode-for-uri-1.out new file mode 100644 index 000000000..a6143bb05 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-encode-for-uri-1.out @@ -0,0 +1 @@ +"a%2Fb%23c%F0%9F%98%83" "abc123" diff --git a/tests/libtracker-data/functions/functions-builtin-encode-for-uri-1.rq b/tests/libtracker-data/functions/functions-builtin-encode-for-uri-1.rq new file mode 100644 index 000000000..ff74b4a57 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-encode-for-uri-1.rq @@ -0,0 +1 @@ +SELECT ENCODE_FOR_URI('a/b#cđŸ˜ƒ') ENCODE_FOR_URI('abc123') {} diff --git a/tests/libtracker-data/functions/functions-builtin-hours-1.out b/tests/libtracker-data/functions/functions-builtin-hours-1.out new file mode 100644 index 000000000..a05ff54dd --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-hours-1.out @@ -0,0 +1,5 @@ +"12" +"1" +"23" +"0" +"0" diff --git a/tests/libtracker-data/functions/functions-builtin-hours-1.rq b/tests/libtracker-data/functions/functions-builtin-hours-1.rq new file mode 100644 index 000000000..5e706d146 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-hours-1.rq @@ -0,0 +1,9 @@ +SELECT HOURS(?d) { + VALUES ?d { + '2022-03-10T12:23:34Z'^^xsd:dateTime + '2022-01-01T01:00:00-0600'^^xsd:dateTime + '2022-12-31T23:00:00+0600'^^xsd:dateTime + '0001-01-02'^^xsd:date + '9998-12-31'^^xsd:date + } +} diff --git a/tests/libtracker-data/functions/functions-builtin-if-1.out b/tests/libtracker-data/functions/functions-builtin-if-1.out new file mode 100644 index 000000000..17809c402 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-if-1.out @@ -0,0 +1 @@ +"istrue" "isfalse" diff --git a/tests/libtracker-data/functions/functions-builtin-if-1.rq b/tests/libtracker-data/functions/functions-builtin-if-1.rq new file mode 100644 index 000000000..fc87e24a7 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-if-1.rq @@ -0,0 +1 @@ +SELECT (IF (true, 'istrue', 'isfalse') AS ?b) (IF (false, 'istrue', 'isfalse') AS ?b) {}
\ No newline at end of file diff --git a/tests/libtracker-data/functions/functions-builtin-minutes-1.out b/tests/libtracker-data/functions/functions-builtin-minutes-1.out new file mode 100644 index 000000000..a7e4a23f4 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-minutes-1.out @@ -0,0 +1,5 @@ +"23" +"0" +"0" +"0" +"0" diff --git a/tests/libtracker-data/functions/functions-builtin-minutes-1.rq b/tests/libtracker-data/functions/functions-builtin-minutes-1.rq new file mode 100644 index 000000000..32a0c306b --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-minutes-1.rq @@ -0,0 +1,9 @@ +SELECT MINUTES(?d) { + VALUES ?d { + '2022-03-10T12:23:34Z'^^xsd:dateTime + '2022-01-01T01:00:00-0600'^^xsd:dateTime + '2022-12-31T23:00:00+0600'^^xsd:dateTime + '0001-01-02'^^xsd:date + '9998-12-31'^^xsd:date + } +} diff --git a/tests/libtracker-data/functions/functions-builtin-month-1.out b/tests/libtracker-data/functions/functions-builtin-month-1.out new file mode 100644 index 000000000..a9942add6 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-month-1.out @@ -0,0 +1,5 @@ +"03" +"01" +"12" +"01" +"12" diff --git a/tests/libtracker-data/functions/functions-builtin-month-1.rq b/tests/libtracker-data/functions/functions-builtin-month-1.rq new file mode 100644 index 000000000..70b8aef63 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-month-1.rq @@ -0,0 +1,9 @@ +SELECT MONTH(?d) { + VALUES ?d { + '2022-03-10T12:23:34Z'^^xsd:dateTime + '2022-01-01T01:00:00-0600'^^xsd:dateTime + '2022-12-31T23:00:00+0600'^^xsd:dateTime + '0001-01-02'^^xsd:date + '9998-12-31'^^xsd:date + } +} diff --git a/tests/libtracker-data/functions/functions-builtin-now-1.out b/tests/libtracker-data/functions/functions-builtin-now-1.out new file mode 100644 index 000000000..3bf44eff7 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-now-1.out @@ -0,0 +1 @@ +"yay" diff --git a/tests/libtracker-data/functions/functions-builtin-now-1.rq b/tests/libtracker-data/functions/functions-builtin-now-1.rq new file mode 100644 index 000000000..7a7865210 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-now-1.rq @@ -0,0 +1 @@ +SELECT IF(YEAR(NOW()) >= 2022, "yay", "fix your clock") {} diff --git a/tests/libtracker-data/functions/functions-builtin-rand-1.out b/tests/libtracker-data/functions/functions-builtin-rand-1.out new file mode 100644 index 000000000..826861551 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-rand-1.out @@ -0,0 +1 @@ +"true" diff --git a/tests/libtracker-data/functions/functions-builtin-rand-1.rq b/tests/libtracker-data/functions/functions-builtin-rand-1.rq new file mode 100644 index 000000000..f4b92dd86 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-rand-1.rq @@ -0,0 +1,7 @@ +ASK { + BIND (RAND() AS ?r) . + # Not much we can check around a random + # number, so check it stays within the + # expected limits. + FILTER (?r >= 0 && ?r <= 1) . +} diff --git a/tests/libtracker-data/functions/functions-builtin-replace-1.out b/tests/libtracker-data/functions/functions-builtin-replace-1.out new file mode 100644 index 000000000..6b948ef08 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-1.out @@ -0,0 +1 @@ +"adc" "abc" "z" "zbc" diff --git a/tests/libtracker-data/functions/functions-builtin-replace-1.rq b/tests/libtracker-data/functions/functions-builtin-replace-1.rq new file mode 100644 index 000000000..b0d4932d7 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-1.rq @@ -0,0 +1 @@ +SELECT (REPLACE('abc', 'b', 'd') AS ?a) (REPLACE('abc', 'd', 'z') AS ?b) (REPLACE('abc', 'abc' , 'z') AS ?c) (REPLACE ('abc', 'a', 'z') AS ?d) {} diff --git a/tests/libtracker-data/functions/functions-builtin-replace-2.out b/tests/libtracker-data/functions/functions-builtin-replace-2.out new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-2.out diff --git a/tests/libtracker-data/functions/functions-builtin-replace-2.rq b/tests/libtracker-data/functions/functions-builtin-replace-2.rq new file mode 100644 index 000000000..5e1758804 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-2.rq @@ -0,0 +1,2 @@ +# Expected to fail, empty regular expression +SELECT (REPLACE('abc', '', 'd') AS ?a) {} diff --git a/tests/libtracker-data/functions/functions-builtin-replace-3.out b/tests/libtracker-data/functions/functions-builtin-replace-3.out new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-3.out diff --git a/tests/libtracker-data/functions/functions-builtin-replace-3.rq b/tests/libtracker-data/functions/functions-builtin-replace-3.rq new file mode 100644 index 000000000..1664b44f7 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-3.rq @@ -0,0 +1,2 @@ +# Expected to fail, regular expression matches empty string +SELECT (REPLACE('abc', '.*', 'd') AS ?a) {} diff --git a/tests/libtracker-data/functions/functions-builtin-replace-4.out b/tests/libtracker-data/functions/functions-builtin-replace-4.out new file mode 100644 index 000000000..6b948ef08 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-4.out @@ -0,0 +1 @@ +"adc" "abc" "z" "zbc" diff --git a/tests/libtracker-data/functions/functions-builtin-replace-4.rq b/tests/libtracker-data/functions/functions-builtin-replace-4.rq new file mode 100644 index 000000000..064366947 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-4.rq @@ -0,0 +1 @@ +SELECT (REPLACE('abc', 'B', 'd', 'i') AS ?a) (REPLACE('abc', 'D', 'z', 'i') AS ?b) (REPLACE('abc', 'ABC' , 'z', 'i') AS ?c) (REPLACE ('abc', 'A', 'z', 'smix') AS ?d) {} diff --git a/tests/libtracker-data/functions/functions-builtin-replace-5.out b/tests/libtracker-data/functions/functions-builtin-replace-5.out new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-5.out diff --git a/tests/libtracker-data/functions/functions-builtin-replace-5.rq b/tests/libtracker-data/functions/functions-builtin-replace-5.rq new file mode 100644 index 000000000..112eaf47c --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-replace-5.rq @@ -0,0 +1 @@ +SELECT (REPLACE ('abc', 'A', 'z', 'this is not a regex flag') AS ?d) {} diff --git a/tests/libtracker-data/functions/functions-builtin-round-1.out b/tests/libtracker-data/functions/functions-builtin-round-1.out new file mode 100644 index 000000000..a8bb9c200 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-round-1.out @@ -0,0 +1 @@ +"4.0" "5.0" "5.0" "5.0" diff --git a/tests/libtracker-data/functions/functions-builtin-round-1.rq b/tests/libtracker-data/functions/functions-builtin-round-1.rq new file mode 100644 index 000000000..bad8e5fa8 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-round-1.rq @@ -0,0 +1 @@ +SELECT (ROUND(4.0) AS ?a) (ROUND(4.5) AS ?b) (ROUND(4.999999999) AS ?c) (ROUND(5.000000001) AS ?d) {} diff --git a/tests/libtracker-data/functions/functions-builtin-sameterm-1.out b/tests/libtracker-data/functions/functions-builtin-sameterm-1.out new file mode 100644 index 000000000..0e3924af7 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-sameterm-1.out @@ -0,0 +1 @@ +"false" "true" "true" diff --git a/tests/libtracker-data/functions/functions-builtin-sameterm-1.rq b/tests/libtracker-data/functions/functions-builtin-sameterm-1.rq new file mode 100644 index 000000000..ba32bef8a --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-sameterm-1.rq @@ -0,0 +1 @@ +SELECT (SAMETERM (xsd:integer, xsd:boolean) AS ?a) (SAMETERM (xsd:boolean, xsd:boolean) AS ?b) (SAMETERM (<http://www.w3.org/2001/XMLSchema#boolean>, xsd:boolean) AS ?b) {}
\ No newline at end of file diff --git a/tests/libtracker-data/functions/functions-builtin-seconds-1.out b/tests/libtracker-data/functions/functions-builtin-seconds-1.out new file mode 100644 index 000000000..3f5f63f4d --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-seconds-1.out @@ -0,0 +1,5 @@ +"34" +"0" +"0" +"0" +"0" diff --git a/tests/libtracker-data/functions/functions-builtin-seconds-1.rq b/tests/libtracker-data/functions/functions-builtin-seconds-1.rq new file mode 100644 index 000000000..53a714ef0 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-seconds-1.rq @@ -0,0 +1,9 @@ +SELECT SECONDS(?d) { + VALUES ?d { + '2022-03-10T12:23:34Z'^^xsd:dateTime + '2022-01-01T01:00:00-0600'^^xsd:dateTime + '2022-12-31T23:00:00+0600'^^xsd:dateTime + '0001-01-02'^^xsd:date + '9998-12-31'^^xsd:date + } +} diff --git a/tests/libtracker-data/functions/functions-builtin-strdt-1.out b/tests/libtracker-data/functions/functions-builtin-strdt-1.out new file mode 100644 index 000000000..3dbc1dd05 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-strdt-1.out @@ -0,0 +1 @@ +"2" "2.2" "true" "false" "333" "2022-03-10" diff --git a/tests/libtracker-data/functions/functions-builtin-strdt-1.rq b/tests/libtracker-data/functions/functions-builtin-strdt-1.rq new file mode 100644 index 000000000..f57899b49 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-strdt-1.rq @@ -0,0 +1 @@ +select strdt("2.2", xsd:integer) strdt("2.2", xsd:double) strdt(1, xsd:boolean) strdt(0, xsd:boolean) strdt(333, xsd:string) strdt("2022-03-10T01:01:01Z", xsd:date) {}
\ No newline at end of file diff --git a/tests/libtracker-data/functions/functions-builtin-strlen-1.out b/tests/libtracker-data/functions/functions-builtin-strlen-1.out new file mode 100644 index 000000000..6ebd24b35 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-strlen-1.out @@ -0,0 +1 @@ +"3" "0" diff --git a/tests/libtracker-data/functions/functions-builtin-strlen-1.rq b/tests/libtracker-data/functions/functions-builtin-strlen-1.rq new file mode 100644 index 000000000..24bd0f69d --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-strlen-1.rq @@ -0,0 +1 @@ +SELECT (STRLEN ('abc') AS ?a) (STRLEN ('') AS ?b) {}
\ No newline at end of file diff --git a/tests/libtracker-data/functions/functions-builtin-substr-1.out b/tests/libtracker-data/functions/functions-builtin-substr-1.out new file mode 100644 index 000000000..61138dedb --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-substr-1.out @@ -0,0 +1 @@ +"bc" "b" "" "" diff --git a/tests/libtracker-data/functions/functions-builtin-substr-1.rq b/tests/libtracker-data/functions/functions-builtin-substr-1.rq new file mode 100644 index 000000000..ebc0dd407 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-substr-1.rq @@ -0,0 +1 @@ +SELECT SUBSTR('abc', 2) SUBSTR('abc', 2, 1) SUBSTR('abc', 2, 0) SUBSTR ('abc', 4, 1) {} diff --git a/tests/libtracker-data/functions/functions-builtin-uri-1.out b/tests/libtracker-data/functions/functions-builtin-uri-1.out new file mode 100644 index 000000000..cfbe41932 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-uri-1.out @@ -0,0 +1 @@ +"http://www.w3.org/2001/XMLSchema#integer" "http://www.w3.org/2001/XMLSchema%23integer" "http://www.w3.org/2001/XMLSchema%23integer" diff --git a/tests/libtracker-data/functions/functions-builtin-uri-1.rq b/tests/libtracker-data/functions/functions-builtin-uri-1.rq new file mode 100644 index 000000000..1e6474fb8 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-uri-1.rq @@ -0,0 +1 @@ +select xsd:integer uri(xsd:integer) iri(xsd:integer) {} diff --git a/tests/libtracker-data/functions/functions-builtin-uuid-1.out b/tests/libtracker-data/functions/functions-builtin-uuid-1.out new file mode 100644 index 000000000..826861551 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-uuid-1.out @@ -0,0 +1 @@ +"true" diff --git a/tests/libtracker-data/functions/functions-builtin-uuid-1.rq b/tests/libtracker-data/functions/functions-builtin-uuid-1.rq new file mode 100644 index 000000000..9e6bdac05 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-uuid-1.rq @@ -0,0 +1,11 @@ +ASK +{ + BIND (UUID () AS ?a) . + BIND (UUID () AS ?b) . + # Check prefix + FILTER (SUBSTR(STR(?a), 0, 10) = 'urn:uuid:') . + FILTER (SUBSTR(STR(?a), 0, 10) = SUBSTR(STR(?b), 0, 10)) . + # Check UUIDv4 version char, this is always 4 + FILTER (SUBSTR(STR(?a), 24, 1) = '4') . + FILTER (SUBSTR(STR(?a), 24, 1) = SUBSTR(STR(?b), 24, 1)) . +} diff --git a/tests/libtracker-data/functions/functions-builtin-year-1.out b/tests/libtracker-data/functions/functions-builtin-year-1.out new file mode 100644 index 000000000..44a853e3c --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-year-1.out @@ -0,0 +1,5 @@ +"2022" +"2022" +"2022" +"0001" +"9998" diff --git a/tests/libtracker-data/functions/functions-builtin-year-1.rq b/tests/libtracker-data/functions/functions-builtin-year-1.rq new file mode 100644 index 000000000..a4092ad88 --- /dev/null +++ b/tests/libtracker-data/functions/functions-builtin-year-1.rq @@ -0,0 +1,9 @@ +SELECT YEAR(?d) { + VALUES ?d { + '2022-03-10T12:23:34Z'^^xsd:dateTime + '2022-01-01T01:00:00-0600'^^xsd:dateTime + '2022-12-31T23:00:00+0600'^^xsd:dateTime + '0001-01-02'^^xsd:date + '9998-12-31'^^xsd:date + } +} diff --git a/tests/libtracker-data/functions/functions-cast-1.out b/tests/libtracker-data/functions/functions-cast-1.out new file mode 100644 index 000000000..df71001e4 --- /dev/null +++ b/tests/libtracker-data/functions/functions-cast-1.out @@ -0,0 +1 @@ +"2.34" "2.34" "2" "2.34" diff --git a/tests/libtracker-data/functions/functions-cast-1.rq b/tests/libtracker-data/functions/functions-cast-1.rq new file mode 100644 index 000000000..7c540fdc7 --- /dev/null +++ b/tests/libtracker-data/functions/functions-cast-1.rq @@ -0,0 +1 @@ +SELECT xsd:string(2.34) rdf:langString(2.34) xsd:integer("2") xsd:double("2.34"@en) {} diff --git a/tests/libtracker-data/functions/functions-cast-2.out b/tests/libtracker-data/functions/functions-cast-2.out new file mode 100644 index 000000000..3e5e98562 --- /dev/null +++ b/tests/libtracker-data/functions/functions-cast-2.out @@ -0,0 +1 @@ +"1.0e3" "1000.0" diff --git a/tests/libtracker-data/functions/functions-cast-2.rq b/tests/libtracker-data/functions/functions-cast-2.rq new file mode 100644 index 000000000..fea7b55d6 --- /dev/null +++ b/tests/libtracker-data/functions/functions-cast-2.rq @@ -0,0 +1 @@ +SELECT xsd:string(1.0e3) xsd:double("1.0e3") {} diff --git a/tests/libtracker-data/functions/functions-datatypes-5.out b/tests/libtracker-data/functions/functions-datatypes-5.out new file mode 100644 index 000000000..ff420a114 --- /dev/null +++ b/tests/libtracker-data/functions/functions-datatypes-5.out @@ -0,0 +1 @@ +"http://www.w3.org/2001/XMLSchema#string" "http://www.w3.org/2001/XMLSchema#double" "http://www.w3.org/2001/XMLSchema#integer" "http://www.w3.org/2001/XMLSchema#integer" diff --git a/tests/libtracker-data/functions/functions-datatypes-5.rq b/tests/libtracker-data/functions/functions-datatypes-5.rq new file mode 100644 index 000000000..572b435a3 --- /dev/null +++ b/tests/libtracker-data/functions/functions-datatypes-5.rq @@ -0,0 +1,3 @@ +PREFIX : <http://example/> + +SELECT DATATYPE("23"^^xsd:string) DATATYPE("23"^^xsd:double) DATATYPE("23"^^xsd:integer) DATATYPE (2 + 2) { } diff --git a/tests/libtracker-data/functions/functions-xpath-15.out b/tests/libtracker-data/functions/functions-xpath-15.out new file mode 100644 index 000000000..695aebf78 --- /dev/null +++ b/tests/libtracker-data/functions/functions-xpath-15.out @@ -0,0 +1 @@ +"Don't change the h of hallo, it's a special one" "ḤELLO" diff --git a/tests/libtracker-data/functions/functions-xpath-15.rq b/tests/libtracker-data/functions/functions-xpath-15.rq new file mode 100644 index 000000000..54a3ba60e --- /dev/null +++ b/tests/libtracker-data/functions/functions-xpath-15.rq @@ -0,0 +1 @@ +SELECT "Don't change the h of hallo, it's a special one" fn:upper-case ("\u1E25ello") {} diff --git a/tests/libtracker-data/property-paths/alternative-path-3.out b/tests/libtracker-data/property-paths/alternative-path-3.out new file mode 100644 index 000000000..82644df37 --- /dev/null +++ b/tests/libtracker-data/property-paths/alternative-path-3.out @@ -0,0 +1,20 @@ +"Alice" "Alice" +"Alice" "http://www.w3.org/2000/01/rdf-schema#Resource" +"Alice" "http://xmlns.com/foaf/0.1/Agent" +"Alice" "http://xmlns.com/foaf/0.1/Person" +"Alice" "mailto:alice@work" +"Bob" "Bob" +"Bob" "http://www.w3.org/2000/01/rdf-schema#Resource" +"Bob" "http://xmlns.com/foaf/0.1/Agent" +"Bob" "http://xmlns.com/foaf/0.1/Person" +"Bob" "mailto:bob@home" +"Bob" "mailto:bob@work" +"Eve" "Eve" +"Eve" "http://www.w3.org/2000/01/rdf-schema#Resource" +"Eve" "http://xmlns.com/foaf/0.1/Agent" +"Eve" "http://xmlns.com/foaf/0.1/Person" +"Fred" "Fred" +"Fred" "http://www.w3.org/2000/01/rdf-schema#Resource" +"Fred" "http://xmlns.com/foaf/0.1/Agent" +"Fred" "http://xmlns.com/foaf/0.1/Person" +"Fred" "mailto:fred@edu" diff --git a/tests/libtracker-data/property-paths/alternative-path-3.rq b/tests/libtracker-data/property-paths/alternative-path-3.rq new file mode 100644 index 000000000..909619a28 --- /dev/null +++ b/tests/libtracker-data/property-paths/alternative-path-3.rq @@ -0,0 +1 @@ +select foaf:name(?u) ?a { ?u a foaf:Person . ?u rdf:type|foaf:mbox|foaf:name ?a } order by foaf:name(?u) STR(?a) diff --git a/tests/libtracker-data/tracker-sparql-test.c b/tests/libtracker-data/tracker-sparql-test.c index 77752bcaf..8dddd6a74 100644 --- a/tests/libtracker-data/tracker-sparql-test.c +++ b/tests/libtracker-data/tracker-sparql-test.c @@ -42,10 +42,17 @@ struct _TestInfo { const TestInfo tests[] = { { "aggregates/aggregate-1", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-count-1", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-count-2", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-count-3", "aggregates/data-1", FALSE }, { "aggregates/aggregate-distinct-1", "aggregates/data-1", FALSE }, { "aggregates/aggregate-group-1", "aggregates/data-1", FALSE }, { "aggregates/aggregate-group-2", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-group-3", "aggregates/data-1", FALSE }, { "aggregates/aggregate-group-as-1", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-group-having-1", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-sample-1", "aggregates/data-1", FALSE }, + { "aggregates/aggregate-sample-2", "aggregates/data-1", FALSE }, { "algebra/two-nested-opt", "algebra/two-nested-opt", FALSE }, { "algebra/two-nested-opt-alt", "algebra/two-nested-opt", FALSE }, { "algebra/opt-filter-3", "algebra/opt-filter-3", FALSE }, @@ -122,6 +129,8 @@ const TestInfo tests[] = { { "expr-ops/query-unminus-1", "expr-ops/data", FALSE }, { "expr-ops/query-unplus-1", "expr-ops/data", FALSE }, { "expr-ops/query-res-1", "expr-ops/data", FALSE }, + { "functions/functions-cast-1", "functions/data-1", FALSE }, + { "functions/functions-cast-2", "functions/data-1", FALSE }, { "functions/functions-property-1", "functions/data-1", FALSE }, { "functions/functions-property-2", "functions/data-5", FALSE }, { "functions/functions-tracker-1", "functions/data-1", FALSE }, @@ -148,18 +157,46 @@ const TestInfo tests[] = { { "functions/functions-xpath-12", "functions/data-4", FALSE }, { "functions/functions-xpath-13", "functions/data-4", FALSE }, { "functions/functions-xpath-14", "functions/data-4", FALSE }, + { "functions/functions-xpath-15", "functions/data-1", FALSE }, { "functions/functions-coalesce-1", "functions/data-1", FALSE }, { "functions/functions-datatypes-1", "functions/data-1", FALSE }, { "functions/functions-datatypes-2", "functions/data-2", FALSE }, { "functions/functions-datatypes-3", "functions/data-3", FALSE }, { "functions/functions-datatypes-4", "functions/data-4", FALSE }, + { "functions/functions-datatypes-5", "functions/data-1", FALSE }, + { "functions/functions-builtin-bnode-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-bnode-2", "functions/data-1", FALSE }, + { "functions/functions-builtin-uuid-1", "functions/data-1", FALSE }, { "functions/functions-builtin-hash-1", "functions/data-1", FALSE }, { "functions/functions-builtin-ucase-1", "functions/data-1", FALSE }, { "functions/functions-builtin-lcase-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-strlen-1", "functions/data-1", FALSE }, { "functions/functions-builtin-strbefore-1", "functions/data-1", FALSE }, { "functions/functions-builtin-strafter-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-substr-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-replace-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-replace-2", "functions/data-1", TRUE }, + { "functions/functions-builtin-replace-3", "functions/data-1", TRUE }, + { "functions/functions-builtin-replace-4", "functions/data-1", FALSE }, + { "functions/functions-builtin-replace-5", "functions/data-1", TRUE }, + { "functions/functions-builtin-contains-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-abs-1", "functions/data-1", FALSE }, { "functions/functions-builtin-ceil-1", "functions/data-1", FALSE }, { "functions/functions-builtin-floor-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-round-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-uri-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-year-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-month-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-day-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-hours-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-minutes-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-seconds-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-now-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-encode-for-uri-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-strdt-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-sameterm-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-if-1", "functions/data-1", FALSE }, + { "functions/functions-builtin-rand-1", "functions/data-1", FALSE }, /* Graph semantics and operations */ { "graph/graph-1", "graph/data-1", FALSE }, { "graph/graph-2", "graph/data-2", FALSE }, @@ -274,6 +311,7 @@ const TestInfo tests[] = { { "property-paths/recursive-path-3", "property-paths/data", FALSE }, { "property-paths/alternative-path-1", "property-paths/data", FALSE }, { "property-paths/alternative-path-2", "property-paths/data", FALSE }, + { "property-paths/alternative-path-3", "property-paths/data", FALSE }, { "property-paths/mixed-inverse-and-sequence-1", "property-paths/data", FALSE }, { "property-paths/mixed-inverse-and-sequence-2", "property-paths/data", FALSE }, { "property-paths/mixed-inverse-and-sequence-3", "property-paths/data", FALSE }, @@ -348,9 +386,7 @@ check_result (TrackerDBCursor *cursor, gchar *results; GError *nerror = NULL; - if (test_info->expect_query_error) { - g_assert_true (error != NULL); - } else { + if (!test_info->expect_query_error) { g_assert_no_error (error); } @@ -400,8 +436,10 @@ check_result (TrackerDBCursor *cursor, g_string_append (test_results, "\n"); } } - } else if (test_info->expect_query_error) { - g_assert_true (error != NULL && error->domain == TRACKER_SPARQL_ERROR); + } + + if (test_info->expect_query_error) { + g_assert_true (error != NULL); g_string_free (test_results, TRUE); g_free (results); return; diff --git a/tests/libtracker-fts/data.ontology b/tests/libtracker-fts/data.ontology index 8ce8b6627..84bf4fcf4 100644 --- a/tests/libtracker-fts/data.ontology +++ b/tests/libtracker-fts/data.ontology @@ -21,6 +21,7 @@ test:p a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain test:A ; rdfs:range xsd:string ; + nrl:weight 20 ; nrl:fulltextIndexed true . test:o a rdf:Property ; @@ -28,3 +29,9 @@ test:o a rdf:Property ; rdfs:domain test:A ; rdfs:range xsd:string ; nrl:fulltextIndexed true . + +test:q a rdf:Property ; + rdfs:domain test:A ; + rdfs:range xsd:string ; + nrl:weight 2 ; + nrl:fulltextIndexed true . diff --git a/tests/libtracker-fts/functions/offsets-1.out b/tests/libtracker-fts/functions/offsets-1.out new file mode 100644 index 000000000..42b059e27 --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-1.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" "test:p,0" +"http://www.example.org/test#2" "test:p,0,test:p,8" +"http://www.example.org/test#4" "test:o,0,test:p,0" +"http://www.example.org/test#3" "test:o,0" diff --git a/tests/libtracker-fts/functions/offsets-1.rq b/tests/libtracker-fts/functions/offsets-1.rq new file mode 100644 index 000000000..b18570d11 --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-1.rq @@ -0,0 +1 @@ +SELECT ?u fts:offsets(?u) { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/offsets-2.out b/tests/libtracker-fts/functions/offsets-2.out new file mode 100644 index 000000000..32b77c47a --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-2.out @@ -0,0 +1,2 @@ +"http://www.example.org/test#5" "test:p,0" +"http://www.example.org/test#6" "test:q,11" diff --git a/tests/libtracker-fts/functions/offsets-2.rq b/tests/libtracker-fts/functions/offsets-2.rq new file mode 100644 index 000000000..f273db100 --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-2.rq @@ -0,0 +1 @@ +SELECT ?u fts:offsets(?u) { ?u fts:match 'oranges' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/offsets-3.out b/tests/libtracker-fts/functions/offsets-3.out new file mode 100644 index 000000000..5954669de --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-3.out @@ -0,0 +1,3 @@ +"http://www.example.org/test#1" "test:p,8,test:p,15" +"http://www.example.org/test#2" "test:p,16" +"http://www.example.org/test#4" "test:o,8" diff --git a/tests/libtracker-fts/functions/offsets-3.rq b/tests/libtracker-fts/functions/offsets-3.rq new file mode 100644 index 000000000..f726e325f --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-3.rq @@ -0,0 +1 @@ +SELECT ?u fts:offsets(?u) { ?u fts:match 'lemons' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/offsets-data.rq b/tests/libtracker-fts/functions/offsets-data.rq new file mode 100644 index 000000000..8a1327d75 --- /dev/null +++ b/tests/libtracker-fts/functions/offsets-data.rq @@ -0,0 +1,9 @@ +INSERT { + test:1 a test:A ; test:p "bananas lemons lemons" . + test:2 a test:A ; test:p "bananas bananas lemons" . + test:3 a test:A ; test:o "bananas" . + test:4 a test:A ; test:p "bananas" ; test:o "bananas lemons" . + + test:5 a test:A ; test:p "oranges!" . + test:6 a test:A ; test:q "apples and oranges in a multivalued property" . +} diff --git a/tests/libtracker-fts/functions/rank-1.out b/tests/libtracker-fts/functions/rank-1.out new file mode 100644 index 000000000..4d04bba3c --- /dev/null +++ b/tests/libtracker-fts/functions/rank-1.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" "20.0" +"http://www.example.org/test#2" "20.0" +"http://www.example.org/test#4" "20.0" +"http://www.example.org/test#3" "0.0" diff --git a/tests/libtracker-fts/functions/rank-1.rq b/tests/libtracker-fts/functions/rank-1.rq new file mode 100644 index 000000000..54acbe62d --- /dev/null +++ b/tests/libtracker-fts/functions/rank-1.rq @@ -0,0 +1 @@ +SELECT ?u fts:rank(?u) { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/rank-2.out b/tests/libtracker-fts/functions/rank-2.out new file mode 100644 index 000000000..237f1616f --- /dev/null +++ b/tests/libtracker-fts/functions/rank-2.out @@ -0,0 +1,2 @@ +"http://www.example.org/test#5" "20.0" +"http://www.example.org/test#6" "2.0" diff --git a/tests/libtracker-fts/functions/rank-2.rq b/tests/libtracker-fts/functions/rank-2.rq new file mode 100644 index 000000000..8438b74ce --- /dev/null +++ b/tests/libtracker-fts/functions/rank-2.rq @@ -0,0 +1 @@ +SELECT ?u fts:rank(?u) { ?u fts:match 'oranges' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/rank-data.rq b/tests/libtracker-fts/functions/rank-data.rq new file mode 100644 index 000000000..2a8ffb1c0 --- /dev/null +++ b/tests/libtracker-fts/functions/rank-data.rq @@ -0,0 +1,9 @@ +INSERT { + test:1 a test:A ; test:p "bananas lemons lemons" . + test:2 a test:A ; test:p "bananas bananas lemons" . + test:3 a test:A ; test:o "bananas" . + test:4 a test:A ; test:p "bananas" ; test:o "bananas lemons" . + + test:5 a test:A ; test:p "oranges!" . + test:6 a test:A ; test:q "oranges", "oranges and oranges" . +} diff --git a/tests/libtracker-fts/functions/snippet-1.out b/tests/libtracker-fts/functions/snippet-1.out new file mode 100644 index 000000000..db1fae0c2 --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-1.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" "bananas lemons lemons" +"http://www.example.org/test#2" "bananas bananas lemons" +"http://www.example.org/test#4" "bananas lemons" +"http://www.example.org/test#3" "bananas" diff --git a/tests/libtracker-fts/functions/snippet-1.rq b/tests/libtracker-fts/functions/snippet-1.rq new file mode 100644 index 000000000..37cedaf0f --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-1.rq @@ -0,0 +1 @@ +SELECT ?u fts:snippet(?u) { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/snippet-2.out b/tests/libtracker-fts/functions/snippet-2.out new file mode 100644 index 000000000..8cdc6f4b8 --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-2.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" ">>>bananas<<< lemons lemons" +"http://www.example.org/test#2" ">>>bananas<<< >>>bananas<<< lemons" +"http://www.example.org/test#4" ">>>bananas<<< lemons" +"http://www.example.org/test#3" ">>>bananas<<<" diff --git a/tests/libtracker-fts/functions/snippet-2.rq b/tests/libtracker-fts/functions/snippet-2.rq new file mode 100644 index 000000000..59cd8c306 --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-2.rq @@ -0,0 +1 @@ +SELECT ?u fts:snippet(?u, '>>>', '<<<') { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/snippet-3.out b/tests/libtracker-fts/functions/snippet-3.out new file mode 100644 index 000000000..9c869b89a --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-3.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" ">>>bananas<<<..." +"http://www.example.org/test#2" ">>>bananas<<< >>>bananas<<<..." +"http://www.example.org/test#4" ">>>bananas<<<..." +"http://www.example.org/test#3" ">>>bananas<<<" diff --git a/tests/libtracker-fts/functions/snippet-3.rq b/tests/libtracker-fts/functions/snippet-3.rq new file mode 100644 index 000000000..bb235264f --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-3.rq @@ -0,0 +1 @@ +SELECT ?u fts:snippet(?u, '>>>', '<<<', '...', 1) { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/snippet-4.out b/tests/libtracker-fts/functions/snippet-4.out new file mode 100644 index 000000000..e3650f67a --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-4.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" +"http://www.example.org/test#2" ">>>bananas<<< >>>bananas<<<..." +"http://www.example.org/test#4" ">>>bananas<<<..." +"http://www.example.org/test#3" ">>>bananas<<<..." diff --git a/tests/libtracker-fts/functions/snippet-4.rq b/tests/libtracker-fts/functions/snippet-4.rq new file mode 100644 index 000000000..1b542b57c --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-4.rq @@ -0,0 +1 @@ +SELECT ?u fts:snippet(?u, '>>>', '<<<', '...', 0) { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/snippet-5.out b/tests/libtracker-fts/functions/snippet-5.out new file mode 100644 index 000000000..b7e42e2f1 --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-5.out @@ -0,0 +1,4 @@ +"http://www.example.org/test#1" +"http://www.example.org/test#2" +"http://www.example.org/test#4" +"http://www.example.org/test#3" diff --git a/tests/libtracker-fts/functions/snippet-5.rq b/tests/libtracker-fts/functions/snippet-5.rq new file mode 100644 index 000000000..564f52d01 --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-5.rq @@ -0,0 +1 @@ +SELECT ?u fts:snippet(?u, '>>>', '<<<', '...', -1) { ?u fts:match 'bananas' } order by desc fts:rank(?u) diff --git a/tests/libtracker-fts/functions/snippet-data.rq b/tests/libtracker-fts/functions/snippet-data.rq new file mode 100644 index 000000000..2a8ffb1c0 --- /dev/null +++ b/tests/libtracker-fts/functions/snippet-data.rq @@ -0,0 +1,9 @@ +INSERT { + test:1 a test:A ; test:p "bananas lemons lemons" . + test:2 a test:A ; test:p "bananas bananas lemons" . + test:3 a test:A ; test:o "bananas" . + test:4 a test:A ; test:p "bananas" ; test:o "bananas lemons" . + + test:5 a test:A ; test:p "oranges!" . + test:6 a test:A ; test:q "oranges", "oranges and oranges" . +} diff --git a/tests/libtracker-fts/tracker-fts-test.c b/tests/libtracker-fts/tracker-fts-test.c index edac25010..c0bca75ef 100644 --- a/tests/libtracker-fts/tracker-fts-test.c +++ b/tests/libtracker-fts/tracker-fts-test.c @@ -41,6 +41,9 @@ const TestInfo tests[] = { { "prefix/fts3prefix", 3 }, { "limits/fts3limits", 4 }, { "input/fts3input", 3 }, + { "functions/rank", 2 }, + { "functions/offsets", 3 }, + { "functions/snippet", 5 }, { NULL } }; diff --git a/tests/libtracker-sparql/tracker-sparql-test.c b/tests/libtracker-sparql/tracker-sparql-test.c index c6e1b0e8d..66a74e1a1 100644 --- a/tests/libtracker-sparql/tracker-sparql-test.c +++ b/tests/libtracker-sparql/tracker-sparql-test.c @@ -212,6 +212,86 @@ test_tracker_sparql_cursor_next_async (void) g_main_loop_run (main_loop); } +static void +test_tracker_sparql_cursor_get_variable_name (void) +{ + TrackerSparqlConnection *connection; + TrackerSparqlCursor *cursor; + GError *error = NULL; + + connection = create_local_connection (&error); + g_assert_no_error (error); + g_assert_true (connection != NULL); + + cursor = tracker_sparql_connection_query (connection, + "SELECT ?urn ?added ?label ?unbound { " + " ?urn nrl:added ?added ; " + " rdfs:label ?label . " + "} LIMIT 1", + NULL, &error); + g_assert_no_error (error); + g_assert_true (cursor != NULL); + + tracker_sparql_cursor_next (cursor, NULL, &error); + g_assert_no_error (error); + + g_assert_cmpstr (tracker_sparql_cursor_get_variable_name (cursor, 0), + ==, + "urn"); + g_assert_cmpstr (tracker_sparql_cursor_get_variable_name (cursor, 1), + ==, + "added"); + g_assert_cmpstr (tracker_sparql_cursor_get_variable_name (cursor, 2), + ==, + "label"); + g_assert_cmpstr (tracker_sparql_cursor_get_variable_name (cursor, 3), + ==, + "unbound"); + + tracker_sparql_cursor_close (cursor); + tracker_sparql_connection_close (connection); +} + +static void +test_tracker_sparql_cursor_get_value_type (void) +{ + TrackerSparqlConnection *connection; + TrackerSparqlCursor *cursor; + GError *error = NULL; + + connection = create_local_connection (&error); + g_assert_no_error (error); + g_assert_true (connection != NULL); + + cursor = tracker_sparql_connection_query (connection, + "SELECT ?urn ?added ?label ?unbound { " + " ?urn nrl:added ?added ; " + " rdfs:label ?label . " + "} LIMIT 1", + NULL, &error); + g_assert_no_error (error); + g_assert_true (cursor != NULL); + + tracker_sparql_cursor_next (cursor, NULL, &error); + g_assert_no_error (error); + + g_assert_cmpint (tracker_sparql_cursor_get_value_type (cursor, 0), + ==, + TRACKER_SPARQL_VALUE_TYPE_URI); + g_assert_cmpint (tracker_sparql_cursor_get_value_type (cursor, 1), + ==, + TRACKER_SPARQL_VALUE_TYPE_DATETIME); + g_assert_cmpint (tracker_sparql_cursor_get_value_type (cursor, 2), + ==, + TRACKER_SPARQL_VALUE_TYPE_STRING); + g_assert_cmpint (tracker_sparql_cursor_get_value_type (cursor, 3), + ==, + TRACKER_SPARQL_VALUE_TYPE_UNBOUND); + + tracker_sparql_cursor_close (cursor); + tracker_sparql_connection_close (connection); +} + /* Test that we return an error if no ontology is passed. */ static void test_tracker_sparql_connection_no_ontology (void) @@ -291,6 +371,10 @@ main (gint argc, gchar **argv) test_tracker_sparql_connection_interleaved); g_test_add_func ("/libtracker-sparql/tracker-sparql/tracker_sparql_cursor_next_async", test_tracker_sparql_cursor_next_async); + g_test_add_func ("/libtracker-sparql/tracker-sparql/tracker_sparql_cursor_get_variable_name", + test_tracker_sparql_cursor_get_variable_name); + g_test_add_func ("/libtracker-sparql/tracker-sparql/tracker_sparql_cursor_get_value_type", + test_tracker_sparql_cursor_get_value_type); g_test_add_func ("/libtracker-sparql/tracker-sparql/tracker_check_version", test_tracker_check_version); |