Пример #1
0
 def setUp(self):
     self.ACDT = FixedTimezone(Duration(hours=9.5), 'ACDT')
     self.EST = FixedTimezone(-Duration(hours=5), 'EST')
Пример #2
0
class TestFixedTimezone(unittest.TestCase):

    def setUp(self):
        self.ACDT = FixedTimezone(Duration(hours=9.5), 'ACDT')
        self.EST = FixedTimezone(-Duration(hours=5), 'EST')
        #self.DT = Datetime(2010, 1, 1)

    def test_str(self):
        for tz in [self.ACDT, self.EST, FixedTimezone.utc,
                   FixedTimezone.min, FixedTimezone.max]:
            self.assertEqual(str(tz), tz.tzname(None))

    def test_repr(self):
        for tz in [self.ACDT, self.EST, FixedTimezone.utc,
                   FixedTimezone.min, FixedTimezone.max]:
            # test round-trip
            tzrep = repr(tz)
            self.assertEqual(tz, eval(tzrep))

    def test_class_members(self):
        limit = Duration(hours=23, minutes=59)
        self.assertEqual(FixedTimezone.utc.utcoffset(None), ZERO)
        self.assertEqual(FixedTimezone.min.utcoffset(None), -limit)
        self.assertEqual(FixedTimezone.max.utcoffset(None), limit)

    def test_constructor(self):
        self.assertEqual(FixedTimezone.utc, FixedTimezone(Duration(0), 'UTC'))
        # invalid offsets
        for invalid in [Duration(microseconds=1), Duration(1, 1),
                        Duration(seconds=1), Duration(1), -Duration(1)]:
            self.assertRaises(ValueError, FixedTimezone, invalid)
            self.assertRaises(ValueError, FixedTimezone, -invalid)

        with self.assertRaises(TypeError): FixedTimezone(42)
        with self.assertRaises(TypeError): FixedTimezone(ZERO, 42)
        with self.assertRaises(TypeError): FixedTimezone(ZERO, 'ABC', 'extra')

    def test_inheritance(self):
        self.assertIsInstance(FixedTimezone.utc, FixedTimezone)
        self.assertIsInstance(self.EST, FixedTimezone)

    #def test_utcoffset(self):
        #dummy = self.DT
        #for h in [0, 1.5, 12]:
            #offset = h * HOUR
            #self.assertEqual(offset, FixedTimezone(offset).utcoffset(dummy))
            #self.assertEqual(-offset, FixedTimezone(-offset).utcoffset(dummy))

        #with self.assertRaises(TypeError): self.EST.utcoffset('')
        #with self.assertRaises(TypeError): self.EST.utcoffset(5)

    #def test_dst(self):
        #self.assertIsNone(FixedTimezone.utc.dst(self.DT))

        #with self.assertRaises(TypeError): self.EST.dst('')
        #with self.assertRaises(TypeError): self.EST.dst(5)

    def test_tzname(self):
        self.assertEqual('UTC+00:00', FixedTimezone(ZERO).tzname(None))
        self.assertEqual('UTC-05:00', FixedTimezone(-5 * HOUR).tzname(None))
        self.assertEqual('UTC+09:30', FixedTimezone(9.5 * HOUR).tzname(None))
        self.assertEqual('UTC-00:01', FixedTimezone(Duration(minutes=-1)).tzname(None))
        self.assertEqual('XYZ', FixedTimezone(-5 * HOUR, 'XYZ').tzname(None))

        with self.assertRaises(TypeError): self.EST.tzname('')
        with self.assertRaises(TypeError): self.EST.tzname(5)

    #def test_fromutc(self):
        #with self.assertRaises(ValueError):
            #FixedTimezone.utc.fromutc(self.DT)
        #with self.assertRaises(TypeError):
            #FixedTimezone.utc.fromutc('not Datetime')
        #for tz in [self.EST, self.ACDT, Eastern]:
            #utctime = self.DT.replace(tzinfo=tz)
            #local = tz.fromutc(utctime)
            #self.assertEqual(local - utctime, tz.utcoffset(local))
            #self.assertEqual(local,
                             #self.DT.replace(tzinfo=FixedTimezone.utc))

    def test_comparison(self):
        self.assertNotEqual(FixedTimezone(ZERO), FixedTimezone(HOUR))
        self.assertEqual(FixedTimezone(HOUR), FixedTimezone(HOUR))
        self.assertEqual(FixedTimezone(-5 * HOUR), FixedTimezone(-5 * HOUR, 'EST'))
        with self.assertRaises(TypeError): FixedTimezone(ZERO) < FixedTimezone(ZERO)
        self.assertIn(FixedTimezone(ZERO), {FixedTimezone(ZERO)})
        self.assertTrue(FixedTimezone(ZERO) != None)
        self.assertFalse(FixedTimezone(ZERO) ==  None)