Rev 2258: Create __str__ and __repr__ forms which expose some internals. in http://bzr.arbash-meinel.com/branches/bzr/0.15-dev/list_patch

John Arbash Meinel john at arbash-meinel.com
Tue Jan 30 19:05:12 GMT 2007


At http://bzr.arbash-meinel.com/branches/bzr/0.15-dev/list_patch

------------------------------------------------------------
revno: 2258
revision-id: john at arbash-meinel.com-20070130190506-vurde2hqemerst4x
parent: john at arbash-meinel.com-20070130185517-0ky3r2iqnyytftak
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: list_patch
timestamp: Tue 2007-01-30 13:05:06 -0600
message:
  Create __str__ and __repr__ forms which expose some internals.
modified:
  bzrlib/hybrid_linked_list.py   hybrid_linked_list.p-20070130001028-zlexwz74tzo56o2t-1
  bzrlib/tests/test_hybrid_linked_list.py test_hybrid_linked_l-20070130001028-zlexwz74tzo56o2t-2
-------------- next part --------------
=== modified file 'bzrlib/hybrid_linked_list.py'
--- a/bzrlib/hybrid_linked_list.py	2007-01-30 18:55:17 +0000
+++ b/bzrlib/hybrid_linked_list.py	2007-01-30 19:05:06 +0000
@@ -162,6 +162,19 @@
                 pos = len(self) + pos
             self.delete(pos, pos+1)
 
+    def __str__(self):
+        """str(HybridLinkedList) just returns the list representation."""
+        return str(list(self))
+
+    def __repr__(self):
+        """repr(HybridLinkedList) gives more information about internals."""
+        flattened = []
+        cur = self._head
+        while cur is not None:
+            flattened.append('%s:%s' % (cur, self._ranges[cur]))
+            cur = self._links[cur]
+        return 'HybridLinkedList(' + ', '.join(flattened) + ')'
+
     def flatten(self):
         """Flatten the linked structure into a single list."""
         self._reset(list(self))

=== modified file 'bzrlib/tests/test_hybrid_linked_list.py'
--- a/bzrlib/tests/test_hybrid_linked_list.py	2007-01-30 18:55:17 +0000
+++ b/bzrlib/tests/test_hybrid_linked_list.py	2007-01-30 19:05:06 +0000
@@ -102,6 +102,32 @@
         self.assertEqual([], hll[20:])
         self.assertEqual([], hll[20:21])
 
+    def test__str__and__repr__(self):
+        hll = hybrid_linked_list.HybridLinkedList([0, 1, 2, 3, 4])
+        self.assertEqual('[0, 1, 2, 3, 4]', str(hll))
+        self.assertEqual('HybridLinkedList(0:(0, 5, [0, 1, 2, 3, 4]))',
+                         repr(hll))
+
+        hll[5:5] = [5, 6]
+        hll.insert(7, [7, 8])
+        self.assertEqual('[0, 1, 2, 3, 4, 5, 6, 7, 8]', str(hll))
+        self.assertEqual('HybridLinkedList(0:(0, 5, [0, 1, 2, 3, 4]),'
+                         ' 1:(0, 2, [5, 6]), 2:(0, 2, [7, 8]))',
+                         repr(hll))
+
+        del hll[5:7]
+        self.assertEqual('[0, 1, 2, 3, 4, 7, 8]', str(hll))
+        self.assertEqual('HybridLinkedList(0:(0, 5, [0, 1, 2, 3, 4]),'
+                         ' 2:(0, 2, [7, 8]))',
+                         repr(hll))
+        del hll[2:4]
+        self.assertEqual('[0, 1, 4, 7, 8]', str(hll))
+        self.assertEqual('HybridLinkedList(0:(0, 2, [0, 1, 2, 3, 4]),'
+                         ' 3:(4, 5, [0, 1, 2, 3, 4]),'
+                         ' 2:(0, 2, [7, 8]))',
+                         repr(hll))
+
+
     def test__setitem__(self):
         hll = hybrid_linked_list.HybridLinkedList([0, 1, 2, 3, 4, 5, 6, 7, 8])
         hll.delete(2, 3)



More information about the bazaar-commits mailing list