| 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() |
|---|