Example #1
0
    def test_cast_format(self):
        date_type = Date(date_format='%m-%d-%Y')

        values = ('03-01-1994', '02-17-2011', None, '01-05-1984', 'n/a')
        casted = tuple(date_type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 3, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))
Example #2
0
    def test_cast_locale(self):
        date_type = Date(locale='fr_FR')

        values = ('01 mars 1994', u'jeudi 17 février 2011', None,
                  '5 janvier 1984', 'n/a')
        casted = tuple(date_type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 3, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))
Example #3
0
    def test_cast_format_locale(self):
        date_type = Date(date_format='%d-%b-%Y', locale='de_DE.UTF-8')

        # March can be abbreviated to Mrz or Mär depending on the locale version,
        # so we use December in the first value to ensure the test passes everywhere
        values = ('01-Dez-1994', '17-Feb-2011', None, '05-Jan-1984', 'n/a')
        casted = tuple(date_type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 12, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))
Example #4
0
    def test_change_dates(self):
        rows = (('10/4/2015', '10/7/2015'), ('10/2/2015', '9/28/2015'),
                ('9/28/2015', '9/1/2015'))

        date_type = Date()

        column_names = ['one', 'two']
        column_types = [date_type, date_type]

        table = Table(rows, column_names, column_types)

        new_table = table.compute([('test', Change('one', 'two'))])

        self.assertIsNot(new_table, table)
        self.assertEqual(len(new_table.rows), 3)
        self.assertEqual(len(new_table.columns), 3)

        self.assertSequenceEqual(
            new_table.rows[0],
            (datetime.date(2015, 10, 4), datetime.date(
                2015, 10, 7), datetime.timedelta(days=3)))

        self.assertEqual(new_table.columns['test'][0],
                         datetime.timedelta(days=3))
        self.assertEqual(new_table.columns['test'][1],
                         datetime.timedelta(days=-4))
        self.assertEqual(new_table.columns['test'][2],
                         datetime.timedelta(days=-27))
Example #5
0
    def test_change_mixed_types(self):
        rows = (('1', '10/24/1978'), ('2', '11/13/1974'))

        column_names = ['number', 'date']
        column_types = [Number(), Date()]

        table = Table(rows, column_names, column_types)

        with self.assertRaises(DataTypeError):
            table.compute([('test', Change('number', 'date'))])
Example #6
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()
        ]
Example #7
0
    def test_test_format(self):
        date_type = Date(date_format='%m-%d-%Y')

        self.assertEqual(date_type.test('3/1/1994'), False)
        self.assertEqual(date_type.test('03-01-1994'), True)
        self.assertEqual(date_type.test(datetime.date(1994, 3, 1)), True)
Example #8
0
 def setUp(self):
     self.type = Date()
Example #9
0
class TestDate(unittest.TestCase):
    def setUp(self):
        self.type = Date()

    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), False)
        self.assertEqual(self.type.test('True'), False)
        self.assertEqual(self.type.test(1), False)
        self.assertEqual(self.type.test(Decimal('1')), False)
        self.assertEqual(self.type.test('2.7'), True)
        self.assertEqual(self.type.test(2.7), False)
        self.assertEqual(self.type.test('3/1/1994'), True)
        self.assertEqual(self.type.test(datetime.date(1994, 3, 1)), True)
        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'), True)
        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)
        self.assertEqual(self.type.test('MC 5.7.10 Per Dorothy Carroll'),
                         False)
        self.assertEqual(
            self.type.test('testing workgroup fix - 4/7/2010 - Marcy Liberty'),
            False)

    def test_test_format(self):
        date_type = Date(date_format='%m-%d-%Y')

        self.assertEqual(date_type.test('3/1/1994'), False)
        self.assertEqual(date_type.test('03-01-1994'), True)
        self.assertEqual(date_type.test(datetime.date(1994, 3, 1)), True)

    def test_iso_format(self):
        values = ('1994-03-01', '2011-02-17')
        casted = tuple(self.type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 3, 1), datetime.date(2011, 2, 17)))

    def test_cast_parser(self):
        values = ('3/1/1994', '2/17/2011', None, 'January 5th, 1984', 'n/a')
        casted = tuple(self.type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 3, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))

    def test_cast_format(self):
        date_type = Date(date_format='%m-%d-%Y')

        values = ('03-01-1994', '02-17-2011', None, '01-05-1984', 'n/a')
        casted = tuple(date_type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 3, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))

    def test_cast_format_locale(self):
        date_type = Date(date_format='%d-%b-%Y', locale='de_DE.UTF-8')

        # March can be abbreviated to Mrz or Mär depending on the locale version,
        # so we use December in the first value to ensure the test passes everywhere
        values = ('01-Dez-1994', '17-Feb-2011', None, '05-Jan-1984', 'n/a')
        casted = tuple(date_type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 12, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))

    def test_cast_locale(self):
        date_type = Date(locale='fr_FR')

        values = ('01 mars 1994', u'jeudi 17 février 2011', None,
                  '5 janvier 1984', 'n/a')
        casted = tuple(date_type.cast(v) for v in values)
        self.assertSequenceEqual(
            casted, (datetime.date(1994, 3, 1), datetime.date(
                2011, 2, 17), None, datetime.date(1984, 1, 5), None))

    def test_cast_error(self):
        with self.assertRaises(CastError):
            self.type.cast('quack')

    def test_pickle_parser(self):
        from_pickle = pickle.loads(pickle.dumps(self.type))
        self.assertEqual(from_pickle.date_format, self.type.date_format)
        self.assertEqual(from_pickle.locale, self.type.locale)
        self.assertIsInstance(from_pickle._constants, parsedatetime.Constants)
        self.assertIsInstance(from_pickle._parser, parsedatetime.Calendar)