[Zodb-checkins] CVS: Zope/lib/python/BTrees/tests - testSetOps.py:1.10
Tim Peters
tim.one@comcast.net
Tue, 25 Jun 2002 14:59:42 -0400
Update of /cvs-repository/Zope/lib/python/BTrees/tests
In directory cvs.zope.org:/tmp/cvs-serv24877/tests
Modified Files:
testSetOps.py
Log Message:
Added the first, trivial tests of weightedUnion and weightedIntersection,
and started repairing obvious errors in their docs. More to come.
=== Zope/lib/python/BTrees/tests/testSetOps.py 1.9 => 1.10 ===
self.fail("OOBTree shouldn't have multiunion")
+# Subclasses must set up (as class variables):
+# weightedUnion, weightedIntersection
+# builders -- sequence of constructors, taking items
+class Weighted(TestCase):
+
+ def setUp(self):
+ self.Aitems = [(1, 10), (3, 30), (5, 50), (6, 60)]
+ self.Bitems = [(2, 21), (3, 31), (4, 41), (6, 61), (7, 71)]
+
+ self.As = [make(self.Aitems) for make in self.builders]
+ self.Bs = [make(self.Bitems) for make in self.builders]
+ self.emptys = [make([]) for make in self.builders]
+
+ def testBothNone(self):
+ for op in self.weightedUnion, self.weightedIntersection:
+ w, C = op(None, None)
+ self.assert_(C is None)
+ self.assertEqual(w, 0)
+
+ w, C = op(None, None, 42, 666)
+ self.assert_(C is None)
+ self.assertEqual(w, 0)
+
+ def testLeftNone(self):
+ for op in self.weightedUnion, self.weightedIntersection:
+ for A in self.As + self.emptys:
+ w, C = op(None, A)
+ self.assert_(C is A)
+ self.assertEqual(w, 1)
+
+ w, C = op(None, A, 42, 666)
+ self.assert_(C is A)
+ self.assertEqual(w, 666)
+
+ def testRightNone(self):
+ for op in self.weightedUnion, self.weightedIntersection:
+ for A in self.As + self.emptys:
+ w, C = op(A, None)
+ self.assert_(C is A)
+ self.assertEqual(w, 1)
+
+ w, C = op(A, None, 42, 666)
+ self.assert_(C is A)
+ self.assertEqual(w, 42)
+
+# Given a set builder (like OITreeSet or OISet), return a function that
+# takes a list of (key, value) pairs and builds a set out of the keys.
+def itemsToSet(setbuilder):
+ def result(items, setbuilder=setbuilder):
+ return setbuilder([key for key, value in items])
+ return result
+
+class TestWeightedII(Weighted):
+ from BTrees.IIBTree import weightedUnion, weightedIntersection
+ builders = IIBucket, IIBTree, itemsToSet(IISet), itemsToSet(IITreeSet)
+
+class TestWeightedOI(Weighted):
+ from BTrees.OIBTree import weightedUnion, weightedIntersection
+ builders = OIBucket, OIBTree, itemsToSet(OISet), itemsToSet(OITreeSet)
+
def test_suite():
s = TestSuite()
for klass in (TestIIMultiUnion, TestIOMultiUnion,
TestImports,
- PureII, PureIO, PureOI, PureOO):
+ PureII, PureIO, PureOI, PureOO,
+ TestWeightedII, TestWeightedOI):
s.addTest(makeSuite(klass))
return s