6
from django.utils.tzinfo import FixedOffset, LocalTimezone
7
from django.utils import unittest
9
class TzinfoTests(unittest.TestCase):
13
cls.old_TZ = os.environ.get('TZ')
14
os.environ['TZ'] = 'US/Eastern'
17
# Check if a timezone has been set
20
except AttributeError:
21
# No timezone available. Don't run the tests that require a TZ
25
def tearDownClass(cls):
26
if cls.old_TZ is None:
29
os.environ['TZ'] = cls.old_TZ
31
# Cleanup - force re-evaluation of TZ environment variable.
35
def test_fixedoffset(self):
36
self.assertEqual(repr(FixedOffset(0)), '+0000')
37
self.assertEqual(repr(FixedOffset(60)), '+0100')
38
self.assertEqual(repr(FixedOffset(-60)), '-0100')
39
self.assertEqual(repr(FixedOffset(280)), '+0440')
40
self.assertEqual(repr(FixedOffset(-280)), '-0440')
41
self.assertEqual(repr(FixedOffset(-78.4)), '-0118')
42
self.assertEqual(repr(FixedOffset(78.4)), '+0118')
43
self.assertEqual(repr(FixedOffset(-5.5*60)), '-0530')
44
self.assertEqual(repr(FixedOffset(5.5*60)), '+0530')
45
self.assertEqual(repr(FixedOffset(-.5*60)), '-0030')
46
self.assertEqual(repr(FixedOffset(.5*60)), '+0030')
52
# Midnight at the end of DST in US/Eastern: 2010-11-07T05:00:00Z
53
dt = datetime.datetime.utcfromtimestamp(ts)
54
# US/Eastern -- we force its representation to "EST"
55
tz = LocalTimezone(dt + datetime.timedelta(days=1))
57
repr(datetime.datetime.fromtimestamp(ts - 3600, tz)),
58
'datetime.datetime(2010, 11, 7, 0, 0, tzinfo=EST)')
60
repr(datetime.datetime.fromtimestamp(ts, tz)),
61
'datetime.datetime(2010, 11, 7, 1, 0, tzinfo=EST)')
63
repr(datetime.datetime.fromtimestamp(ts + 3600, tz)),
64
'datetime.datetime(2010, 11, 7, 1, 0, tzinfo=EST)')
67
now = datetime.datetime.now()
68
self.assertIsInstance(copy.copy(FixedOffset(90)), FixedOffset)
69
self.assertIsInstance(copy.copy(LocalTimezone(now)), LocalTimezone)
71
def test_deepcopy(self):
72
now = datetime.datetime.now()
73
self.assertIsInstance(copy.deepcopy(FixedOffset(90)), FixedOffset)
74
self.assertIsInstance(copy.deepcopy(LocalTimezone(now)), LocalTimezone)
76
def test_pickling_unpickling(self):
77
now = datetime.datetime.now()
78
self.assertIsInstance(pickle.loads(pickle.dumps(FixedOffset(90))), FixedOffset)
79
self.assertIsInstance(pickle.loads(pickle.dumps(LocalTimezone(now))), LocalTimezone)