[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