annotate test/test_dates.py @ 5548:fea11d05110e

Avoid errors from selecting "no selection" on multilink (issue2550722). As discussed in issue 2550722 there are various cases where selecting "no selection" on a multilink can result in inappropriate errors from Roundup: * If selecting "no selection" produces a null edit (a value was set in the multilink in an edit with an error, then removed again, along with all other changes, in the next form submission), so the page is rendered from the form contents including the "-<id>" value for "no selection" for the multilink. * If creating an item with a nonempty value for a multilink has an error, and the resubmission changes that multilink to "no selection" (and this in turn has subcases, according to whether the creation then succeeds or fails on the resubmission, which need fixes in different places in the Roundup code). All of these cases have in common that it is expected and OK to have a "-<id>" value for a submission for a multilink when <id> is not set in that multilink in the database (because the original attempt to set <id> in that multilink had an error), so the hyperdb.py logic to give an error in that case is thus removed. In the subcase of the second case where the resubmission with "no selection" has an error, the templating code tries to produce a menu entry for the "-<id>" multilink value, which also results in an error, hence the templating.py change to ignore such values in the list for a multilink.
author Joseph Myers <jsm@polyomino.org.uk>
date Thu, 27 Sep 2018 11:33:01 +0000
parents 64c4e43fbb84
children db429c75caec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
1 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
4 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
5 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
6 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
11 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 134
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
2980
e28f047f87fa Interval.from_seconds() produces a buggy output with float argument
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2702
diff changeset
17 #
3824
a5fb7698439d remove some try:/import statements caught by alexander smishlajev
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3822
diff changeset
18 import unittest
a5fb7698439d remove some try:/import statements caught by alexander smishlajev
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3822
diff changeset
19 import time
a5fb7698439d remove some try:/import statements caught by alexander smishlajev
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3822
diff changeset
20 import datetime
3953
78dc9b275aeb New tests for range searching by specifying just a month.
Richard Jones <richard@users.sourceforge.net>
parents: 3952
diff changeset
21 import calendar
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
23 import pytest
4407
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
24 from roundup import date, i18n
3953
78dc9b275aeb New tests for range searching by specifying just a month.
Richard Jones <richard@users.sourceforge.net>
parents: 3952
diff changeset
25 from roundup.date import Date, Interval, Range, fixTimeOverflow, \
3954
3d5a0a949107 Fix granularity stuff so it handles wrapping a lot better.
Richard Jones <richard@users.sourceforge.net>
parents: 3953
diff changeset
26 get_timezone
3953
78dc9b275aeb New tests for range searching by specifying just a month.
Richard Jones <richard@users.sourceforge.net>
parents: 3952
diff changeset
27
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
28 try:
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
29 import pytz
5038
c977f3530944 Work-around for pytest.mark.skipif() bug
John Kristensen <john@jerrykan.com>
parents: 5037
diff changeset
30 skip_pytz = lambda func, *args, **kwargs: func
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
31 except ImportError:
5109
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents: 5105
diff changeset
32 # FIX: workaround for a bug in pytest.mark.skip():
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents: 5105
diff changeset
33 # https://github.com/pytest-dev/pytest/issues/568
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents: 5105
diff changeset
34 from .pytest_patcher import mark_class
43a1f7fe39f5 Improved work-around for pytest markers bug
John Kristensen <john@jerrykan.com>
parents: 5105
diff changeset
35 skip_pytz = mark_class(pytest.mark.skip(reason="'pytz' not installed"))
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
36
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 class DateTestCase(unittest.TestCase):
4407
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
39 def setUp(self):
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
40 self.old_gettext_ = i18n.gettext
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
41 self.old_ngettext_ = i18n.ngettext
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
42 i18n.gettext = i18n.get_translation(language='C').gettext
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
43 i18n.ngettext = i18n.get_translation(language='C').ngettext
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
44
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
45 def tearDown(self):
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
46 i18n.gettext = self.old_gettext_
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
47 i18n.ngettext = self.old_ngettext_
3953
78dc9b275aeb New tests for range searching by specifying just a month.
Richard Jones <richard@users.sourceforge.net>
parents: 3952
diff changeset
48
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 def testDateInterval(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
50 ae = self.assertEqual
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 date = Date("2000-06-26.00:34:02 + 2d")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
52 ae(str(date), '2000-06-28.00:34:02')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 date = Date("2000-02-27 + 2d")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
54 ae(str(date), '2000-02-29.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 date = Date("2001-02-27 + 2d")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
56 ae(str(date), '2001-03-01.00:00:00')
4072
d5e2767d4e91 Robustify Date.set.
Stefan Seefeld <stefan@seefeld.name>
parents: 3973
diff changeset
57 date = Date("2009", add_granularity=True)
d5e2767d4e91 Robustify Date.set.
Stefan Seefeld <stefan@seefeld.name>
parents: 3973
diff changeset
58 self.assertRaises(ValueError, Date, ". +30d", add_granularity=True)
d5e2767d4e91 Robustify Date.set.
Stefan Seefeld <stefan@seefeld.name>
parents: 3973
diff changeset
59
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 def testDate(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
61 ae = self.assertEqual
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 date = Date("2000-04-17")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
63 ae(str(date), '2000-04-17.00:00:00')
1537
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
64 date = Date("2000/04/17")
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
65 ae(str(date), '2000-04-17.00:00:00')
543
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 225
diff changeset
66 date = Date("2000-4-7")
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 225
diff changeset
67 ae(str(date), '2000-04-07.00:00:00')
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 225
diff changeset
68 date = Date("2000-4-17")
22e0edf7da6e lots of date/interval related changes: more relaxed date format for input
Richard Jones <richard@users.sourceforge.net>
parents: 225
diff changeset
69 ae(str(date), '2000-04-17.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 date = Date("01-25")
225
49748e59852a fixed a 2.1-ism
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
71 y, m, d, x, x, x, x, x, x = time.gmtime(time.time())
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
72 ae(str(date), '%s-01-25.00:00:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 date = Date("2000-04-17.03:45")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
74 ae(str(date), '2000-04-17.03:45:00')
1537
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
75 date = Date("2000/04/17.03:45")
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
76 ae(str(date), '2000-04-17.03:45:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 date = Date("08-13.22:13")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
78 ae(str(date), '%s-08-13.22:13:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 date = Date("11-07.09:32:43")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
80 ae(str(date), '%s-11-07.09:32:43'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 date = Date("14:25")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
82 ae(str(date), '%s-%02d-%02d.14:25:00'%(y, m, d))
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 date = Date("8:47:11")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
84 ae(str(date), '%s-%02d-%02d.08:47:11'%(y, m, d))
1599
cc96bf971b33 extended date syntax to make range searches even more useful
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1597
diff changeset
85 ae(str(Date('2003')), '2003-01-01.00:00:00')
cc96bf971b33 extended date syntax to make range searches even more useful
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1597
diff changeset
86 ae(str(Date('2004-06')), '2004-06-01.00:00:00')
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
87 ae(str(Date('1900-02-01')), '1900-02-01.00:00:00')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
88 ae(str(Date('1800-07-15')), '1800-07-15.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89
3973
85cbaa50eba1 xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents: 3954
diff changeset
90 def testLeapYear(self):
85cbaa50eba1 xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents: 3954
diff changeset
91 self.assertEquals(str(Date('2008-02-29')), '2008-02-29.00:00:00')
85cbaa50eba1 xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents: 3954
diff changeset
92
1535
26f29449c494 fixed detection of bad date specs [SF#691439]
Richard Jones <richard@users.sourceforge.net>
parents: 1505
diff changeset
93 def testDateError(self):
26f29449c494 fixed detection of bad date specs [SF#691439]
Richard Jones <richard@users.sourceforge.net>
parents: 1505
diff changeset
94 self.assertRaises(ValueError, Date, "12")
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
95 # Date cannot handle dates before year 1
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
96 self.assertRaises(ValueError, Date, (0, 1, 1, 0, 0, 0.0, 0, 1, -1))
3456
9c080e19f307 tighten up Date parsing to not allow 'M/D/YY' (or 'D/M/YY) [SF#1290550]
Richard Jones <richard@users.sourceforge.net>
parents: 3208
diff changeset
97 self.assertRaises(ValueError, Date, "1/1/06")
1535
26f29449c494 fixed detection of bad date specs [SF#691439]
Richard Jones <richard@users.sourceforge.net>
parents: 1505
diff changeset
98
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 def testOffset(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
100 ae = self.assertEqual
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
101 date = Date("2000-04-17", -5)
1466
0c3546479b52 time should default to local midnight, not GMT
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1361
diff changeset
102 ae(str(date), '2000-04-17.05:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 date = Date("01-25", -5)
225
49748e59852a fixed a 2.1-ism
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
104 y, m, d, x, x, x, x, x, x = time.gmtime(time.time())
1466
0c3546479b52 time should default to local midnight, not GMT
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1361
diff changeset
105 ae(str(date), '%s-01-25.05:00:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106 date = Date("2000-04-17.03:45", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
107 ae(str(date), '2000-04-17.08:45:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 date = Date("08-13.22:13", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
109 ae(str(date), '%s-08-14.03:13:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
110 date = Date("11-07.09:32:43", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
111 ae(str(date), '%s-11-07.14:32:43'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112 date = Date("14:25", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
113 ae(str(date), '%s-%02d-%02d.19:25:00'%(y, m, d))
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 date = Date("8:47:11", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
115 ae(str(date), '%s-%02d-%02d.13:47:11'%(y, m, d))
640
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
116
3586
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
117 # just make sure we parse these, m'kay?
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
118 date = Date('-1d')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
119 date = Date('-1w')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
120 date = Date('-1m')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
121 date = Date('-1y')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
122
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
123 def testOffsetRandom(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
124 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
125 # XXX unsure of the usefulness of these, they're pretty random
640
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
126 date = Date('2000-01-01') + Interval('- 2y 2m')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
127 ae(str(date), '1997-11-01.00:00:00')
861
68cef2bb929d fixed the date module so that Date(". - 2d") works
Richard Jones <richard@users.sourceforge.net>
parents: 641
diff changeset
128 date = Date('2000-01-01 - 2y 2m')
68cef2bb929d fixed the date module so that Date(". - 2d") works
Richard Jones <richard@users.sourceforge.net>
parents: 641
diff changeset
129 ae(str(date), '1997-11-01.00:00:00')
641
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
130 date = Date('2000-01-01') + Interval('2m')
640
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
131 ae(str(date), '2000-03-01.00:00:00')
861
68cef2bb929d fixed the date module so that Date(". - 2d") works
Richard Jones <richard@users.sourceforge.net>
parents: 641
diff changeset
132 date = Date('2000-01-01 + 2m')
68cef2bb929d fixed the date module so that Date(". - 2d") works
Richard Jones <richard@users.sourceforge.net>
parents: 641
diff changeset
133 ae(str(date), '2000-03-01.00:00:00')
640
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
134
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
135 date = Date('2000-01-01') + Interval('60d')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
136 ae(str(date), '2000-03-01.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
137 date = Date('2001-01-01') + Interval('60d')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
138 ae(str(date), '2001-03-02.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
139
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
140 def testOffsetAdd(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
141 ae = self.assertEqual
640
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
142 date = Date('2000-02-28.23:59:59') + Interval('00:00:01')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
143 ae(str(date), '2000-02-29.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
144 date = Date('2001-02-28.23:59:59') + Interval('00:00:01')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
145 ae(str(date), '2001-03-01.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
146
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
147 date = Date('2000-02-28.23:58:59') + Interval('00:01:01')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
148 ae(str(date), '2000-02-29.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
149 date = Date('2001-02-28.23:58:59') + Interval('00:01:01')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
150 ae(str(date), '2001-03-01.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
151
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
152 date = Date('2000-02-28.22:58:59') + Interval('01:01:01')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
153 ae(str(date), '2000-02-29.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
154 date = Date('2001-02-28.22:58:59') + Interval('01:01:01')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
155 ae(str(date), '2001-03-01.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
156
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
157 date = Date('2000-02-28.22:58:59') + Interval('00:00:3661')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
158 ae(str(date), '2000-02-29.00:00:00')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
159 date = Date('2001-02-28.22:58:59') + Interval('00:00:3661')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
160 ae(str(date), '2001-03-01.00:00:00')
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
161 date = Date('2001-03-01.00:00:00') + Interval('150y')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
162 ae(str(date), '2151-03-01.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
163
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
164 def testOffsetSub(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
165 ae = self.assertEqual
1941
bcc65c5b86e6 fixed date arithmetic to not allow day-of-month == 0 [SF#853306]
Richard Jones <richard@users.sourceforge.net>
parents: 1930
diff changeset
166 date = Date('2000-12-01') - Interval('- 1d')
bcc65c5b86e6 fixed date arithmetic to not allow day-of-month == 0 [SF#853306]
Richard Jones <richard@users.sourceforge.net>
parents: 1930
diff changeset
167
641
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
168 date = Date('2000-01-01') - Interval('- 2y 2m')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
169 ae(str(date), '2002-03-01.00:00:00')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
170 date = Date('2000-01-01') - Interval('2m')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
171 ae(str(date), '1999-11-01.00:00:00')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
172
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
173 date = Date('2000-03-01') - Interval('60d')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
174 ae(str(date), '2000-01-01.00:00:00')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
175 date = Date('2001-03-02') - Interval('60d')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
176 ae(str(date), '2001-01-01.00:00:00')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
177
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
178 date = Date('2000-02-29.00:00:00') - Interval('00:00:01')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
179 ae(str(date), '2000-02-28.23:59:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
180 date = Date('2001-03-01.00:00:00') - Interval('00:00:01')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
181 ae(str(date), '2001-02-28.23:59:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
182
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
183 date = Date('2000-02-29.00:00:00') - Interval('00:01:01')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
184 ae(str(date), '2000-02-28.23:58:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
185 date = Date('2001-03-01.00:00:00') - Interval('00:01:01')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
186 ae(str(date), '2001-02-28.23:58:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
187
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
188 date = Date('2000-02-29.00:00:00') - Interval('01:01:01')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
189 ae(str(date), '2000-02-28.22:58:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
190 date = Date('2001-03-01.00:00:00') - Interval('01:01:01')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
191 ae(str(date), '2001-02-28.22:58:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
192
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
193 date = Date('2000-02-29.00:00:00') - Interval('00:00:3661')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
194 ae(str(date), '2000-02-28.22:58:59')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
195 date = Date('2001-03-01.00:00:00') - Interval('00:00:3661')
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
196 ae(str(date), '2001-02-28.22:58:59')
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
197 date = Date('2001-03-01.00:00:00') - Interval('150y')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
198 ae(str(date), '1851-03-01.00:00:00')
641
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
199
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
200 def testDateLocal(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
201 ae = self.assertEqual
1318
46a1951fdb14 fix Date.local()
Richard Jones <richard@users.sourceforge.net>
parents: 1268
diff changeset
202 date = Date("02:42:20")
46a1951fdb14 fix Date.local()
Richard Jones <richard@users.sourceforge.net>
parents: 1268
diff changeset
203 date = date.local(10)
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
204 y, m, d, x, x, x, x, x, x = time.gmtime(time.time())
1318
46a1951fdb14 fix Date.local()
Richard Jones <richard@users.sourceforge.net>
parents: 1268
diff changeset
205 ae(str(date), '%s-%02d-%02d.12:42:20'%(y, m, d))
46a1951fdb14 fix Date.local()
Richard Jones <richard@users.sourceforge.net>
parents: 1268
diff changeset
206
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
207 def testIntervalInit(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
208 ae = self.assertEqual
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
209 ae(str(Interval('3y')), '+ 3y')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
210 ae(str(Interval('2 y 1 m')), '+ 2y 1m')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
211 ae(str(Interval('1m 25d')), '+ 1m 25d')
134
d3ffcf862fb7 Fixed bug in unit test ;)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
212 ae(str(Interval('-2w 3 d ')), '- 17d')
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
213 ae(str(Interval(' - 1 d 2:50 ')), '- 1d 2:50')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
214 ae(str(Interval(' 14:00 ')), '+ 14:00')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
215 ae(str(Interval(' 0:04:33 ')), '+ 0:04:33')
2982
22f16d0646ce oops! error in recently added test
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2980
diff changeset
216 ae(str(Interval(8.*3600)), '+ 8:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
217
1537
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
218 def testIntervalInitDate(self):
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
219 ae = self.assertEqual
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
220 now = Date('.')
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
221 now.hour = now.minute = now.second = 0
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
222 then = now + Interval('2d')
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
223 ae((Interval(str(then))), Interval('- 2d'))
1537
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
224 then = now - Interval('2d')
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
225 ae(Interval(str(then)), Interval('+ 2d'))
1537
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
226
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
227 def testIntervalAddMonthBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
228 # force the transition over a month boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
229 now = Date('2003-10-30.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
230 then = now + Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
231 self.assertEqual(str(then), '2003-11-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
232 now = Date('2004-02-28.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
233 then = now + Interval('1d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
234 self.assertEqual(str(then), '2004-02-29.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
235 now = Date('2003-02-28.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
236 then = now + Interval('1d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
237 self.assertEqual(str(then), '2003-03-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
238 now = Date('2003-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
239 then = now + Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
240 self.assertEqual(str(then), '2003-03-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
241 now = Date('2004-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
242 then = now + Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
243 self.assertEqual(str(then), '2004-02-29.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
244
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
245 def testIntervalSubtractMonthBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
246 # force the transition over a month boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
247 now = Date('2003-11-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
248 then = now - Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
249 self.assertEqual(str(then), '2003-10-30.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
250 now = Date('2004-02-29.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
251 then = now - Interval('1d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
252 self.assertEqual(str(then), '2004-02-28.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
253 now = Date('2003-03-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
254 then = now - Interval('1d')
1885
deba54ed724f Date arithmetic fixes.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1884
diff changeset
255 self.assertEqual(str(then), '2003-02-28.00:00:00')
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
256 now = Date('2003-03-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
257 then = now - Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
258 self.assertEqual(str(then), '2003-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
259 now = Date('2004-02-29.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
260 then = now - Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
261 self.assertEqual(str(then), '2004-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
262
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
263 def testIntervalAddYearBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
264 # force the transition over a year boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
265 now = Date('2003-12-30.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
266 then = now + Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
267 self.assertEqual(str(then), '2004-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
268 now = Date('2003-01-01.00:00:00')
1885
deba54ed724f Date arithmetic fixes.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1884
diff changeset
269 then = now + Interval('365d')
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
270 self.assertEqual(str(then), '2004-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
271 now = Date('2004-01-01.00:00:00')
1885
deba54ed724f Date arithmetic fixes.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1884
diff changeset
272 then = now + Interval('366d')
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
273 self.assertEqual(str(then), '2005-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
274
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
275 def testIntervalSubtractYearBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
276 # force the transition over a year boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
277 now = Date('2003-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
278 then = now - Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
279 self.assertEqual(str(then), '2002-12-30.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
280 now = Date('2004-02-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
281 then = now - Interval('365d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
282 self.assertEqual(str(then), '2003-02-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
283 now = Date('2005-02-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
284 then = now - Interval('365d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
285 self.assertEqual(str(then), '2004-02-02.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
286
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
287 def testDateSubtract(self):
1886
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
288 # These are thoroughly broken right now.
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
289 i = Date('2003-03-15.00:00:00') - Date('2003-03-10.00:00:00')
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
290 self.assertEqual(i, Interval('5d'))
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
291 i = Date('2003-02-01.00:00:00') - Date('2003-03-01.00:00:00')
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
292 self.assertEqual(i, Interval('-28d'))
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
293 i = Date('2003-03-01.00:00:00') - Date('2003-02-01.00:00:00')
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
294 self.assertEqual(i, Interval('28d'))
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
295 i = Date('2003-03-03.00:00:00') - Date('2003-02-01.00:00:00')
1886
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
296 self.assertEqual(i, Interval('30d'))
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
297 i = Date('2003-03-03.00:00:00') - Date('2002-02-01.00:00:00')
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
298 self.assertEqual(i, Interval('395d'))
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
299 i = Date('2003-03-03.00:00:00') - Date('2003-04-01.00:00:00')
1886
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
300 self.assertEqual(i, Interval('-29d'))
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
301 i = Date('2003-03-01.00:00:00') - Date('2003-02-01.00:00:00')
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
302 self.assertEqual(i, Interval('28d'))
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
303 # force the transition over a year boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
304 i = Date('2003-01-01.00:00:00') - Date('2002-01-01.00:00:00')
1886
e3cff1bb1b86 more tests for date difference. Completely broken code right now.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1885
diff changeset
305 self.assertEqual(i, Interval('365d'))
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
306 i = Date('1952-01-01') - Date('1953-01-01')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
307 self.assertEqual(i, Interval('-366d'))
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
308 i = Date('1953-01-01') - Date('1952-01-01')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
309 self.assertEqual(i, Interval('366d'))
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
310
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
311 def testIntervalAdd(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
312 ae = self.assertEqual
1268
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
313 ae(str(Interval('1y') + Interval('1y')), '+ 2y')
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
314 ae(str(Interval('1y') + Interval('1m')), '+ 1y 1m')
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
315 ae(str(Interval('1y') + Interval('2:40')), '+ 1y 2:40')
2217
98d3bf8ffb19 store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents: 1941
diff changeset
316 ae(str(Interval('1y') + Interval('- 1y')), '00:00')
98d3bf8ffb19 store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents: 1941
diff changeset
317 ae(str(Interval('- 1y') + Interval('1y')), '00:00')
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
318 ae(str(Interval('- 1y') + Interval('- 1y')), '- 2y')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
319 ae(str(Interval('1y') + Interval('- 1m')), '+ 11m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
320 ae(str(Interval('1:00') + Interval('1:00')), '+ 2:00')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
321 ae(str(Interval('0:50') + Interval('0:50')), '+ 1:40')
2217
98d3bf8ffb19 store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents: 1941
diff changeset
322 ae(str(Interval('1:50') + Interval('- 1:50')), '00:00')
98d3bf8ffb19 store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents: 1941
diff changeset
323 ae(str(Interval('- 1:50') + Interval('1:50')), '00:00')
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
324 ae(str(Interval('- 1:50') + Interval('- 1:50')), '- 3:40')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
325 ae(str(Interval('1:59:59') + Interval('00:00:01')), '+ 2:00')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
326 ae(str(Interval('2:00') + Interval('- 00:00:01')), '+ 1:59:59')
1268
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
327
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
328 def testIntervalSub(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
329 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
330 ae(str(Interval('1y') - Interval('- 1y')), '+ 2y')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
331 ae(str(Interval('1y') - Interval('- 1m')), '+ 1y 1m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
332 ae(str(Interval('1y') - Interval('- 2:40')), '+ 1y 2:40')
2217
98d3bf8ffb19 store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents: 1941
diff changeset
333 ae(str(Interval('1y') - Interval('1y')), '00:00')
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
334 ae(str(Interval('1y') - Interval('1m')), '+ 11m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
335 ae(str(Interval('1:00') - Interval('- 1:00')), '+ 2:00')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
336 ae(str(Interval('0:50') - Interval('- 0:50')), '+ 1:40')
2217
98d3bf8ffb19 store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents: 1941
diff changeset
337 ae(str(Interval('1:50') - Interval('1:50')), '00:00')
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
338 ae(str(Interval('1:59:59') - Interval('- 00:00:01')), '+ 2:00')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
339 ae(str(Interval('2:00') - Interval('00:00:01')), '+ 1:59:59')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
340
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
341 def testOverflow(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
342 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
343 ae(fixTimeOverflow((1,0,0,0, 0, 0, 60)), (1,0,0,0, 0, 1, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
344 ae(fixTimeOverflow((1,0,0,0, 0, 0, 100)), (1,0,0,0, 0, 1, 40))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
345 ae(fixTimeOverflow((1,0,0,0, 0, 0, 60*60)), (1,0,0,0, 1, 0, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
346 ae(fixTimeOverflow((1,0,0,0, 0, 0, 24*60*60)), (1,0,0,1, 0, 0, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
347 ae(fixTimeOverflow((1,0,0,0, 0, 0, -1)), (-1,0,0,0, 0, 0, 1))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
348 ae(fixTimeOverflow((1,0,0,0, 0, 0, -100)), (-1,0,0,0, 0, 1, 40))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
349 ae(fixTimeOverflow((1,0,0,0, 0, 0, -60*60)), (-1,0,0,0, 1, 0, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
350 ae(fixTimeOverflow((1,0,0,0, 0, 0, -24*60*60)), (-1,0,0,1, 0, 0, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
351 ae(fixTimeOverflow((-1,0,0,0, 0, 0, 1)), (-1,0,0,0, 0, 0, 1))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
352 ae(fixTimeOverflow((-1,0,0,0, 0, 0, 100)), (-1,0,0,0, 0, 1, 40))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
353 ae(fixTimeOverflow((-1,0,0,0, 0, 0, 60*60)), (-1,0,0,0, 1, 0, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
354 ae(fixTimeOverflow((-1,0,0,0, 0, 0, 24*60*60)), (-1,0,0,1, 0, 0, 0))
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
355
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
356 def testDivision(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
357 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
358 ae(str(Interval('1y')/2), '+ 6m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
359 ae(str(Interval('1:00')/2), '+ 0:30')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
360 ae(str(Interval('00:01')/2), '+ 0:00:30')
1361
b94cc62090be reminder comments for where we need new tests
Richard Jones <richard@users.sourceforge.net>
parents: 1318
diff changeset
361
1494
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
362 def testSorting(self):
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
363 ae = self.assertEqual
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
364 i1 = Interval('1y')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
365 i2 = Interval('1d')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
366 l = [i1, i2]; l.sort()
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
367 ae(l, [i2, i1])
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
368 l = [i2, i1]; l.sort()
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
369 ae(l, [i2, i1])
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
370 i1 = Interval('- 2d')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
371 i2 = Interval('1d')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
372 l = [i1, i2]; l.sort()
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
373 ae(l, [i1, i2])
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
374
1505
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
375 i1 = Interval("1:20")
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
376 i2 = Interval("2d")
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
377 i3 = Interval("3:30")
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
378 l = [i1, i2, i3]; l.sort()
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
379 ae(l, [i1, i3, i2])
1494
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
380
1597
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
381 def testGranularity(self):
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
382 ae = self.assertEqual
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
383 ae(str(Date('2003-2-12', add_granularity=1)), '2003-02-12.23:59:59')
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
384 ae(str(Date('2003-1-1.23:00', add_granularity=1)), '2003-01-01.23:00:59')
1599
cc96bf971b33 extended date syntax to make range searches even more useful
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1597
diff changeset
385 ae(str(Date('2003', add_granularity=1)), '2003-12-31.23:59:59')
cc96bf971b33 extended date syntax to make range searches even more useful
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1597
diff changeset
386 ae(str(Date('2003-5', add_granularity=1)), '2003-05-31.23:59:59')
3954
3d5a0a949107 Fix granularity stuff so it handles wrapping a lot better.
Richard Jones <richard@users.sourceforge.net>
parents: 3953
diff changeset
387 ae(str(Date('2003-12', add_granularity=1)), '2003-12-31.23:59:59')
1597
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
388 ae(str(Interval('+1w', add_granularity=1)), '+ 14d')
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
389 ae(str(Interval('-2m 3w', add_granularity=1)), '- 2m 14d')
2980
e28f047f87fa Interval.from_seconds() produces a buggy output with float argument
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2702
diff changeset
390
1930
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
391 def testIntervalPretty(self):
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
392 def ae(spec, pretty):
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
393 self.assertEqual(Interval(spec).pretty(), pretty)
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
394 ae('2y', 'in 2 years')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
395 ae('1y', 'in 1 year')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
396 ae('2m', 'in 2 months')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
397 ae('1m 30d', 'in 2 months')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
398 ae('60d', 'in 2 months')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
399 ae('59d', 'in 1 month')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
400 ae('1m', 'in 1 month')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
401 ae('29d', 'in 1 month')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
402 ae('28d', 'in 4 weeks')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
403 ae('8d', 'in 1 week')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
404 ae('7d', 'in 7 days')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
405 ae('1w', 'in 7 days')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
406 ae('2d', 'in 2 days')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
407 ae('1d', 'tomorrow')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
408 ae('02:00:00', 'in 2 hours')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
409 ae('01:59:00', 'in 1 3/4 hours')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
410 ae('01:45:00', 'in 1 3/4 hours')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
411 ae('01:30:00', 'in 1 1/2 hours')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
412 ae('01:29:00', 'in 1 1/4 hours')
2980
e28f047f87fa Interval.from_seconds() produces a buggy output with float argument
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2702
diff changeset
413 ae('01:00:00', 'in an hour')
1930
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
414 ae('00:30:00', 'in 1/2 an hour')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
415 ae('00:15:00', 'in 1/4 hour')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
416 ae('00:02:00', 'in 2 minutes')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
417 ae('00:01:00', 'in 1 minute')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
418 ae('00:00:30', 'in a moment')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
419 ae('-00:00:30', 'just now')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
420 ae('-1d', 'yesterday')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
421 ae('-1y', '1 year ago')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
422 ae('-2y', '2 years ago')
1597
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
423
2702
eb4e7b8d52a2 handle Py2.3+ datetime objects as Date specs [SF#971300]
Richard Jones <richard@users.sourceforge.net>
parents: 2217
diff changeset
424 def testPyDatetime(self):
eb4e7b8d52a2 handle Py2.3+ datetime objects as Date specs [SF#971300]
Richard Jones <richard@users.sourceforge.net>
parents: 2217
diff changeset
425 d = datetime.datetime.now()
eb4e7b8d52a2 handle Py2.3+ datetime objects as Date specs [SF#971300]
Richard Jones <richard@users.sourceforge.net>
parents: 2217
diff changeset
426 Date(d)
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
427 toomuch = datetime.MAXYEAR + 1
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
428 self.assertRaises(ValueError, Date, (toomuch, 1, 1, 0, 0, 0, 0, 1, -1))
2702
eb4e7b8d52a2 handle Py2.3+ datetime objects as Date specs [SF#971300]
Richard Jones <richard@users.sourceforge.net>
parents: 2217
diff changeset
429
3622
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
430 def testSimpleTZ(self):
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
431 ae = self.assertEqual
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
432 # local to utc
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
433 date = Date('2006-04-04.12:00:00', 2)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
434 ae(str(date), '2006-04-04.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
435 # utc to local
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
436 date = Date('2006-04-04.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
437 date = date.local(2)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
438 ae(str(date), '2006-04-04.12:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
439 # from Date instance
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
440 date = Date('2006-04-04.12:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
441 date = Date(date, 2)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
442 ae(str(date), '2006-04-04.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
443
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
444 def testTimestamp(self):
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
445 ae = self.assertEqual
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
446 date = Date('2038')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
447 ae(date.timestamp(), 2145916800)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
448 date = Date('1902')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
449 ae(date.timestamp(), -2145916800)
3824
a5fb7698439d remove some try:/import statements caught by alexander smishlajev
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3822
diff changeset
450 date = Date(time.gmtime(0))
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
451 ae(date.timestamp(), 0)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
452 ae(str(date), '1970-01-01.00:00:00')
3824
a5fb7698439d remove some try:/import statements caught by alexander smishlajev
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3822
diff changeset
453 date = Date(time.gmtime(0x7FFFFFFF))
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
454 ae(date.timestamp(), 2147483647)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
455 ae(str(date), '2038-01-19.03:14:07')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
456 date = Date('1901-12-13.20:45:52')
5380
64c4e43fbb84 Python 3 preparation: numeric literal syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5109
diff changeset
457 ae(date.timestamp(), -0x80000000)
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
458 ae(str(date), '1901-12-13.20:45:52')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
459 date = Date('9999')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
460 ae (date.timestamp(), 253370764800.0)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
461 date = Date('0033')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
462 ae (date.timestamp(), -61125753600.0)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
463 ae(str(date), '0033-01-01.00:00:00')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
464
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
465
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
466 @skip_pytz
3622
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
467 class TimezoneTestCase(unittest.TestCase):
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
468
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
469 def testTZ(self):
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
470 ae = self.assertEqual
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
471 tz = 'Europe/Warsaw'
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
472
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
473 # local to utc, DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
474 date = Date('2006-04-04.12:00:00', tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
475 ae(str(date), '2006-04-04.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
476
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
477 # local to utc, no DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
478 date = Date('2006-01-01.12:00:00', tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
479 ae(str(date), '2006-01-01.11:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
480
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
481 # utc to local, DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
482 date = Date('2006-04-04.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
483 date = date.local(tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
484 ae(str(date), '2006-04-04.12:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
485
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
486 # utc to local, no DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
487 date = Date('2006-01-01.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
488 date = date.local(tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
489 ae(str(date), '2006-01-01.11:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
490
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
491 date = Date('2006-04-04.12:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
492 date = Date(date, tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
493 ae(str(date), '2006-04-04.10:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
494 date = Date('2006-01-01.12:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
495 date = Date(date, tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
496 ae(str(date), '2006-01-01.11:00:00')
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
497
3954
3d5a0a949107 Fix granularity stuff so it handles wrapping a lot better.
Richard Jones <richard@users.sourceforge.net>
parents: 3953
diff changeset
498
3952
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
499 class RangeTestCase(unittest.TestCase):
3954
3d5a0a949107 Fix granularity stuff so it handles wrapping a lot better.
Richard Jones <richard@users.sourceforge.net>
parents: 3953
diff changeset
500
3952
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
501 def testRange(self):
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
502 ae = self.assertEqual
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
503 r = Range('2006', Date)
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
504 ae(str(r.from_value), '2006-01-01.00:00:00')
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
505 ae(str(r.to_value), '2006-12-31.23:59:59')
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
506 for i in range(1, 13):
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
507 r = Range('2006-%02d'%i, Date)
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
508 ae(str(r.from_value), '2006-%02d-01.00:00:00'%i)
3953
78dc9b275aeb New tests for range searching by specifying just a month.
Richard Jones <richard@users.sourceforge.net>
parents: 3952
diff changeset
509 ae(str(r.to_value), '2006-%02d-%02d.23:59:59'%(i,
78dc9b275aeb New tests for range searching by specifying just a month.
Richard Jones <richard@users.sourceforge.net>
parents: 3952
diff changeset
510 calendar.mdays[i]))
3952
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
511
3208
d4d58c36d0bf test invalid tuple handling
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2982
diff changeset
512 # vim: set filetype=python sts=4 sw=4 et si :

Roundup Issue Tracker: http://roundup-tracker.org/