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_changed_invalid_types(self): rows = ((False, True), (True, False)) column_names = ['before', 'after'] column_types = [Boolean(), Boolean()] table = Table(rows, column_names, column_types) with self.assertRaises(DataTypeError): table.compute([('test', Change('before', 'after'))])
def test_all(self): rows = [[True], [True], [None]] table = Table(rows, ['test'], [Boolean()]) All('test', True).validate(table) self.assertEqual(All('test', True).run(table), False) rows = [[True], [True], [True]] table = Table(rows, ['test'], [Boolean()]) All('test', True).validate(table) self.assertEqual(All('test', True).run(table), True) self.assertEqual(All('test', lambda r: r).run(table), True) self.assertEqual(All('test', False).run(table), False) self.assertEqual(All('test', lambda r: not r).run(table), False)
def setUp(self): self.rows = ( (1, 'a', True, '11/4/2015', '11/4/2015 12:22 PM', '4:15'), (2, u'👍', False, '11/5/2015', '11/4/2015 12:45 PM', '6:18'), (None, 'b', None, None, None, None) ) self.column_names = [ 'number', 'text', 'boolean', 'date', 'datetime', 'timedelta' ] self.column_types = [ Number(), Text(), Boolean(), Date(), DateTime(), TimeDelta() ]
def test_group_by_function(self): table = Table(self.rows, self.column_names, self.column_types) tableset = table.group_by(lambda r: r['three'] < 5, key_type=Boolean()) self.assertIsInstance(tableset, TableSet) self.assertEqual(len(tableset), 2) self.assertEqual(tableset.key_name, 'group') self.assertIn(True, tableset.keys()) self.assertIn(False, tableset.keys()) self.assertSequenceEqual(tableset[True].columns['one'], ('a', 'a', 'b')) self.assertSequenceEqual(tableset[False].columns['one'], (None,))
def get_aggregate_data_type(self, table): return Boolean()
def test_summary(self): summary = Summary('one', Boolean(), lambda c: 2 in c) self.assertIsInstance(summary.get_aggregate_data_type(None), Boolean) summary.validate(self.table) self.assertEqual(summary.run(self.table), True)
def setUp(self): self.type = Boolean()
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 get_aggregate_data_type(self, column): return Boolean()