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_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_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_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))
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'))])
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_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 setUp(self): self.type = Date()
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)