|
1 # Unit tests for typecast functions in django.db.backends.util |
|
2 |
|
3 from django.db.backends import util as typecasts |
|
4 import datetime, unittest |
|
5 |
|
6 TEST_CASES = { |
|
7 'typecast_date': ( |
|
8 ('', None), |
|
9 (None, None), |
|
10 ('2005-08-11', datetime.date(2005, 8, 11)), |
|
11 ('1990-01-01', datetime.date(1990, 1, 1)), |
|
12 ), |
|
13 'typecast_time': ( |
|
14 ('', None), |
|
15 (None, None), |
|
16 ('0:00:00', datetime.time(0, 0)), |
|
17 ('0:30:00', datetime.time(0, 30)), |
|
18 ('8:50:00', datetime.time(8, 50)), |
|
19 ('08:50:00', datetime.time(8, 50)), |
|
20 ('12:00:00', datetime.time(12, 00)), |
|
21 ('12:30:00', datetime.time(12, 30)), |
|
22 ('13:00:00', datetime.time(13, 00)), |
|
23 ('23:59:00', datetime.time(23, 59)), |
|
24 ('00:00:12', datetime.time(0, 0, 12)), |
|
25 ('00:00:12.5', datetime.time(0, 0, 12, 500000)), |
|
26 ('7:22:13.312', datetime.time(7, 22, 13, 312000)), |
|
27 ), |
|
28 'typecast_timestamp': ( |
|
29 ('', None), |
|
30 (None, None), |
|
31 ('2005-08-11 0:00:00', datetime.datetime(2005, 8, 11)), |
|
32 ('2005-08-11 0:30:00', datetime.datetime(2005, 8, 11, 0, 30)), |
|
33 ('2005-08-11 8:50:30', datetime.datetime(2005, 8, 11, 8, 50, 30)), |
|
34 ('2005-08-11 8:50:30.123', datetime.datetime(2005, 8, 11, 8, 50, 30, 123000)), |
|
35 ('2005-08-11 8:50:30.9', datetime.datetime(2005, 8, 11, 8, 50, 30, 900000)), |
|
36 ('2005-08-11 8:50:30.312-05', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)), |
|
37 ('2005-08-11 8:50:30.312+02', datetime.datetime(2005, 8, 11, 8, 50, 30, 312000)), |
|
38 ), |
|
39 'typecast_boolean': ( |
|
40 (None, None), |
|
41 ('', False), |
|
42 ('t', True), |
|
43 ('f', False), |
|
44 ('x', False), |
|
45 ), |
|
46 } |
|
47 |
|
48 class DBTypeCasts(unittest.TestCase): |
|
49 def test_typeCasts(self): |
|
50 for k, v in TEST_CASES.items(): |
|
51 for inpt, expected in v: |
|
52 got = getattr(typecasts, k)(inpt) |
|
53 assert got == expected, "In %s: %r doesn't match %r. Got %r instead." % (k, inpt, expected, got) |
|
54 |
|
55 if __name__ == '__main__': |
|
56 unittest.main() |