Fixed #18728 -- Made colon optional in tzinfo · django/django@2f59e94

1+

from __future__ import unicode_literals

2+3+

from datetime import date, time, datetime

4+5+

from django.utils.dateparse import parse_date, parse_time, parse_datetime

6+

from django.utils import unittest

7+

from django.utils.tzinfo import FixedOffset

8+9+10+

class DateParseTests(unittest.TestCase):

11+12+

def test_parse_date(self):

13+

# Valid inputs

14+

self.assertEqual(parse_date('2012-04-23'), date(2012, 4, 23))

15+

self.assertEqual(parse_date('2012-4-9'), date(2012, 4, 9))

16+

# Invalid inputs

17+

self.assertEqual(parse_date('20120423'), None)

18+

self.assertRaises(ValueError, parse_date, '2012-04-56')

19+20+

def test_parse_time(self):

21+

# Valid inputs

22+

self.assertEqual(parse_time('09:15:00'), time(9, 15))

23+

self.assertEqual(parse_time('10:10'), time(10, 10))

24+

self.assertEqual(parse_time('10:20:30.400'), time(10, 20, 30, 400000))

25+

self.assertEqual(parse_time('4:8:16'), time(4, 8, 16))

26+

# Invalid inputs

27+

self.assertEqual(parse_time('091500'), None)

28+

self.assertRaises(ValueError, parse_time, '09:15:90')

29+30+

def test_parse_datetime(self):

31+

# Valid inputs

32+

self.assertEqual(parse_datetime('2012-04-23T09:15:00'),

33+

datetime(2012, 4, 23, 9, 15))

34+

self.assertEqual(parse_datetime('2012-4-9 4:8:16'),

35+

datetime(2012, 4, 9, 4, 8, 16))

36+

self.assertEqual(parse_datetime('2012-04-23T09:15:00Z'),

37+

datetime(2012, 4, 23, 9, 15, 0, 0, FixedOffset(0)))

38+

self.assertEqual(parse_datetime('2012-4-9 4:8:16-0320'),

39+

datetime(2012, 4, 9, 4, 8, 16, 0, FixedOffset(-200)))

40+

self.assertEqual(parse_datetime('2012-04-23T10:20:30.400+02:30'),

41+

datetime(2012, 4, 23, 10, 20, 30, 400000, FixedOffset(150)))

42+

# Invalid inputs

43+

self.assertEqual(parse_datetime('20120423091500'), None)

44+

self.assertRaises(ValueError, parse_datetime, '2012-04-56T09:15:90')