[Checkins] SVN: BTrees/branches/pure_python/ Start coverage for set operations.
Tres Seaver
cvs-admin at zope.org
Tue Dec 4 02:16:18 UTC 2012
Log message for revision 128496:
Start coverage for set operations.
Changed:
_U BTrees/branches/pure_python/
U BTrees/branches/pure_python/BTrees/tests/test__base.py
-=-
Modified: BTrees/branches/pure_python/BTrees/tests/test__base.py
===================================================================
--- BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-12-03 14:24:17 UTC (rev 128495)
+++ BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-12-04 02:16:18 UTC (rev 128496)
@@ -2410,6 +2410,60 @@
self.assertTrue(letter in _set)
+class _SetObBase(object):
+
+ def _makeSet(self, *args):
+ return _Set(*args)
+
+ def _makeMapping(self, *args, **kw):
+ return _Mapping(*args, **kw)
+
+
+class Test_difference(unittest.TestCase, _SetObBase):
+
+ def _callFUT(self, *args, **kw):
+ from .._base import difference
+ return difference(*args, **kw)
+
+ def test_lhs_none(self):
+ rhs = self._makeSet(('a', 'b', 'c'))
+ self.assertEqual(self._callFUT(rhs.__class__, None, rhs), None)
+
+ def test_rhs_none(self):
+ lhs = self._makeSet(('a', 'b', 'c'))
+ self.assertEqual(self._callFUT(lhs.__class__, lhs, None), lhs)
+
+
+class Test_union(unittest.TestCase, _SetObBase):
+
+ def _callFUT(self, *args, **kw):
+ from .._base import union
+ return union(*args, **kw)
+
+ def test_lhs_none(self):
+ rhs = self._makeSet(('a', 'b', 'c'))
+ self.assertEqual(self._callFUT(rhs.__class__, None, rhs), rhs)
+
+ def test_rhs_none(self):
+ lhs = self._makeSet(('a', 'b', 'c'))
+ self.assertEqual(self._callFUT(lhs.__class__, lhs, None), lhs)
+
+
+class Test_intersection(unittest.TestCase, _SetObBase):
+
+ def _callFUT(self, *args, **kw):
+ from .._base import intersection
+ return intersection(*args, **kw)
+
+ def test_lhs_none(self):
+ rhs = self._makeSet(('a', 'b', 'c'))
+ self.assertEqual(self._callFUT(rhs.__class__, None, rhs), rhs)
+
+ def test_rhs_none(self):
+ lhs = self._makeSet(('a', 'b', 'c'))
+ self.assertEqual(self._callFUT(lhs.__class__, lhs, None), lhs)
+
+
class _Jar(object):
def __init__(self):
self._current = set()
@@ -2419,6 +2473,35 @@
pass
+class _Set(object):
+ def __init__(self, *args, **kw):
+ keys = set(args)
+ self._keys = sorted(keys)
+ def keys(self):
+ return self._keys
+ def __iter__(self):
+ return iter(self._keys)
+_Set._set_type = _Set
+
+
+class _Mapping(dict):
+ def __init__(self, source=None):
+ if source is None:
+ source = {}
+ self._keys = []
+ self._values = []
+ for k, v in sorted(source.items()):
+ self._keys.append(k)
+ self._values.append(k)
+ def MERGE_WEIGHT(self, v, w):
+ return v
+ def iteritems(self):
+ for k, v in zip(self._keys, self._values):
+ yield k,v
+_Mapping._set_type = _Set
+_Mapping._mapping_type = _Mapping
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(Test_Base),
@@ -2431,4 +2514,7 @@
unittest.makeSuite(Test_TreeItems),
unittest.makeSuite(TreeTests),
unittest.makeSuite(TreeSetTests),
+ unittest.makeSuite(Test_difference),
+ unittest.makeSuite(Test_union),
+ unittest.makeSuite(Test_intersection),
))
More information about the checkins
mailing list