summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2004-10-28 04:49:21 (GMT)
committerBrett Cannon <bcannon@gmail.com>2004-10-28 04:49:21 (GMT)
commit14adbe77b5e9c68fb525d25961c86b5b0dbb1945 (patch)
treeaa9fb068f2eb493c434c8dc599aebcbb96d1f94a /Lib/test
parent79d9bfa28f66e031dbc252eabe78cd0aea081f06 (diff)
downloadcpython-14adbe77b5e9c68fb525d25961c86b5b0dbb1945.zip
cpython-14adbe77b5e9c68fb525d25961c86b5b0dbb1945.tar.gz
cpython-14adbe77b5e9c68fb525d25961c86b5b0dbb1945.tar.bz2
Fix bug of implementation of algorithm for calculating the date from year, week
of the year, and day of the week. Was not taking into consideration properly the issue of when %U is used for the week of the year but the year starts on Monday. Closes bug #1045381 again.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_strptime.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index bc68851..785497a 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -424,20 +424,35 @@ class CalculationTests(unittest.TestCase):
def test_helper(ymd_tuple, test_reason):
for directive in ('W', 'U'):
format_string = "%%Y %%%s %%w" % directive
- strp_input = datetime_date(*ymd_tuple).strftime(format_string)
+ dt_date = datetime_date(*ymd_tuple)
+ strp_input = dt_date.strftime(format_string)
strp_output = _strptime.strptime(strp_input, format_string)
self.failUnless(strp_output[:3] == ymd_tuple,
- "%s(%s) test failed w/ '%s': %s != %s" %
+ "%s(%s) test failed w/ '%s': %s != %s (%s != %s)" %
(test_reason, directive, strp_input,
- strp_output[:3], ymd_tuple[:3]))
+ strp_output[:3], ymd_tuple,
+ strp_output[7], dt_date.timetuple()[7]))
test_helper((1901, 1, 3), "week 0")
test_helper((1901, 1, 8), "common case")
test_helper((1901, 1, 13), "day on Sunday")
test_helper((1901, 1, 14), "day on Monday")
test_helper((1905, 1, 1), "Jan 1 on Sunday")
test_helper((1906, 1, 1), "Jan 1 on Monday")
+ test_helper((1906, 1, 7), "first Sunday in a year starting on Monday")
test_helper((1905, 12, 31), "Dec 31 on Sunday")
test_helper((1906, 12, 31), "Dec 31 on Monday")
+ test_helper((2008, 12, 29), "Monday in the last week of the year")
+ test_helper((2008, 12, 22), "Monday in the second-to-last week of the "
+ "year")
+ test_helper((1978, 10, 23), "randomly chosen date")
+ test_helper((2004, 12, 18), "randomly chosen date")
+ test_helper((1978, 10, 23), "year starting and ending on Monday while "
+ "date not on Sunday or Monday")
+ test_helper((1917, 12, 17), "year starting and ending on Monday with "
+ "a Monday not at the beginning or end "
+ "of the year")
+ test_helper((1917, 12, 31), "Dec 31 on Monday with year starting and "
+ "ending on Monday")
class CacheTests(unittest.TestCase):