[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