示例#1
0
 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))
示例#2
0
    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'))])
示例#3
0
    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)
示例#4
0
    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()
        ]
示例#5
0
    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,))
示例#6
0
 def get_aggregate_data_type(self, table):
     return Boolean()
示例#7
0
    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)
示例#8
0
 def setUp(self):
     self.type = Boolean()
示例#9
0
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')
示例#10
0
 def get_aggregate_data_type(self, column):
     return Boolean()