first version of upstream package from subversion
[python-iso8601.debian] / iso8601 / test_iso8601.py
1 import iso8601
2
3 def test_iso8601_regex():
4     assert iso8601.ISO8601_REGEX.match("2006-10-11T00:14:33Z")
5
6 def test_timezone_regex():
7     assert iso8601.TIMEZONE_REGEX.match("+01:00")
8     assert iso8601.TIMEZONE_REGEX.match("+00:00")
9     assert iso8601.TIMEZONE_REGEX.match("+01:20")
10     assert iso8601.TIMEZONE_REGEX.match("-01:00")
11
12 def test_parse_date():
13     d = iso8601.parse_date("2006-10-20T15:34:56Z")
14     assert d.year == 2006
15     assert d.month == 10
16     assert d.day == 20
17     assert d.hour == 15
18     assert d.minute == 34
19     assert d.second == 56
20     assert d.tzinfo == iso8601.UTC
21
22 def test_parse_date_fraction():
23     d = iso8601.parse_date("2006-10-20T15:34:56.123Z")
24     assert d.year == 2006
25     assert d.month == 10
26     assert d.day == 20
27     assert d.hour == 15
28     assert d.minute == 34
29     assert d.second == 56
30     assert d.microsecond == 123000
31     assert d.tzinfo == iso8601.UTC
32
33 def test_parse_date_fraction_2():
34     """From bug 6
35     
36     """
37     d = iso8601.parse_date("2007-5-7T11:43:55.328Z'")
38     assert d.year == 2007
39     assert d.month == 5
40     assert d.day == 7
41     assert d.hour == 11
42     assert d.minute == 43
43     assert d.second == 55
44     assert d.microsecond == 328000
45     assert d.tzinfo == iso8601.UTC
46
47 def test_parse_date_tz():
48     d = iso8601.parse_date("2006-10-20T15:34:56.123+02:30")
49     assert d.year == 2006
50     assert d.month == 10
51     assert d.day == 20
52     assert d.hour == 15
53     assert d.minute == 34
54     assert d.second == 56
55     assert d.microsecond == 123000
56     assert d.tzinfo.tzname(None) == "+02:30"
57     offset = d.tzinfo.utcoffset(None)
58     assert offset.days == 0
59     assert offset.seconds == 60 * 60 * 2.5
60
61 def test_parse_invalid_date():
62     try:
63         iso8601.parse_date(None)
64     except iso8601.ParseError:
65         pass
66     else:
67         assert 1 == 2
68
69 def test_parse_invalid_date2():
70     try:
71         iso8601.parse_date("23")
72     except iso8601.ParseError:
73         pass
74     else:
75         assert 1 == 2
76
77 def test_parse_no_timezone():
78     """issue 4 - Handle datetime string without timezone
79     
80     This tests what happens when you parse a date with no timezone. While not
81     strictly correct this is quite common. I'll assume UTC for the time zone
82     in this case.
83     """
84     d = iso8601.parse_date("2007-01-01T08:00:00")
85     assert d.year == 2007
86     assert d.month == 1
87     assert d.day == 1
88     assert d.hour == 8
89     assert d.minute == 0
90     assert d.second == 0
91     assert d.microsecond == 0
92     assert d.tzinfo == iso8601.UTC
93
94 def test_parse_no_timezone_different_default():
95     tz = iso8601.FixedOffset(2, 0, "test offset")
96     d = iso8601.parse_date("2007-01-01T08:00:00", default_timezone=tz)
97     assert d.tzinfo == tz
98
99 def test_space_separator():
100     """Handle a separator other than T
101     
102     """
103     d = iso8601.parse_date("2007-06-23 06:40:34.00Z")
104     assert d.year == 2007
105     assert d.month == 6
106     assert d.day == 23
107     assert d.hour == 6
108     assert d.minute == 40
109     assert d.second == 34
110     assert d.microsecond == 0
111     assert d.tzinfo == iso8601.UTC

Benjamin Mako Hill || Want to submit a patch?