[z3-checkins] r9821 - in z3/zemantic/trunk/src/zemantic: . tests

michelp at codespeak.net michelp at codespeak.net
Wed Mar 16 13:26:04 MET 2005


Author: michelp
Date: Wed Mar 16 13:26:04 2005
New Revision: 9821

Modified:
   z3/zemantic/trunk/src/zemantic/query.py
   z3/zemantic/trunk/src/zemantic/tests/test_query.py
Log:
fixes for tarek

Modified: z3/zemantic/trunk/src/zemantic/query.py
==============================================================================
--- z3/zemantic/trunk/src/zemantic/query.py	(original)
+++ z3/zemantic/trunk/src/zemantic/query.py	Wed Mar 16 13:26:04 2005
@@ -286,7 +286,7 @@
     def __call__(self, store):
         results = Set()
         for query in self._queries:
-            BTrees.OOBTree.union(results, Set(query(store)))
+            results = BTrees.OOBTree.union(results, Set(list(query(store))))
         for result in results:
             yield result
 
@@ -304,7 +304,6 @@
     def __call__(self, store):
         results = Set()
         for query in self._queries:
-            results.intersection(query(store))
+            results = BTrees.OOBTree.intersection(results, Set(list(query(store))))
         for result in results:
             yield result
-

Modified: z3/zemantic/trunk/src/zemantic/tests/test_query.py
==============================================================================
--- z3/zemantic/trunk/src/zemantic/tests/test_query.py	(original)
+++ z3/zemantic/trunk/src/zemantic/tests/test_query.py	Wed Mar 16 13:26:04 2005
@@ -11,14 +11,89 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-
 import unittest
+
+from rdflib.URIRef import URIRef
+
 from zope.testing.doctestunit import DocTestSuite
 
+from zemantic.triplestore import TripleStore
+from zemantic.query import UnionChain
+from zemantic.public import *
+
+class QueryTestCase(unittest.TestCase):
+
+    def _getSampleCatalog(self):
+        store = TripleStore()
+
+        store.add((URIRef(u'Tarek'), URIRef(u'likes'), URIRef(u'pizza')))
+        store.add((URIRef(u'Bob'), URIRef(u'likes'), URIRef(u'cheese')))
+        store.add((URIRef(u'Bob'), URIRef(u'hates'), URIRef(u'pizza')))
+        store.add((URIRef(u'Robert'), URIRef(u'likes'), URIRef(u'pizza')))
+        store.add((URIRef(u'Marie'), URIRef(u'likes'), URIRef(u'cheese')))
+
+        return store
+
+    def test_simpleQueries(self):
+        ob = self._getSampleCatalog()
+
+        res = ob.query(Query(Any, Any, Any))
+        res = list(res)
+        self.assertEquals(len(res), 5)
+
+        res = ob.query(Query(Any, u'<likes>', Any))
+        res = list(res)
+        self.assertEquals(len(res), 4)
+
+        res = ob.query(Query(Any, u'<hates>', Any))
+        res = list(res)
+        self.assertEquals(len(res), 1)
+
+        res = ob.query(Query(u'<Bob>', Any, Any))
+        res = list(res)
+        self.assertEquals(len(res), 2)
+
+        res = ob.query(Query(u'<Bob>', Any, u'<cheese>'))
+        res = list(res)
+        self.assertEquals(len(res), 1)
+
+        res = ob.query(Query(u'<Bob>',  u'<likes>', u'<cheese>'))
+        res = list(res)
+        self.assertEquals(len(res), 1)
+
+
+        res = ob.query(Query(u'<Bob>',  u'<hates>', u'<cheese>'))
+        res = list(res)
+        self.assertEquals(len(res), 0)
+
+    def test_unionQueries(self):
+        ob = self._getSampleCatalog()
+
+        q1 = Query(Any, Any, Any)
+        q1 = UnionChain(q1)
+        self.assertNotEquals(q1, None)
+
+        res = ob.query(q1)
+        self.assertNotEquals(res, None)
+        res = list(res)
+        self.assertEquals(len(res), 5)
+
+        q1 = Query(u'<Bob>',  u'<likes>', Any)
+        q2 = Query(u'<Bob>',  u'<hates>', Any)
+
+        q1_and_q2 = UnionChain(q1, q2)
+        self.assertNotEquals(q1_and_q2, None)
+
+        res = ob.query(q1_and_q2)
+        self.assertNotEquals(res, None)
+        res = list(res)
+        self.assertEquals(len(res), 2)
+
+
+
 def test_suite():
-    return unittest.TestSuite((
-        DocTestSuite('zemantic.query'),        
-        ))
+    return unittest.TestSuite((unittest.makeSuite(QueryTestCase),
+                               DocTestSuite('zemantic.query')))
 
 if __name__ == '__main__':
     unittest.main(defaultTest='test_suite')


More information about the z3-checkins mailing list