[Checkins] SVN: zope.datetime/trunk/ Added test cases from LP #139360

Tres Seaver tseaver at palladion.com
Wed Apr 14 18:29:36 EDT 2010


Log message for revision 110918:
  Added test cases from LP #139360
  
  All 1638 passed without modification to the ``parse`` function.
  

Changed:
  A   zope.datetime/trunk/.bzrignore
  U   zope.datetime/trunk/CHANGES.txt
  A   zope.datetime/trunk/src/zope/datetime/tests/test_lp_139360.py

-=-
Added: zope.datetime/trunk/.bzrignore
===================================================================
--- zope.datetime/trunk/.bzrignore	                        (rev 0)
+++ zope.datetime/trunk/.bzrignore	2010-04-14 22:29:36 UTC (rev 110918)
@@ -0,0 +1,6 @@
+./.installed.cfg
+./bin
+./develop-eggs
+./eggs
+./parts
+*.egg-info

Modified: zope.datetime/trunk/CHANGES.txt
===================================================================
--- zope.datetime/trunk/CHANGES.txt	2010-04-14 21:25:25 UTC (rev 110917)
+++ zope.datetime/trunk/CHANGES.txt	2010-04-14 22:29:36 UTC (rev 110918)
@@ -4,7 +4,8 @@
 3.4.1 (unreleased)
 ------------------
 
-- ...
+- Added test cases from LP #139360 (all passed without modification to
+  the ``parse`` function).
 
 3.4.0 (2007-07-20)
 ------------------

Added: zope.datetime/trunk/src/zope/datetime/tests/test_lp_139360.py
===================================================================
--- zope.datetime/trunk/src/zope/datetime/tests/test_lp_139360.py	                        (rev 0)
+++ zope.datetime/trunk/src/zope/datetime/tests/test_lp_139360.py	2010-04-14 22:29:36 UTC (rev 110918)
@@ -0,0 +1,60 @@
+import unittest
+
+# The separator character:
+s = '-'
+
+# The sets of single digit days and months:
+D = [(d, repr(d)) for d in range(1, 10)]
+M = [(m, repr(m)) for m in range(1, 10)]
+
+# The sets of double digit days and months:
+DD = [(d, dr.rjust(2, '0')) for d, dr in D] + [(d, repr(d)) for d in range(10, 31)]
+MM = [(m, mr.rjust(2, '0')) for m, mr in M] + [(m, repr(m)) for m in range(10, 13)]
+
+# The set of years:
+YYYY = [(2001, '2001')]
+
+# The sets of mixed-endian date strings (where each string is stored with its component values):
+M_D_YYYY   = [((d, m, y), s.join([mr, dr, yr])) for d, dr in  D for m, mr in  M for y, yr in YYYY]
+M_DD_YYYY  = [((d, m, y), s.join([mr, dr, yr])) for d, dr in DD for m, mr in  M for y, yr in YYYY]
+MM_D_YYYY  = [((d, m, y), s.join([mr, dr, yr])) for d, dr in  D for m, mr in MM for y, yr in YYYY]
+MM_DD_YYYY = [((d, m, y), s.join([mr, dr, yr])) for d, dr in DD for m, mr in MM for y, yr in YYYY]
+
+# The sets of big-endian date strings (where each string is stored with its component values):
+YYYY_M_D   = [((d, m, y), s.join([yr, mr, dr])) for d, dr in  D for m, mr in  M for y, yr in YYYY]
+YYYY_M_DD  = [((d, m, y), s.join([yr, mr, dr])) for d, dr in DD for m, mr in  M for y, yr in YYYY]
+YYYY_MM_D  = [((d, m, y), s.join([yr, mr, dr])) for d, dr in  D for m, mr in MM for y, yr in YYYY]
+YYYY_MM_DD = [((d, m, y), s.join([yr, mr, dr])) for d, dr in DD for m, mr in MM for y, yr in YYYY]
+
+# The combined sets of mixed- and big-endian date strings:
+dates_ME = M_D_YYYY + M_DD_YYYY + MM_D_YYYY + MM_DD_YYYY
+dates_BE = YYYY_M_D + YYYY_M_DD + YYYY_MM_D + YYYY_MM_DD
+
+# The set of all date strings:
+dates = dates_ME + dates_BE
+
+class LP_139360(unittest.TestCase):
+
+    def _callFUT(self, text):
+        from zope.datetime import parse
+        return parse(text)
+
+
+# For each date string, compare the output of the
+# parser with the component values of that date:
+for i, ((d, m, y), string) in enumerate(dates):
+    method_name = 'test_%09d' % i
+    def _test(self):
+        yp, mp, dp, _, _, _, _ = self._callFUT(string)
+        self.assertEqual(y, yp)
+        self.assertEqual(m, mp)
+        self.assertEqual(d, dp)
+
+    _test.__name__ = method_name
+    setattr(LP_139360, method_name, _test)
+
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(LP_139360),
+    ))



More information about the checkins mailing list