class TestBoolean(unittest.TestCase): def setUp(self): self.type = Boolean() def test_test(self): self.assertEqual(self.type.test(None), True) self.assertEqual(self.type.test('N/A'), True) self.assertEqual(self.type.test(True), True) self.assertEqual(self.type.test('True'), True) self.assertEqual(self.type.test('1'), True) self.assertEqual(self.type.test(1), True) self.assertEqual(self.type.test(Decimal('1')), True) self.assertEqual(self.type.test('0'), True) self.assertEqual(self.type.test(0), True) self.assertEqual(self.type.test(Decimal('0')), True) self.assertEqual(self.type.test('2.7'), False) self.assertEqual(self.type.test(2.7), False) self.assertEqual(self.type.test('3/1/1994'), False) self.assertEqual(self.type.test(datetime.date(1994, 3, 1)), False) self.assertEqual(self.type.test('3/1/1994 12:30 PM'), False) self.assertEqual(self.type.test('2015-01-01 02:34'), False) self.assertEqual(self.type.test(datetime.datetime(1994, 3, 1, 12, 30)), False) self.assertEqual(self.type.test('4:10'), False) self.assertEqual( self.type.test(datetime.timedelta(hours=4, minutes=10)), False) self.assertEqual(self.type.test('a'), False) self.assertEqual(self.type.test('A\nB'), False) self.assertEqual(self.type.test(u'👍'), False) self.assertEqual(self.type.test('05_leslie3d_base'), False) self.assertEqual(self.type.test('2016-12-29'), False) self.assertEqual(self.type.test('2016-12-29T11:43:30Z'), False) self.assertEqual(self.type.test('2016-12-29T11:43:30+06:00'), False) self.assertEqual(self.type.test('2016-12-29T11:43:30-06:00'), False) def test_cast(self): values = (True, 'yes', None, False, 'no', 'n/a', '1', 0) casted = tuple(self.type.cast(v) for v in values) self.assertSequenceEqual( casted, (True, True, None, False, False, None, True, False)) def test_cast_custom_strings(self): values = ('a', 'b', 'c', 'd', 'e', 'f') boolean_type = Boolean(true_values=('a', 'b'), false_values=('d', 'e'), null_values=('c', 'f')) casted = tuple(boolean_type.cast(v) for v in values) self.assertSequenceEqual(casted, (True, True, None, False, False, None)) def test_cast_error(self): with self.assertRaises(CastError): self.type.cast('quack')
def test_cast_custom_strings(self): values = ('a', 'b', 'c', 'd', 'e', 'f') boolean_type = Boolean(true_values=('a', 'b'), false_values=('d', 'e'), null_values=('c', 'f')) casted = tuple(boolean_type.cast(v) for v in values) self.assertSequenceEqual(casted, (True, True, None, False, False, None))