[Checkins] SVN: BTrees/branches/pure_python/ Moar _p_resolveConflict coverage.
Tres Seaver
cvs-admin at zope.org
Mon Nov 12 22:48:42 UTC 2012
Log message for revision 128265:
Moar _p_resolveConflict 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-12 22:48:41 UTC (rev 128264)
+++ BTrees/branches/pure_python/BTrees/_base.py 2012-11-12 22:48:42 UTC (rev 128265)
@@ -145,7 +145,7 @@
has_key = __contains__
def _p_resolveConflict(self, *states):
- is_set = getattr(self, '_values', None) is None
+ is_set = getattr(self, '_values', self) is self
buckets = []
for state in states:
Modified: BTrees/branches/pure_python/BTrees/tests/test__base.py
===================================================================
--- BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-11-12 22:48:41 UTC (rev 128264)
+++ BTrees/branches/pure_python/BTrees/tests/test__base.py 2012-11-12 22:48:42 UTC (rev 128265)
@@ -362,15 +362,29 @@
for key in KEYS:
self.assertTrue(key in bucket)
- def _with_setstate(self):
+ def _with_setstate_set(self):
class _WithSetState(self._getTargetClass()):
def __setstate__(self, state):
self._keys, self._next = state
return _WithSetState()
+ def _with_setstate_bucket(self):
+ class _WithSetState(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 iteritems(self):
+ return iter(zip(self._keys, self._values))
+ return _WithSetState()
+
def test__p_resolveConflict_new_next(self):
from ..Interfaces import BTreesConflictError
- bucket = self._with_setstate()
+ bucket = self._with_setstate_set()
N_NEW = object()
s_old = ([], None)
s_com = ([], N_NEW)
@@ -381,7 +395,7 @@
def test__p_resolveConflict_committed_next(self):
from ..Interfaces import BTreesConflictError
- bucket = self._with_setstate()
+ bucket = self._with_setstate_set()
N_NEW = object()
s_old = ([], None)
s_com = ([], None)
@@ -392,7 +406,7 @@
def test__p_resolveConflict_empty_committed(self):
from ..Interfaces import BTreesConflictError
- bucket = self._with_setstate()
+ bucket = self._with_setstate_set()
s_old = ([], None)
s_com = ([], None)
s_new = (['a'], None)
@@ -402,7 +416,7 @@
def test__p_resolveConflict_empty_new(self):
from ..Interfaces import BTreesConflictError
- bucket = self._with_setstate()
+ bucket = self._with_setstate_set()
s_old = ([], None)
s_com = (['a'], None)
s_new = ([], None)
@@ -410,7 +424,47 @@
bucket._p_resolveConflict, s_old, s_com, s_new)
self.assertEqual(e.reason, 12)
+ def test__p_resolveConflict_delete_first_new_set(self):
+ from ..Interfaces import BTreesConflictError
+ bucket = self._with_setstate_set()
+ s_old = (['a','b'], None)
+ s_com = (['a','b','c'], None)
+ s_new = (['b'], None)
+ e = self.assertRaises(BTreesConflictError,
+ bucket._p_resolveConflict, s_old, s_com, s_new)
+ self.assertEqual(e.reason, 13)
+ def test__p_resolveConflict_delete_first_new_bucket(self):
+ from ..Interfaces import BTreesConflictError
+ bucket = self._with_setstate_bucket()
+ 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,
+ bucket._p_resolveConflict, s_old, s_com, s_new)
+ self.assertEqual(e.reason, 2)
+
+ def test__p_resolveConflict_delete_first_committed_set(self):
+ from ..Interfaces import BTreesConflictError
+ bucket = self._with_setstate_set()
+ s_old = (['a','b'], None)
+ s_com = (['b'], None)
+ s_new = (['a', 'b', 'c'], None)
+ e = self.assertRaises(BTreesConflictError,
+ bucket._p_resolveConflict, s_old, s_com, s_new)
+ self.assertEqual(e.reason, 13)
+
+ def test__p_resolveConflict_delete_first_committed_bucket(self):
+ from ..Interfaces import BTreesConflictError
+ bucket = self._with_setstate_bucket()
+ 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,
+ bucket._p_resolveConflict, s_old, s_com, s_new)
+ self.assertEqual(e.reason, 3)
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(Test_BucketBase),
More information about the checkins
mailing list