[Zope-CVS] CVS: Packages/pypes/pypes/tests - test_query.py:1.9

Casey Duncan casey at zope.com
Wed May 5 00:06:37 EDT 2004


Update of /cvs-repository/Packages/pypes/pypes/tests
In directory cvs.zope.org:/tmp/cvs-serv8163/tests

Modified Files:
	test_query.py 
Log Message:
Begin Join() partial result implementation


=== Packages/pypes/pypes/tests/test_query.py 1.8 => 1.9 ===
--- Packages/pypes/pypes/tests/test_query.py:1.8	Thu Apr 29 22:45:11 2004
+++ Packages/pypes/pypes/tests/test_query.py	Wed May  5 00:06:36 2004
@@ -18,6 +18,7 @@
 import unittest
 from sets import Set
 from operator import mul
+from compiler import parse
 from zope.interface import implements
 from zope.interface.verify import verifyObject
 from persistent import Persistent
@@ -28,16 +29,24 @@
     
     implements(IExpression)
     
-    def __init__(self, func, names=[]):
+    def __init__(self, func=None, names=[], expr=None):
         self._func = func
         self._names = Set(names)
+        if expr is not None:
+            self._ast = parse(expr, mode='eval')
     
     def names(self):
         return self._names
     
+    def bindings(self):
+        return {}
+    
     def freeNames(self, free_names=[]):
         return self._names
     
+    def ast(self):
+        return self._ast
+    
     def freeOperands(self, free_names=[]):
         return []
     
@@ -251,7 +260,7 @@
         sorted = sort([], lambda x:x, descending, limit=5)
         self.failIf(sorted)
 
-class TestJoin(unittest.TestCase):
+class TestJoinPrimitives(unittest.TestCase):
     
     def test_equijoin_one2one(self):
         from pypes.query import equijoin
@@ -336,7 +345,7 @@
             left2right.setdefault(left, []).append(right)
         for left, lesser in left2right.items():
             self.assertEqual(len(lesser), left.age)
-            
+    
     def test_greater_join_empty(self):
         from pypes.query import greater_join
         joined = greater_join([], lambda x:x, [], lambda x:x)
@@ -351,7 +360,60 @@
         from pypes.query import greater_join
         objs = [TestClass() for i in range(5)]
         joined = greater_join(objs, lambda x: 1, objs, lambda x: 2)
-        self.failIf(list(joined))       
+        self.failIf(list(joined))
+
+class TestJoin(unittest.TestCase):
+    
+    def test_interface(self):
+        from pypes.query import Join
+        from pypes.interfaces import IPartialResult
+        inputs = {'a':Set(), 'b':Set()}
+        self.failUnless(verifyObject(
+            IPartialResult, 
+            Join(inputs, DummyExpr(expr='a == b', names=['a', 'b']))))
+    
+    def test_join_handles_compares(self):
+        from pypes.query import Join
+        inputs = {'a':Set(), 'b':Set()}
+        Join(inputs, DummyExpr(expr='a == b', names=['a', 'b']))
+        Join(inputs, DummyExpr(expr='a < b', names=['a', 'b']))
+        Join(inputs, DummyExpr(expr='a > b', names=['a', 'b']))
+        Join(inputs, DummyExpr(expr='a in b', names=['a', 'b']))
+        Join(inputs, DummyExpr(
+            expr='a.__name__ == b["name"]', names=['a', 'b']))
+
+    def test_join_cant_process(self):
+        from pypes.query import Join
+        from pypes.exceptions import CantProcess
+        inputs = {'a':Set(), 'b':Set(), 'c':Set()}
+        self.assertRaises(CantProcess, Join, inputs, DummyExpr(expr='True'))
+        self.assertRaises(
+            CantProcess, Join, inputs, DummyExpr(expr='a', names=['a']))
+        self.assertRaises(
+            CantProcess, Join, inputs, DummyExpr(expr='a == 1', names=['a']))
+        self.assertRaises(
+            CantProcess, Join, inputs, DummyExpr(expr='a == a', names=['a']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='a + b', names=['a', 'b']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='a + b > 0', names=['a', 'b']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='0 < a + b', names=['a', 'b']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='a * b == a + b', names=['a', 'b']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='a == b == c', names=['a', 'b', 'c']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='a >= b', names=['a', 'b']))
+        self.assertRaises(
+            CantProcess, Join, inputs, 
+            DummyExpr(expr='a <= b', names=['a', 'b']))
 
 if __name__ == '__main__':
     unittest.main()




More information about the Zope-CVS mailing list