File: test_fixed_offset.py

package info (click to toggle)
python-imapclient 3.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 668 kB
  • sloc: python: 5,355; sh: 14; makefile: 11
file content (70 lines) | stat: -rw-r--r-- 2,326 bytes parent folder | download
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()