[Checkins] SVN: zope.index/trunk/src/zope/index/text/ 100% test coverage for zope.index.text.widcode module.

Tres Seaver tseaver at palladion.com
Thu Jun 11 00:49:40 EDT 2009


Log message for revision 100834:
  100% test coverage for zope.index.text.widcode module.

Changed:
  A   zope.index/trunk/src/zope/index/text/tests/test_widcode.py
  U   zope.index/trunk/src/zope/index/text/widcode.py

-=-
Added: zope.index/trunk/src/zope/index/text/tests/test_widcode.py
===================================================================
--- zope.index/trunk/src/zope/index/text/tests/test_widcode.py	                        (rev 0)
+++ zope.index/trunk/src/zope/index/text/tests/test_widcode.py	2009-06-11 04:49:40 UTC (rev 100834)
@@ -0,0 +1,110 @@
+##############################################################################
+#
+# Copyright (c) 2009 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Text Index Tests
+"""
+import unittest
+
+_marker = object()
+
+class Test_widcode(unittest.TestCase):
+
+    def test_encode_1_to_7_bits(self):
+        from zope.index.text.widcode import encode
+        for wid in xrange(2**7):
+            code = encode([wid])
+            self.assertEqual(code, chr(wid + 128))
+
+    def test_encode_8_to_14_bits(self):
+        from zope.index.text.widcode import encode
+        for wid in xrange(2**7, 2**14):
+            hi, lo = divmod(wid, 128)
+            code = encode([wid])
+            self.assertEqual(code, chr(hi + 128) + chr(lo))
+
+    def test_encode_15_to_21_bits(self):
+        from zope.index.text.widcode import encode
+        for wid in xrange(2**14, 2**21, 255):
+            mid, lo = divmod(wid, 128)
+            hi, mid = divmod(mid, 128)
+            code = encode([wid])
+            self.assertEqual(code, chr(hi + 128) + chr(mid) + chr(lo))
+
+    def test_encode_22_to_28_bits(self):
+        from zope.index.text.widcode import encode
+        STEP = (256 * 512) - 1
+        for wid in xrange(2**21, 2**28, STEP):
+            lmid, lo = divmod(wid, 128)
+            hmid, lmid = divmod(lmid, 128)
+            hi, hmid = divmod(hmid, 128)
+            code = encode([wid])
+            self.assertEqual(code,
+                             chr(hi + 128) + chr(hmid) + chr(lmid) + chr(lo))
+
+    def test_decode_zero(self):
+        from zope.index.text.widcode import decode
+        self.assertEqual(decode('\x80'), [0])
+
+    def test__decode_other_one_byte_asserts(self):
+        from zope.index.text.widcode import _decode
+        for wid in range(1, 128):
+            try:
+                _decode(chr(128 + wid))
+            except AssertionError:
+                pass
+            else:
+                self.fail("Didn't assert: %d" % wid)
+
+    def test__decode_two_bytes_asserts(self):
+        from zope.index.text.widcode import _decode
+        for wid in range(128, 2**14):
+            try:
+                hi, lo = divmod(wid, 128)
+                code = chr(hi + 128) + chr(lo)
+                _decode(code)
+            except AssertionError:
+                pass
+            else:
+                self.fail("Didn't assert: %d" % wid)
+
+    def test__decode_three_bytes(self):
+        from zope.index.text.widcode import _decode
+        for wid in range(2**14, 2**21, 247):
+            mid, lo = divmod(wid, 128)
+            hi, mid = divmod(mid, 128)
+            code = chr(hi + 128) + chr(mid) + chr(lo)
+            self.assertEqual(_decode(code), wid)
+
+    def test__decode_four_bytes(self):
+        from zope.index.text.widcode import _decode
+        STEP = (256 * 512) - 7
+        for wid in range(2**21, 2**28, STEP):
+            lmid, lo = divmod(wid, 128)
+            hmid, lmid = divmod(lmid, 128)
+            hi, hmid = divmod(hmid, 128)
+            code = chr(hi + 128) + chr(hmid) + chr(lmid) + chr(lo)
+            self.assertEqual(_decode(code), wid)
+
+    def test_symmetric(self):
+        from zope.index.text.widcode import decode
+        from zope.index.text.widcode import encode
+        for wid in xrange(2**28, 1117):
+            wids = [wid]
+            code = encode(wids)
+            self.assertEqual(decode(code), wids)
+
+def test_suite():
+    return unittest.TestSuite((
+                      unittest.makeSuite(Test_widcode),
+                    ))
+

Modified: zope.index/trunk/src/zope/index/text/widcode.py
===================================================================
--- zope.index/trunk/src/zope/index/text/widcode.py	2009-06-11 04:17:40 UTC (rev 100833)
+++ zope.index/trunk/src/zope/index/text/widcode.py	2009-06-11 04:49:40 UTC (rev 100834)
@@ -122,13 +122,3 @@
     _encoding = tuple(_encoding)
 
 _fill()
-
-def test():
-    for i in range(2**20):
-        if i % 1000 == 0: print i
-        wids = [i]
-        code = encode(wids)
-        assert decode(code) == wids, (wids, code, decode(code))
-
-if __name__ == "__main__":
-    test()



More information about the Checkins mailing list