def test_find_not_existing(self): self.assertIsNone(find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[])) self.assertIsNone(find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[5, 6])) self.assertIsNone(find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[7, 8])) self.assertIsNone(find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[1, 3]))
def test_find_all(self): self.assertEqual([0], find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[1], find_all=True)) self.assertEqual([2], find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[3], find_all=True)) self.assertEqual([4], find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[5], find_all=True)) self.assertEqual([0, 2, 4], find_slice_beg([1, 2, 1, 4, 1], slice_to_find=[1], find_all=True)) self.assertEqual([], find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[], find_all=True)) self.assertEqual([], find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[6], find_all=True)) self.assertEqual([], find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[6, 7], find_all=True))
def _find_all_introducers(self, source: List[str]): found_introducers = [] for introducer in self.introducers: introducer = split_on_special_characters( introducer, preserve_special_characters=True) found_indexes = find_slice_beg(source, slice_to_find=introducer, find_all=True, case_insensitive=True) found_introducers.extend([(idx, introducer) for idx in found_indexes]) found_introducers.sort(key=lambda idx_introducer: idx_introducer[0]) return found_introducers
def test_find_single_elem(self): self.assertEqual(0, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[1, 2])) self.assertEqual(1, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[2, 3])) self.assertEqual(2, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[3, 4])) self.assertEqual(3, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[4, 5])) self.assertEqual(0, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[1])) self.assertEqual(4, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[5])) self.assertEqual( 0, find_slice_beg([1, 2, 3, 4, 5], slice_to_find=[1, 2, 3, 4, 5]))
def _test_first_word_of_sentence_helper(self, sentence, analysis_subject, expected_result): source = split_on_special_characters(sentence, preserve_special_characters=True) analysis_subject = split_on_special_characters( analysis_subject, preserve_special_characters=True) slice_beg = find_slice_beg(source, slice_to_find=analysis_subject) assert slice_beg is not None slice_end = slice_beg + len(analysis_subject) match = AddressMatch( source=source, match_slice_position=(slice_beg, slice_end), location='' # doesn't matter ) assert match.matched_phrase == ' '.join(analysis_subject) ctx_analyser = FirstWordOfSentenceContext() self.assertEqual(ctx_analyser(match), expected_result) negated_ctx_analyser = FirstWordOfSentenceContext(negate=True) self.assertEqual(negated_ctx_analyser(match), not expected_result)
def test_find_case_insensitive(self): self.assertIsNotNone( find_slice_beg(["Nieopodal"], slice_to_find=["nieopodal"], case_insensitive=True))