diff service/mqtt_to_rdf/stmt_chunk_test.py @ 1659:15e84c71beee

parse lists from graph into the Chunks
author drewp@bigasterisk.com
date Sun, 19 Sep 2021 14:42:39 -0700
parents 15e195fb24bb
children 00a5624d1d14
line wrap: on
line diff
--- a/service/mqtt_to_rdf/stmt_chunk_test.py	Sun Sep 19 13:33:10 2021 -0700
+++ b/service/mqtt_to_rdf/stmt_chunk_test.py	Sun Sep 19 14:42:39 2021 -0700
@@ -1,3 +1,4 @@
+from time import clock_gettime
 import unittest
 
 from rdflib.term import Variable
@@ -41,6 +42,35 @@
         self.assertFalse(cg.noPredicatesAppear([ROOM.b, ROOM.d]))
 
 
+class TestListCollection(unittest.TestCase):
+
+    def testSubjList(self):
+        cg = ChunkedGraph(N3('(:u :v) :b :c .'), functionsFor)
+        expected = Chunk((None, ROOM.b, ROOM.c), subjList=[ROOM.u, ROOM.v])
+        self.assertEqual(cg.staticChunks, set([expected]))
+
+    def testObjList(self):
+        cg = ChunkedGraph(N3(':a :b (:u :v) .'), functionsFor)
+        expected = Chunk((ROOM.a, ROOM.b, None), objList=[ROOM.u, ROOM.v])
+        self.assertSetEqual(cg.staticChunks, set([expected]))
+
+    def testVariableInListMakesAPatternChunk(self):
+        cg = ChunkedGraph(N3(':a :b (?x :v) .'), functionsFor)
+        expected = Chunk((ROOM.a, ROOM.b, None), objList=[Variable('x'), ROOM.v])
+        self.assertSetEqual(cg.patternChunks, set([expected]))
+
+    def testListUsedTwice(self):
+        cg = ChunkedGraph(N3('(:u :v) :b :c, :d .'), functionsFor)
+
+        self.assertSetEqual(cg.staticChunks, set([
+            Chunk((None, ROOM.b, ROOM.c), subjList=[ROOM.u, ROOM.v]),
+            Chunk((None, ROOM.b, ROOM.d), subjList=[ROOM.u, ROOM.v])
+        ]))
+
+    def testUnusedListFragment(self):
+        cg = ChunkedGraph(N3(':a rdf:first :b .'), functionsFor)
+        self.assertFalse(cg)
+
 class TestApplyChunky(unittest.TestCase):
     binding = CandidateBinding({Variable('x'): ROOM.xval})