annotate test/test_dates.py @ 6480:0f0cee081990

Force test of a locale We had a file descriptor leak in the i18n routines. The code that opens a .mo file and then closes it was not tested. Add a test for converting dates to german locale. Make test use the locale/locale subdirectory tree. To do this build the .mo files and put them into the proper tree structure: locale/locale/<two char lang code>/LC_MESSAGES/roundup.mo Also make py.test run with warnings made into errors. Try to get advanced warnings of deprecation issues, resource leaks etc. Ignore error generated by the markdown module that uses the old SelectableGroups interface to dict: DeprecationWarning: SelectableGroups dict interface is deprecated. Use select. Also ignore use of imp module in gpg.gpgme, U mode in docutils.io. Tried to split lines for the py.test run so each warning is on it's own line. Makes it more readable and editing in the future easier. Not sure if it's valid though. May need to revise.
author John Rouillard <rouilj@ieee.org>
date Mon, 06 Sep 2021 13:18:53 -0400
parents d76291836523
children 5be4f9104cf7
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):
6480
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
40 # force use of local locale directory. System locale dir
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
41 # doesn't have the locale files installed, and without wiping
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
42 # the default the .mo file sometimes isn't found.
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
43 i18n.LOCALE_DIRS=[]
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
44 i18n.LOCALE_DIRS.insert(0,"locale/locale")
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
45
4407
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
46 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
47 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
48 i18n.gettext = i18n.get_translation(language='C').gettext
6480
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
49 i18n.degettext = i18n.get_translation(language='de').gettext
4407
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
50 i18n.ngettext = i18n.get_translation(language='C').ngettext
6480
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
51 i18n.dengettext = i18n.get_translation(language='de').ngettext
4407
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
52
f6a2bfd351ee force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents: 4072
diff changeset
53 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
54 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
55 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
56
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 def testDateInterval(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
58 ae = self.assertEqual
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 date = Date("2000-06-26.00:34:02 + 2d")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
60 ae(str(date), '2000-06-28.00:34:02')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 date = Date("2000-02-27 + 2d")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
62 ae(str(date), '2000-02-29.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 date = Date("2001-02-27 + 2d")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
64 ae(str(date), '2001-03-01.00:00:00')
4072
d5e2767d4e91 Robustify Date.set.
Stefan Seefeld <stefan@seefeld.name>
parents: 3973
diff changeset
65 date = Date("2009", add_granularity=True)
d5e2767d4e91 Robustify Date.set.
Stefan Seefeld <stefan@seefeld.name>
parents: 3973
diff changeset
66 self.assertRaises(ValueError, Date, ". +30d", add_granularity=True)
d5e2767d4e91 Robustify Date.set.
Stefan Seefeld <stefan@seefeld.name>
parents: 3973
diff changeset
67
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 def testDate(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
69 ae = self.assertEqual
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 date = Date("2000-04-17")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
71 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
72 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
73 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
74 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
75 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
76 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
77 ae(str(date), '2000-04-17.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 date = Date("01-25")
225
49748e59852a fixed a 2.1-ism
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
79 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
80 ae(str(date), '%s-01-25.00:00:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 date = Date("2000-04-17.03:45")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
82 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
83 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
84 ae(str(date), '2000-04-17.03:45:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 date = Date("08-13.22:13")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
86 ae(str(date), '%s-08-13.22:13:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 date = Date("11-07.09:32:43")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
88 ae(str(date), '%s-11-07.09:32:43'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 date = Date("14:25")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
90 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
91 date = Date("8:47:11")
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
92 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
93 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
94 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
95 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
96 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
97
3973
85cbaa50eba1 xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents: 3954
diff changeset
98 def testLeapYear(self):
5792
db429c75caec replace assertEquals with assertEqual.
John Rouillard <rouilj@ieee.org>
parents: 5380
diff changeset
99 self.assertEqual(str(Date('2008-02-29')), '2008-02-29.00:00:00')
3973
85cbaa50eba1 xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents: 3954
diff changeset
100
1535
26f29449c494 fixed detection of bad date specs [SF#691439]
Richard Jones <richard@users.sourceforge.net>
parents: 1505
diff changeset
101 def testDateError(self):
26f29449c494 fixed detection of bad date specs [SF#691439]
Richard Jones <richard@users.sourceforge.net>
parents: 1505
diff changeset
102 self.assertRaises(ValueError, Date, "12")
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
103 # Date cannot handle dates before year 1
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
104 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
105 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
106
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107 def testOffset(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
108 ae = self.assertEqual
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 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
110 ae(str(date), '2000-04-17.05:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111 date = Date("01-25", -5)
225
49748e59852a fixed a 2.1-ism
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
112 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
113 ae(str(date), '%s-01-25.05:00:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 date = Date("2000-04-17.03:45", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
115 ae(str(date), '2000-04-17.08:45:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116 date = Date("08-13.22:13", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
117 ae(str(date), '%s-08-14.03:13:00'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
118 date = Date("11-07.09:32:43", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
119 ae(str(date), '%s-11-07.14:32:43'%y)
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
120 date = Date("14:25", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
121 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
122 date = Date("8:47:11", -5)
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
123 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
124
3586
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
125 # 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
126 date = Date('-1d')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
127 date = Date('-1w')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
128 date = Date('-1m')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
129 date = Date('-1y')
f47bddab5a49 date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents: 3456
diff changeset
130
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
131 def testOffsetRandom(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
132 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
133 # 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
134 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
135 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
136 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
137 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
138 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
139 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
140 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
141 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
142
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
143 date = Date('2000-01-01') + Interval('60d')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
144 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
145 date = Date('2001-01-01') + Interval('60d')
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
146 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
147
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
148 def testOffsetAdd(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
149 ae = self.assertEqual
640
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
150 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
151 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
152 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
153 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
154
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
155 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
156 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
157 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
158 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
159
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
160 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
161 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
162 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
163 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
164
7dd13fd5d8ea fixed some problems in date calculations
Richard Jones <richard@users.sourceforge.net>
parents: 635
diff changeset
165 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
166 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
167 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
168 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
169 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
170 ae(str(date), '2151-03-01.00:00:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
171
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
172 def testOffsetSub(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
173 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
174 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
175
641
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
176 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
177 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
178 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
179 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
180
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
181 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
182 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
183 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
184 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
185
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
186 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
187 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
188 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
189 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
190
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
191 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
192 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
193 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
194 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
195
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
196 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
197 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
198 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
199 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
200
cfa460943d4d Oops, there's 24 hours in a day...
Richard Jones <richard@users.sourceforge.net>
parents: 640
diff changeset
201 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
202 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
203 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
204 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
205 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
206 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
207
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
208 def testDateLocal(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
209 ae = self.assertEqual
1318
46a1951fdb14 fix Date.local()
Richard Jones <richard@users.sourceforge.net>
parents: 1268
diff changeset
210 date = Date("02:42:20")
46a1951fdb14 fix Date.local()
Richard Jones <richard@users.sourceforge.net>
parents: 1268
diff changeset
211 date = date.local(10)
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
212 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
213 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
214
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
215 def testIntervalInit(self):
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
216 ae = self.assertEqual
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
217 ae(str(Interval('3y')), '+ 3y')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
218 ae(str(Interval('2 y 1 m')), '+ 2y 1m')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
219 ae(str(Interval('1m 25d')), '+ 1m 25d')
134
d3ffcf862fb7 Fixed bug in unit test ;)
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
220 ae(str(Interval('-2w 3 d ')), '- 17d')
125
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
221 ae(str(Interval(' - 1 d 2:50 ')), '- 1d 2:50')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
222 ae(str(Interval(' 14:00 ')), '+ 14:00')
23b0e0b74d6a Added Interval tests.
Richard Jones <richard@users.sourceforge.net>
parents: 92
diff changeset
223 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
224 ae(str(Interval(8.*3600)), '+ 8:00')
92
fa44da8d9df2 moving tests -> test
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
225
1537
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
226 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
227 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
228 now = Date('.')
0e36c9b23aa6 more lenient date input and addition Interval input support [SF#677764]
Richard Jones <richard@users.sourceforge.net>
parents: 1535
diff changeset
229 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
230 then = now + Interval('2d')
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
231 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
232 then = now - Interval('2d')
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
233 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
234
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
235 def testIntervalAddMonthBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
236 # force the transition over a month boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
237 now = Date('2003-10-30.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
238 then = now + Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
239 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
240 now = Date('2004-02-28.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
241 then = now + Interval('1d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
242 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
243 now = Date('2003-02-28.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
244 then = now + Interval('1d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
245 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
246 now = Date('2003-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
247 then = now + Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
248 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
249 now = Date('2004-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
250 then = now + Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
251 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
252
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
253 def testIntervalSubtractMonthBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
254 # force the transition over a month boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
255 now = Date('2003-11-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
256 then = now - Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
257 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
258 now = Date('2004-02-29.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
259 then = now - Interval('1d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
260 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
261 now = Date('2003-03-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
262 then = now - Interval('1d')
1885
deba54ed724f Date arithmetic fixes.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1884
diff changeset
263 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
264 now = Date('2003-03-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
265 then = now - Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
266 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
267 now = Date('2004-02-29.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
268 then = now - Interval('59d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
269 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
270
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
271 def testIntervalAddYearBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
272 # force the transition over a year boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
273 now = Date('2003-12-30.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
274 then = now + Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
275 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
276 now = Date('2003-01-01.00:00:00')
1885
deba54ed724f Date arithmetic fixes.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1884
diff changeset
277 then = now + Interval('365d')
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
278 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
279 now = Date('2004-01-01.00:00:00')
1885
deba54ed724f Date arithmetic fixes.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1884
diff changeset
280 then = now + Interval('366d')
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
281 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
282
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
283 def testIntervalSubtractYearBoundary(self):
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
284 # force the transition over a year boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
285 now = Date('2003-01-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
286 then = now - Interval('2d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
287 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
288 now = Date('2004-02-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
289 then = now - Interval('365d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
290 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
291 now = Date('2005-02-01.00:00:00')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
292 then = now - Interval('365d')
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
293 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
294
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
295 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
296 # 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
297 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
298 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
299 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
300 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
301 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
302 self.assertEqual(i, Interval('28d'))
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
303 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
304 self.assertEqual(i, Interval('30d'))
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
305 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
306 self.assertEqual(i, Interval('395d'))
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
307 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
308 self.assertEqual(i, Interval('-29d'))
1894
41ad8b781232 Date - Date works again.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1886
diff changeset
309 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
310 self.assertEqual(i, Interval('28d'))
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
311 # force the transition over a year boundary
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
312 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
313 self.assertEqual(i, Interval('365d'))
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
314 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
315 self.assertEqual(i, Interval('-366d'))
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
316 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
317 self.assertEqual(i, Interval('366d'))
1884
dc55a195722d woo, failing date arithmetic tests
Richard Jones <richard@users.sourceforge.net>
parents: 1873
diff changeset
318
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
319 def testIntervalAdd(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
320 ae = self.assertEqual
1268
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
321 ae(str(Interval('1y') + Interval('1y')), '+ 2y')
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
322 ae(str(Interval('1y') + Interval('1m')), '+ 1y 1m')
b34adc9bcaf2 implemented the missing Interval.__add__
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
323 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
324 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
325 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
326 ae(str(Interval('- 1y') + Interval('- 1y')), '- 2y')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
327 ae(str(Interval('1y') + Interval('- 1m')), '+ 11m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
328 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
329 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
330 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
331 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
332 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
333 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
334 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
335
1487
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
336 def testIntervalSub(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
337 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
338 ae(str(Interval('1y') - Interval('- 1y')), '+ 2y')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
339 ae(str(Interval('1y') - Interval('- 1m')), '+ 1y 1m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
340 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
341 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
342 ae(str(Interval('1y') - Interval('1m')), '+ 11m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
343 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
344 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
345 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
346 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
347 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
348
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
349 def testOverflow(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
350 ae = self.assertEqual
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, 60)), (1,0,0,0, 0, 1, 0))
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 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
356 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
357 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
358 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
359 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
360 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
361 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
362 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
363
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
364 def testDivision(self):
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
365 ae = self.assertEqual
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
366 ae(str(Interval('1y')/2), '+ 6m')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
367 ae(str(Interval('1:00')/2), '+ 0:30')
37a1906f4454 fixed Interval maths [SF#665357]
Richard Jones <richard@users.sourceforge.net>
parents: 1466
diff changeset
368 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
369
1494
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
370 def testSorting(self):
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
371 ae = self.assertEqual
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
372 i1 = Interval('1y')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
373 i2 = Interval('1d')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
374 l = [i1, i2]; l.sort()
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
375 ae(l, [i2, i1])
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
376 l = [i2, i1]; l.sort()
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
377 ae(l, [i2, i1])
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
378 i1 = Interval('- 2d')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
379 i2 = Interval('1d')
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
380 l = [i1, i2]; l.sort()
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
381 ae(l, [i1, i2])
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
382
1505
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
383 i1 = Interval("1:20")
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
384 i2 = Interval("2d")
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
385 i3 = Interval("3:30")
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
386 l = [i1, i2, i3]; l.sort()
c101d2ff5a20 fix to [SF#691071], really this time
Richard Jones <richard@users.sourceforge.net>
parents: 1494
diff changeset
387 ae(l, [i1, i3, i2])
1494
66cc5c2819dd oops, Interval sorting ignored sign
Richard Jones <richard@users.sourceforge.net>
parents: 1487
diff changeset
388
1597
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
389 def testGranularity(self):
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
390 ae = self.assertEqual
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
391 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
392 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
393 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
394 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
395 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
396 ae(str(Interval('+1w', add_granularity=1)), '+ 14d')
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
397 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
398
1930
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
399 def testIntervalPretty(self):
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
400 def ae(spec, pretty):
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
401 self.assertEqual(Interval(spec).pretty(), pretty)
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
402 ae('2y', 'in 2 years')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
403 ae('1y', 'in 1 year')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
404 ae('2m', 'in 2 months')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
405 ae('1m 30d', 'in 2 months')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
406 ae('60d', 'in 2 months')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
407 ae('59d', 'in 1 month')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
408 ae('1m', 'in 1 month')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
409 ae('29d', 'in 1 month')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
410 ae('28d', 'in 4 weeks')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
411 ae('8d', 'in 1 week')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
412 ae('7d', 'in 7 days')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
413 ae('1w', 'in 7 days')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
414 ae('2d', 'in 2 days')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
415 ae('1d', 'tomorrow')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
416 ae('02:00:00', 'in 2 hours')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
417 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
418 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
419 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
420 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
421 ae('01:00:00', 'in an hour')
1930
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
422 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
423 ae('00:15:00', 'in 1/4 hour')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
424 ae('00:02:00', 'in 2 minutes')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
425 ae('00:01:00', 'in 1 minute')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
426 ae('00:00:30', 'in a moment')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
427 ae('-00:00:30', 'just now')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
428 ae('-1d', 'yesterday')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
429 ae('-1y', '1 year ago')
71056b09f2bf Add tests for Interval.pretty().
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1894
diff changeset
430 ae('-2y', '2 years ago')
1597
4d55f90d4af1 granularity based ranges
Andrey Lebedev <kedder@users.sourceforge.net>
parents: 1537
diff changeset
431
6480
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
432 def testIntervalPrettyDe(self):
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
433 gettext = i18n.gettext
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
434 ngettext = i18n.ngettext
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
435
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
436 i18n.gettext = i18n.degettext
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
437 i18n.ngettext = i18n.dengettext
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
438
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
439 def ae(spec, pretty):
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
440 self.assertEqual(Interval(spec).pretty(), pretty)
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
441 ae('2y', 'in 2 Jahren')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
442 ae('1y', 'in 1 Jahr')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
443 ae('2m', 'in 2 Monaten')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
444 ae('59d', 'in 1 Monat')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
445 ae('1m', 'in 1 Monat')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
446 '''ae('29d', 'in 1 month')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
447 ae('28d', 'in 4 weeks')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
448 ae('8d', 'in 1 week')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
449 ae('7d', 'in 7 days')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
450 ae('1w', 'in 7 days')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
451 ae('2d', 'in 2 days')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
452 ae('1d', 'tomorrow')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
453 ae('02:00:00', 'in 2 hours')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
454 ae('01:59:00', 'in 1 3/4 hours')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
455 ae('01:45:00', 'in 1 3/4 hours')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
456 ae('01:30:00', 'in 1 1/2 hours')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
457 ae('01:29:00', 'in 1 1/4 hours')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
458 ae('01:00:00', 'in an hour')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
459 ae('00:30:00', 'in 1/2 an hour')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
460 ae('00:15:00', 'in 1/4 hour')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
461 ae('00:02:00', 'in 2 minutes')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
462 ae('00:01:00', 'in 1 minute')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
463 ae('00:00:30', 'in a moment')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
464 ae('-00:00:30', 'just now')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
465 ae('-1d', 'yesterday')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
466 ae('-1y', '1 year ago')
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
467 ae('-2y', '2 years ago')'''
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
468
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
469 i18n.gettext = gettext
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
470 i18n.ngettext = ngettext
0f0cee081990 Force test of a locale
John Rouillard <rouilj@ieee.org>
parents: 6380
diff changeset
471
2702
eb4e7b8d52a2 handle Py2.3+ datetime objects as Date specs [SF#971300]
Richard Jones <richard@users.sourceforge.net>
parents: 2217
diff changeset
472 def testPyDatetime(self):
eb4e7b8d52a2 handle Py2.3+ datetime objects as Date specs [SF#971300]
Richard Jones <richard@users.sourceforge.net>
parents: 2217
diff changeset
473 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
474 Date(d)
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
475 toomuch = datetime.MAXYEAR + 1
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
476 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
477
3622
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
478 def testSimpleTZ(self):
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
479 ae = self.assertEqual
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
480 # local to utc
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
481 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
482 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
483 # utc to local
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
484 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
485 date = date.local(2)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
486 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
487 # from Date instance
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
488 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
489 date = Date(date, 2)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
490 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
491
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
492 def testTimestamp(self):
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
493 ae = self.assertEqual
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
494 date = Date('2038')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
495 ae(date.timestamp(), 2145916800)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
496 date = Date('1902')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
497 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
498 date = Date(time.gmtime(0))
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
499 ae(date.timestamp(), 0)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
500 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
501 date = Date(time.gmtime(0x7FFFFFFF))
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
502 ae(date.timestamp(), 2147483647)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
503 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
504 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
505 ae(date.timestamp(), -0x80000000)
3822
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
506 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
507 date = Date('9999')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
508 ae (date.timestamp(), 253370764800.0)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
509 date = Date('0033')
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
510 ae (date.timestamp(), -61125753600.0)
2a60b68985db Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3622
diff changeset
511 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
512
5036
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
513
380d8d8b30a3 Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents: 4742
diff changeset
514 @skip_pytz
3622
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
515 class TimezoneTestCase(unittest.TestCase):
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
516
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
517 def testTZ(self):
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
518 ae = self.assertEqual
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
519 tz = 'Europe/Warsaw'
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
520
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
521 # local to utc, DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
522 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
523 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
524
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
525 # local to utc, no DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
526 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
527 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
528
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
529 # utc to local, DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
530 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
531 date = date.local(tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
532 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
533
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
534 # utc to local, no DST
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
535 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
536 date = date.local(tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
537 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
538
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
539 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
540 date = Date(date, tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
541 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
542 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
543 date = Date(date, tz)
a9126b8033c5 test timezones (based on patch [SF#1465296])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 3586
diff changeset
544 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
545
6380
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
546 def testUnrecognizedTimezone(self):
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
547 '''Unrecognize timezone should raise key error'''
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
548
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
549 # unrecognized timezone
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
550 tz = 'Zoot'
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
551
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
552 with self.assertRaises(KeyError) as cm:
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
553 date = Date('2006-04-04.12:00:00', tz)
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
554
d76291836523 Fix issue2551128 - Impossible to validate a user with unknown timezone
John Rouillard <rouilj@ieee.org>
parents: 5792
diff changeset
555 self.assertEqual(cm.exception.args, ('Zoot',))
3954
3d5a0a949107 Fix granularity stuff so it handles wrapping a lot better.
Richard Jones <richard@users.sourceforge.net>
parents: 3953
diff changeset
556
3952
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
557 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
558
3952
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
559 def testRange(self):
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
560 ae = self.assertEqual
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
561 r = Range('2006', Date)
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
562 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
563 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
564 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
565 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
566 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
567 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
568 calendar.mdays[i]))
3952
c68581212cf7 add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents: 3824
diff changeset
569
3208
d4d58c36d0bf test invalid tuple handling
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2982
diff changeset
570 # vim: set filetype=python sts=4 sw=4 et si :

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