[Checkins] SVN: BTrees/branches/pure_python/ Coverage for BTrees._base.weightedUnion.
Tres Seaver
cvs-admin at zope.org
Tue Dec 4 02:16:21 UTC 2012
Log message for revision 128501:
Coverage for BTrees._base.weightedUnion.
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-04 02:16:20 UTC (rev 128500)
+++ BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-12-04 02:16:21 UTC (rev 128501)
@@ -2580,6 +2580,55 @@
self.assertEqual(list(result), ['c'])
+class Test_weightedUnion(unittest.TestCase, _SetObBase):
+
+ def _callFUT(self, *args, **kw):
+ from .._base import weightedUnion
+ return weightedUnion(*args, **kw)
+
+ def test_both_none(self):
+ self.assertEqual(self._callFUT(_Mapping, None, None), (0, None))
+
+ def test_lhs_none(self):
+ rhs = self._makeMapping({'a': 13, 'c': 12, 'e': 11})
+ self.assertEqual(self._callFUT(rhs.__class__, None, rhs), (1, rhs))
+
+ def test_rhs_none(self):
+ lhs = self._makeMapping({'a': 13, 'c': 12, 'e': 11})
+ self.assertEqual(self._callFUT(lhs.__class__, lhs, None), (1, lhs))
+
+ def test_lhs_mapping_rhs_set(self):
+ lhs = self._makeMapping({'a': 13, 'b': 12, 'c': 11})
+ rhs = self._makeSet('a', 'd')
+ weight, result = self._callFUT(lhs.__class__, lhs, rhs)
+ self.assertTrue(isinstance(result, _Mapping))
+ self.assertEqual(list(result), ['a', 'b', 'c', 'd'])
+ self.assertEqual(result['a'], 55)
+ self.assertEqual(result['b'], 12)
+ self.assertEqual(result['c'], 11)
+ self.assertEqual(result['d'], 42)
+
+ def test_both_mappings_rhs_empty(self):
+ lhs = self._makeMapping({'a': 13, 'b': 12, 'c': 11})
+ rhs = self._makeMapping({})
+ weight, result = self._callFUT(lhs.__class__, lhs, rhs)
+ self.assertEqual(list(result), ['a', 'b', 'c'])
+ self.assertEqual(result['a'], 13)
+ self.assertEqual(result['b'], 12)
+ self.assertEqual(result['c'], 11)
+
+ def test_both_mappings_rhs_non_empty(self):
+ lhs = self._makeMapping({'a': 13, 'c': 12, 'e': 11})
+ rhs = self._makeMapping({'a': 10, 'b': 22, 'd': 33})
+ weight, result = self._callFUT(lhs.__class__, lhs, rhs)
+ self.assertEqual(list(result), ['a', 'b', 'c', 'd', 'e'])
+ self.assertEqual(result['a'], 23)
+ self.assertEqual(result['b'], 22)
+ self.assertEqual(result['c'], 12)
+ self.assertEqual(result['d'], 33)
+ self.assertEqual(result['e'], 11)
+
+
class _Jar(object):
def __init__(self):
self._current = set()
@@ -2609,8 +2658,11 @@
for k, v in sorted(source.items()):
self._keys.append(k)
self._values.append(v)
+ MERGE_DEFAULT = 42
def MERGE_WEIGHT(self, v, w):
return v
+ def MERGE(self, v1, w1, v2, w2):
+ return v1 * w1 + v2 * w2
def iteritems(self):
for k, v in zip(self._keys, self._values):
yield k,v
@@ -2640,4 +2692,5 @@
unittest.makeSuite(Test_difference),
unittest.makeSuite(Test_union),
unittest.makeSuite(Test_intersection),
+ unittest.makeSuite(Test_weightedUnion),
))
More information about the checkins
mailing list