def test_error_not_question_only(self): field_list = ['?,*', '1,?', '?,SatL,Mon#1'] for field in field_list: with self.subTest(field=field): parser = FieldParser(field, 0, 6, word_set=weekday_word_set()) with self.assertRaises(FieldParseError): parser.parse_weekday_field()
def test_error_non_standard(self): field_list = ['?', 'FriL', 'Sat#2'] for field in field_list: non_standard_parser = FieldParser(field, 0, 6, word_set=weekday_word_set()) non_standard_parser.parse_weekday_field(non_standard=True) standard_parser = FieldParser(field, 0, 6, word_set=weekday_word_set()) with self.assertRaises(FieldParseError): standard_parser.parse_weekday_field(non_standard=False)
def test_last_range(self): for weekday in range(0, 10): with self.subTest(weekday=weekday): parser = FieldParser('{0}L'.format(weekday), 0, 6) if 0 <= weekday <= 6: result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, []) self.assertEqual(result.last, [weekday]) self.assertEqual(result.hash, []) else: with self.assertRaises(FieldParseError): parser.parse_weekday_field()
def test_hash_range(self): for weekday, week_number in itertools.product(range(0, 10), range(0, 10)): with self.subTest(weekday=weekday, week_number=week_number): parser = FieldParser('{0}#{1}'.format(weekday, week_number), 0, 6) if 0 <= weekday <= 6 and 1 <= week_number <= 5: result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, []) self.assertEqual(result.last, []) self.assertEqual(result.hash, [(weekday, week_number)]) else: with self.assertRaises(FieldParseError): parser.parse_weekday_field()
def test_last(self): parser = FieldParser('5L,1L,5L,3L', 0, 6) result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, []) self.assertEqual(result.last, [1, 3, 5]) self.assertEqual(result.hash, [])
def test_standard(self): parser = FieldParser('Sun,Sat', 0, 6, word_set=weekday_word_set()) result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, [0, 6]) self.assertEqual(result.last, []) self.assertEqual(result.hash, [])
def test_hash(self): parser = FieldParser('0#1,2#3,4#5,6#1,2#3,1#2,3#4', 0, 6) result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, []) self.assertEqual(result.last, []) self.assertEqual(result.hash, [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (6, 1)])
def test_not_standard(self): parser = FieldParser('Mon,Wed,Thu,Tue#2,Tue#4,FriL', 0, 6, word_set=weekday_word_set()) result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, [1, 3, 4]) self.assertEqual(result.last, [5]) self.assertEqual(result.hash, [(2, 2), (2, 4)])
def test_hash_with_word_set(self): parser = FieldParser('Sat#4,SAT#2,sat#4', 0, 6, word_set=weekday_word_set()) result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, []) self.assertEqual(result.last, []) self.assertEqual(result.hash, [(6, 2), (6, 4)])
def test_last_with_word_set(self): parser = FieldParser('FriL,MONL,friL', 0, 6, word_set=weekday_word_set()) result = parser.parse_weekday_field() self.assertFalse(result.is_any) self.assertFalse(result.is_blank) self.assertEqual(result.value, []) self.assertEqual(result.last, [1, 5]) self.assertEqual(result.hash, [])
def test_error_not_use_slash(self): parser = FieldParser('*/2', 0, 6) with self.assertRaises(FieldParseError): parser.parse_weekday_field(use_slash=False)