Rev 3825: Fix up the LeafNode direct tests, and add some tests with serialized in http://bzr.arbash-meinel.com/branches/bzr/brisbane/prefix

John Arbash Meinel john at arbash-meinel.com
Wed Jan 7 20:42:47 GMT 2009


At http://bzr.arbash-meinel.com/branches/bzr/brisbane/prefix

------------------------------------------------------------
revno: 3825
revision-id: john at arbash-meinel.com-20090107204228-v42oud9oqsmxcwpt
parent: john at arbash-meinel.com-20090107203540-qqb1nllc5dhwm81s
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: prefix
timestamp: Wed 2009-01-07 14:42:28 -0600
message:
  Fix up the LeafNode direct tests, and add some tests with serialized
  forms that include a common prefix.
-------------- next part --------------
=== modified file 'bzrlib/tests/test_chk_map.py'
--- a/bzrlib/tests/test_chk_map.py	2009-01-07 20:35:40 +0000
+++ b/bzrlib/tests/test_chk_map.py	2009-01-07 20:42:28 +0000
@@ -891,17 +891,17 @@
 
     def test_current_size_empty(self):
         node = LeafNode()
-        self.assertEqual(15, node._current_size())
+        self.assertEqual(16, node._current_size())
 
     def test_current_size_size_changed(self):
         node = LeafNode()
         node.set_maximum_size(10)
-        self.assertEqual(16, node._current_size())
+        self.assertEqual(17, node._current_size())
 
     def test_current_size_width_changed(self):
         node = LeafNode()
         node._key_width = 10
-        self.assertEqual(16, node._current_size())
+        self.assertEqual(17, node._current_size())
 
     def test_current_size_items(self):
         node = LeafNode()
@@ -910,21 +910,21 @@
         self.assertEqual(base_size + 12, node._current_size())
 
     def test_deserialise_empty(self):
-        node = LeafNode.deserialise("chkleaf:\n10\n1\n0\n", ("sha1:1234",))
+        node = LeafNode.deserialise("chkleaf:\n10\n1\n0\n\n", ("sha1:1234",))
         self.assertEqual(0, len(node))
         self.assertEqual(10, node.maximum_size)
         self.assertEqual(("sha1:1234",), node.key())
 
     def test_deserialise_items(self):
         node = LeafNode.deserialise(
-            "chkleaf:\n0\n1\n2\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
+            "chkleaf:\n0\n1\n2\n\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
         self.assertEqual(2, len(node))
         self.assertEqual([(("foo bar",), "baz"), (("quux",), "blarh")],
             sorted(node.iteritems(None)))
 
     def test_deserialise_item_with_null_width_1(self):
         node = LeafNode.deserialise(
-            "chkleaf:\n0\n1\n2\nfoo\x00bar\x00baz\nquux\x00blarh\n",
+            "chkleaf:\n0\n1\n2\n\nfoo\x00bar\x00baz\nquux\x00blarh\n",
             ("sha1:1234",))
         self.assertEqual(2, len(node))
         self.assertEqual([(("foo",), "bar\x00baz"), (("quux",), "blarh")],
@@ -932,7 +932,7 @@
 
     def test_deserialise_item_with_null_width_2(self):
         node = LeafNode.deserialise(
-            "chkleaf:\n0\n2\n2\nfoo\x001\x00bar\x00baz\nquux\x00\x00blarh\n",
+            "chkleaf:\n0\n2\n2\n\nfoo\x001\x00bar\x00baz\nquux\x00\x00blarh\n",
             ("sha1:1234",))
         self.assertEqual(2, len(node))
         self.assertEqual([(("foo", "1"), "bar\x00baz"), (("quux", ""), "blarh")],
@@ -940,23 +940,31 @@
 
     def test_iteritems_selected_one_of_two_items(self):
         node = LeafNode.deserialise(
-            "chkleaf:\n0\n1\n2\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
+            "chkleaf:\n0\n1\n2\n\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
         self.assertEqual(2, len(node))
         self.assertEqual([(("quux",), "blarh")],
             sorted(node.iteritems(None, [("quux",), ("qaz",)])))
 
+    def test_deserialise_item_with_common_prefix(self):
+        node = LeafNode.deserialise(
+            "chkleaf:\n0\n2\n2\nfoo\x00\n1\x00bar\x00baz\n2\x00blarh\n",
+            ("sha1:1234",))
+        self.assertEqual(2, len(node))
+        self.assertEqual([(("foo", "1"), "bar\x00baz"), (("foo", "2"), "blarh")],
+            sorted(node.iteritems(None)))
+
     def test_key_new(self):
         node = LeafNode()
         self.assertEqual(None, node.key())
 
     def test_key_after_map(self):
-        node = LeafNode.deserialise("chkleaf:\n10\n1\n0\n", ("sha1:1234",))
+        node = LeafNode.deserialise("chkleaf:\n10\n1\n0\n\n", ("sha1:1234",))
         node.map(None, ("foo bar",), "baz quux")
         self.assertEqual(None, node.key())
 
     def test_key_after_unmap(self):
         node = LeafNode.deserialise(
-            "chkleaf:\n0\n1\n2\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
+            "chkleaf:\n0\n1\n2\n\nfoo bar\x00baz\nquux\x00blarh\n", ("sha1:1234",))
         node.unmap(None, ("foo bar",))
         self.assertEqual(None, node.key())
 
@@ -1015,10 +1023,10 @@
         store = self.get_chk_bytes()
         node = LeafNode()
         node.set_maximum_size(10)
-        expected_key = ("sha1:62cc3565b48b0e830216e652cf99c6bd6b05b4b9",)
+        expected_key = ("sha1:f34c3f0634ea3f85953dffa887620c0a5b1f4a51",)
         self.assertEqual([expected_key],
             list(node.serialise(store)))
-        self.assertEqual("chkleaf:\n10\n1\n0\n", self.read_bytes(store, expected_key))
+        self.assertEqual("chkleaf:\n10\n1\n0\n\n", self.read_bytes(store, expected_key))
         self.assertEqual(expected_key, node.key())
 
     def test_serialise_items(self):
@@ -1026,10 +1034,11 @@
         node = LeafNode()
         node.set_maximum_size(10)
         node.map(None, ("foo bar",), "baz quux")
-        expected_key = ("sha1:d44cb6f0299b7e047da7f9e98f810e98f1dce1a7",)
+        expected_key = ("sha1:f98fcfe7d3fc59c29134a5d5438c896e57cefe6d",)
+        self.assertEqual('foo bar', node._common_serialised_prefix)
         self.assertEqual([expected_key],
             list(node.serialise(store)))
-        self.assertEqual("chkleaf:\n10\n1\n1\nfoo bar\x00baz quux\n",
+        self.assertEqual("chkleaf:\n10\n1\n1\nfoo bar\n\x00baz quux\n",
             self.read_bytes(store, expected_key))
         self.assertEqual(expected_key, node.key())
 



More information about the bazaar-commits mailing list