[Checkins] SVN: BTrees/branches/pure_python/ Coverage.
Tres Seaver
cvs-admin at zope.org
Wed Nov 14 23:13:07 UTC 2012
Log message for revision 128295:
Coverage.
Changed:
_U BTrees/branches/pure_python/
U BTrees/branches/pure_python/BTrees/_base.py
U BTrees/branches/pure_python/BTrees/tests/test__base.py
-=-
Modified: BTrees/branches/pure_python/BTrees/_base.py
===================================================================
--- BTrees/branches/pure_python/BTrees/_base.py 2012-11-14 23:13:06 UTC (rev 128294)
+++ BTrees/branches/pure_python/BTrees/_base.py 2012-11-14 23:13:07 UTC (rev 128295)
@@ -187,19 +187,23 @@
class Bucket(_BucketBase):
_value_type = list
- _to_value = lambda x: x
+ _to_value = lambda self, x: x
VALUE_SAME_CHECK = False
def setdefault(self, key, value):
- return self._set(self._to_key(key), self._to_value(value), True)[1]
+ key, value = self._to_key(key), self._to_value(value)
+ status, value = self._set(key, value, True)
+ return value
def pop(self, key, default=_marker):
try:
- return self._del(self._to_key(key))[1]
+ status, value = self._del(self._to_key(key))
except KeyError:
if default is _marker:
raise
return default
+ else:
+ return value
def update(self, items):
if hasattr(items, 'iteritems'):
@@ -207,9 +211,9 @@
elif hasattr(items, 'items'):
items = items.items()
- set = self.__setitem__
- for i in items:
- set(*i)
+ _si = self.__setitem__
+ for key, value in items:
+ _si(key, value)
def __setitem__(self, key, value):
# Enforce test that key has non-default comparison.
Modified: BTrees/branches/pure_python/BTrees/tests/test__base.py
===================================================================
--- BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-11-14 23:13:06 UTC (rev 128294)
+++ BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-11-14 23:13:07 UTC (rev 128295)
@@ -423,27 +423,138 @@
return Bucket
def _makeOne(self):
- class _TestMapping(self._getTargetClass()):
- _values = None
- def __setstate__(self, state):
- state, self._next = state
- self._keys = []
- self._values = []
- for i in range(len(state) // 2):
- self._keys.append(state[i])
- self._values.append(state[i+1])
- def clear(self):
- self._keys, self._values, self._next = [], [], None
- def iteritems(self):
- return iter(zip(self._keys, self._values))
- return _TestMapping()
+ return self._getTargetClass()()
+ def test_ctor_defaults(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ self.assertEqual(bucket._keys, [])
+ self.assertEqual(bucket._values, [])
+
+ def test_setdefault_miss(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ self.assertEqual(bucket.setdefault('a', 'b'), 'b')
+ self.assertEqual(bucket._keys, ['a'])
+ self.assertEqual(bucket._values, ['b'])
+
+ def test_setdefault_hit(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket._keys.append('a')
+ bucket._values.append('b')
+ self.assertEqual(bucket.setdefault('a', 'b'), 'b')
+ self.assertEqual(bucket._keys, ['a'])
+ self.assertEqual(bucket._values, ['b'])
+
+ def test_pop_miss_no_default(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ self.assertRaises(KeyError, bucket.pop, 'nonesuch')
+
+ def test_pop_miss_w_default(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ self.assertEqual(bucket.pop('nonesuch', 'b'), 'b')
+
+ def test_pop_hit(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket._keys.append('a')
+ bucket._values.append('b')
+ self.assertEqual(bucket.pop('a'), 'b')
+ self.assertEqual(bucket._keys, [])
+ self.assertEqual(bucket._values, [])
+
+ def test_update_value_w_iteritems(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket.update({'a': 'b'})
+ self.assertEqual(bucket._keys, ['a'])
+ self.assertEqual(bucket._values, ['b'])
+
+ def test_update_value_w_items(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ class Foo(object):
+ def items(self):
+ return [('a', 'b')]
+ bucket.update(Foo())
+ self.assertEqual(bucket._keys, ['a'])
+ self.assertEqual(bucket._values, ['b'])
+
+ def test_update_sequence(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket.update([('a', 'b')])
+ self.assertEqual(bucket._keys, ['a'])
+ self.assertEqual(bucket._values, ['b'])
+
+ def test___setitem___incomparable(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ def _should_error():
+ bucket[object()] = 'b'
+ self.assertRaises(TypeError, _should_error)
+
+ def test___setitem___comparable(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket['a'] = 'b'
+
+ def test___delitem___miss(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ def _should_error():
+ del bucket['nonesuch']
+ self.assertRaises(KeyError, _should_error)
+
+ def test___delitem___hit(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket._keys.append('a')
+ bucket._values.append('b')
+ del bucket['a']
+ self.assertEqual(bucket._keys, [])
+ self.assertEqual(bucket._values, [])
+
+ def test_get_miss_no_default(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ self.assertEqual(bucket.get('nonesuch'), None)
+
+ def test_get_miss_w_default(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ self.assertEqual(bucket.get('nonesuch', 'b'), 'b')
+
+ def test_get_hit(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket._keys.append('a')
+ bucket._values.append('b')
+ self.assertEqual(bucket.get('a'), 'b')
+
+ def test___getitem___miss(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ def _should_error():
+ return bucket['nonesuch']
+ self.assertRaises(KeyError, _should_error)
+
+ def test___getitem___hit(self):
+ bucket = self._makeOne()
+ bucket._to_key = lambda x: x
+ bucket._keys.append('a')
+ bucket._values.append('b')
+ self.assertEqual(bucket['a'], 'b')
+
def test__p_resolveConflict_delete_first_new(self):
from ..Interfaces import BTreesConflictError
_mapping = self._makeOne()
- s_old = (['a', 0, 'b', 1], None)
- s_com = (['a', 1, 'b', 2, 'c', 3], None)
- s_new = (['b', 4], None)
+ s_old = (('a', 0, 'b', 1), None)
+ s_com = (('a', 1, 'b', 2, 'c', 3), None)
+ s_new = (('b', 4), None)
e = self.assertRaises(BTreesConflictError,
_mapping._p_resolveConflict, s_old, s_com, s_new)
self.assertEqual(e.reason, 2)
@@ -451,9 +562,9 @@
def test__p_resolveConflict_delete_first_committed(self):
from ..Interfaces import BTreesConflictError
_mapping = self._makeOne()
- s_old = (['a', 0, 'b', 1], None)
- s_com = (['b', 4], None)
- s_new = (['a', 1, 'b', 2, 'c', 3], None)
+ s_old = (('a', 0, 'b', 1), None)
+ s_com = (('b', 4), None)
+ s_new = (('a', 1, 'b', 2, 'c', 3), None)
e = self.assertRaises(BTreesConflictError,
_mapping._p_resolveConflict, s_old, s_com, s_new)
self.assertEqual(e.reason, 3)
More information about the checkins
mailing list