annotate test/test_dates.py @ 7478:e8d2a4bca16a

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

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