def test_standard_parsing(self): results = chrono.parse("初めて動画が投稿されたのは 4月23日である", datetime(2012, 8, 10)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, len('初めて動画が投稿されたのは ')) self.assertEqual(result.text, '4月23日') self.assertEqual(result.start.get('day'), 23) self.assertEqual(result.start.get('month'), 4) self.assertEqual(result.start.get('year'), 2012) self.assertEqual(result.start.date(), datetime(2012, 4, 23, 12)) results = chrono.parse("主な株主(2012年9月3日現在)", datetime(2012, 8, 10)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, len('主な株主(')) self.assertEqual(result.text, '2012年9月3日') self.assertEqual(result.start.get('day'), 3) self.assertEqual(result.start.get('month'), 9) self.assertEqual(result.start.get('year'), 2012) self.assertEqual(result.start.date(), datetime(2012, 9, 3, 12)) results = chrono.parse("主な株主(2013年9月13日現在)", datetime(2012, 8, 10)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, len('主な株主(')) self.assertEqual(result.text, '2013年9月13日') self.assertEqual(result.start.get('day'), 13) self.assertEqual(result.start.get('month'), 9) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 9, 13, 12))
def test_middle_endian(self): results = chrono.parse('Test : March 24, 2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, 'March 24, 2013') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 24, 12)) results = chrono.parse('Test : mar 24 2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, 'mar 24 2013') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 24, 12)) results = chrono.parse('Test : March 24, test', datetime(2000, 10, 1)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, 'March 24') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2001) self.assertEqual(result.start.date(), datetime(2001, 3, 24, 12))
def test_slash_format_bc(self): # BC years results = chrono.parse('Test : 2/27/2556') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2/27/2556') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 12)) # BC years short results = chrono.parse('Test : 2/27/56') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2/27/56') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 12))
def test_little_endian(self): results = chrono.parse('Test : 24 March 2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 March 2013') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 24, 12)) results = chrono.parse('Test : 24 Mar 2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 Mar 2013') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 24, 12)) results = chrono.parse('Test : 24 mar 2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 mar 2013') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 24, 12)) results = chrono.parse('Test : 24 Mar', datetime(2012,3,22)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 Mar') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2012) self.assertEqual(result.start.date(), datetime(2012, 3, 24, 12)) results = chrono.parse('Test : 24 March, test', datetime(2000,10,1)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 March') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2001) self.assertEqual(result.start.date(), datetime(2001, 3, 24, 12))
def test_little_endian_with_imposible_date(self): results = chrono.parse("32 August") self.assertEquals(len(results), 0) results = chrono.parse("32 August 2014") self.assertEquals(len(results), 0) results = chrono.parse("29 Feb 2014") self.assertEquals(len(results), 0)
def test_middle_endian_with_imposible_date(self): results = chrono.parse("August 32") self.assertEquals(len(results), 0) results = chrono.parse("August 32, 2014") self.assertEquals(len(results), 0) results = chrono.parse("Feb 29, 2014") self.assertEquals(len(results), 0)
def test_iso_format_with_imposible_date(self): results = chrono.parse("2013-8-32") self.assertEquals(len(results), 0) results = chrono.parse("2014-8-32") self.assertEquals(len(results), 0) results = chrono.parse("2014-2-29") self.assertEquals(len(results), 0)
def test_date_time_as_point(self): results = chrono.parse('Test : 2013-2-27T21:08:12') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-2-27T21:08:12') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.get('hour'), 21) self.assertEqual(result.start.get('minute'), 8) self.assertEqual(result.start.get('second'), 12) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 21,8,12)) results = chrono.parse('Test : 21:08:12 on 2013-2-27') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '21:08:12 on 2013-2-27') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.get('hour'), 21) self.assertEqual(result.start.get('minute'), 8) self.assertEqual(result.start.get('second'), 12) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 21,8,12)) results = chrono.parse('Test : 2013-2-27 at 21:08:12') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-2-27 at 21:08:12') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.get('hour'), 21) self.assertEqual(result.start.get('minute'), 8) self.assertEqual(result.start.get('second'), 12) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 21,8,12)) results = chrono.parse('Test : 2013-2-27 on 9:08 PM') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-2-27 on 9:08 PM') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.get('hour'), 21) self.assertEqual(result.start.get('minute'), 8) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 21,8))
def test_basic_2_chorono_functions(self): results = chrono.parse('Hello World') self.assertEqual(len(results), 0) result = chrono.parse_date('Hello World') self.assertEqual(result, None) results = chrono.parse('Test : 2013-2-27') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-2-27')
def test_little_endian_range(self): results = chrono.parse('Test : 24 - 25 Mar', datetime(2012, 3, 22)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 - 25 Mar') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2012) self.assertEqual(result.start.date(), datetime(2012, 3, 24, 12)) self.assertEqual(result.end.get('day'), 25) self.assertEqual(result.end.get('month'), 3) self.assertEqual(result.end.get('year'), 2012) self.assertEqual(result.end.date(), datetime(2012, 3, 25, 12)) results = chrono.parse('Test : 24 - 25 Mar 2014', datetime(2012, 3, 22)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 - 25 Mar 2014') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2014) self.assertEqual(result.start.date(), datetime(2014, 3, 24, 12)) self.assertEqual(result.end.get('day'), 25) self.assertEqual(result.end.get('month'), 3) self.assertEqual(result.end.get('year'), 2014) self.assertEqual(result.end.date(), datetime(2014, 3, 25, 12)) results = chrono.parse('Test : 24 Feb - 2 Mar 2014', datetime(2012, 3, 22)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '24 Feb - 2 Mar 2014') self.assertEqual(result.start.get('day'), 24) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2014) self.assertEqual(result.start.date(), datetime(2014, 2, 24, 12)) self.assertEqual(result.end.get('day'), 2) self.assertEqual(result.end.get('month'), 3) self.assertEqual(result.end.get('year'), 2014) self.assertEqual(result.end.date(), datetime(2014, 3, 2, 12))
def test_en_random_parsing_1(self): results = chrono.parse( """An event on February 24, 2013, and another event on March 1, 2013""" ) self.assertEqual(len(results), 2) self.assertEqual(results[0].text, 'February 24, 2013') self.assertEqual(results[1].text, 'March 1, 2013')
def test_date_time_as_range(self): results = chrono.parse('Test : 2013-2-27 from 9:08 - 11.05 PM') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-2-27 from 9:08 - 11.05 PM') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.get('hour'), 21) self.assertEqual(result.start.get('minute'), 8) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 21,8)) self.assertEqual(result.end.get('day'), 27) self.assertEqual(result.end.get('month'), 2) self.assertEqual(result.end.get('year'), 2013) self.assertEqual(result.end.get('hour'), 23) self.assertEqual(result.end.get('minute'), 5) self.assertEqual(result.end.date(), datetime(2013, 2, 27, 23, 5)) results = chrono.parse('Test : 2013-2-27 at 9:08 to 11.55') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-2-27 at 9:08 to 11.55') self.assertEqual(result.start.get('day'), 27) self.assertEqual(result.start.get('month'), 2) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.get('hour'), 9) self.assertEqual(result.start.get('minute'), 8) self.assertEqual(result.start.date(), datetime(2013, 2, 27, 9,8)) self.assertEqual(result.end.get('day'), 27) self.assertEqual(result.end.get('month'), 2) self.assertEqual(result.end.get('year'), 2013) self.assertEqual(result.end.get('hour'), 11) self.assertEqual(result.end.get('minute'), 55) self.assertEqual(result.end.date(), datetime(2013, 2, 27, 11, 55))
def test_en_random_parsing_1(self): results = chrono.parse( """A Wiki is a website which is editable over the web by it's users. This allows information to be more rapidly updated than traditional websites. Many Apache projects make active use of wikis for community support and for extra project information, in addition to their main project websites. This General Wiki is a top-level overview of other wikis at the Apache Software Foundation, as well as overall Foundation-level information, at the bottom of this page.""" ) self.assertEqual(len(results), 0)
def test_iso_format(self): results = chrono.parse('Test : 2013-3-22', datetime(2013, 3, 22)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2013-3-22') self.assertEqual(result.start.get('day'), 22) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 22, 12))
def test_little_endian_with_time(self): results = chrono.parse('Test : 2 Mar 2014 (10.00 - 11.00 AM)', datetime(2012,3,22)) self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, '2 Mar 2014 (10.00 - 11.00 AM)') self.assertEqual(result.start.get('day'), 2) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2014) self.assertEqual(result.start.date(), datetime(2014, 3, 2, 10)) self.assertEqual(result.end.get('day'), 2) self.assertEqual(result.end.get('month'), 3) self.assertEqual(result.end.get('year'), 2014) self.assertEqual(result.end.date(), datetime(2014, 3, 2, 11))
def test_slash_format_range(self): results = chrono.parse(' 5/1/2013 - 5/10/2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 1) self.assertEqual(result.text, '5/1/2013 - 5/10/2013') self.assertEqual(result.start.get('day'), 1) self.assertEqual(result.start.get('month'), 5) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 5, 1, 12)) self.assertEqual(result.end.get('day'), 10) self.assertEqual(result.end.get('month'), 5) self.assertEqual(result.end.get('year'), 2013) self.assertEqual(result.end.date(), datetime(2013, 5, 10, 12))
def test_middle_endian_as_range(self): results = chrono.parse('Test : Mar 21 to 25, 2013') self.assertEqual(len(results), 1) result = results[0] self.assertEqual(result.index, 7) self.assertEqual(result.text, 'Mar 21 to 25, 2013') self.assertEqual(result.start.get('day'), 21) self.assertEqual(result.start.get('month'), 3) self.assertEqual(result.start.get('year'), 2013) self.assertEqual(result.start.date(), datetime(2013, 3, 21, 12)) self.assertEqual(result.end.get('day'), 25) self.assertEqual(result.end.get('month'), 3) self.assertEqual(result.end.get('year'), 2013) self.assertEqual(result.end.date(), datetime(2013, 3, 25, 12))
def test_slash_format_impossible(self): results = chrono.parse('Impossible 2/29/2013') self.assertEqual(len(results), 0)