-
Notifications
You must be signed in to change notification settings - Fork 87
/
Copy pathtest_fixed_offset.py
70 lines (56 loc) · 2.27 KB
/
test_fixed_offset.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Copyright (c) 2014, Menno Smits
# Released subject to the New BSD License
# Please see http://en.wikipedia.org/wiki/BSD_licenses
import unittest
from datetime import timedelta
from unittest.mock import DEFAULT, Mock, patch
from imapclient.fixed_offset import FixedOffset
class TestFixedOffset(unittest.TestCase):
def _check(self, offset, expected_delta, expected_name):
self.assertEqual(offset.utcoffset(None), expected_delta)
self.assertEqual(offset.tzname(None), expected_name)
self.assertEqual(offset.dst(None), timedelta(0))
def test_GMT(self):
self._check(FixedOffset(0), timedelta(0), "+0000")
def test_positive(self):
self._check(FixedOffset(30), timedelta(minutes=30), "+0030")
self._check(FixedOffset(2 * 60), timedelta(hours=2), "+0200")
self._check(FixedOffset(11 * 60 + 30), timedelta(hours=11, minutes=30), "+1130")
def test_negative(self):
self._check(FixedOffset(-30), timedelta(minutes=-30), "-0030")
self._check(FixedOffset(-2 * 60), timedelta(hours=-2), "-0200")
self._check(
FixedOffset(-11 * 60 - 30), timedelta(minutes=(-11 * 60) - 30), "-1130"
)
@patch.multiple(
"imapclient.fixed_offset.time",
daylight=True,
timezone=15 * 60 * 60,
localtime=DEFAULT,
)
def test_for_system_DST_not_active(self, localtime):
localtime_mock = Mock()
localtime_mock.tm_isdst = False
localtime.return_value = localtime_mock
offset = FixedOffset.for_system()
self.assertEqual(offset.tzname(None), "-1500")
@patch.multiple(
"imapclient.fixed_offset.time",
daylight=True,
altzone=15 * 60 * 60,
localtime=DEFAULT,
)
def test_for_system_DST_active(self, localtime):
localtime_mock = Mock()
localtime_mock.tm_isdst = True
localtime.return_value = localtime_mock
offset = FixedOffset.for_system()
self.assertEqual(offset.tzname(None), "-1500")
@patch.multiple(
"imapclient.fixed_offset.time", daylight=False, timezone=-15 * 60 * 60
)
def test_for_system_no_DST(self):
offset = FixedOffset.for_system()
self.assertEqual(offset.tzname(None), "+1500")
if __name__ == "__main__":
unittest.main()