def test_search_wrong_type(self):
     uut = SearcherCollection([
         RegexSearcher(b'omicron'),
         RegexSearcher(b'[eu]psilon'),
     ])
     with self.assertRaises(TypeError):
         uut.search(u('pi omicron mu'))
 def test_multi_regex_single_match(self):
     uut = SearcherCollection([
         RegexSearcher('omicron'),
         RegexSearcher('[eu]psilon'),
     ])
     match = uut.search('pi epsilon iota rho')
     self.assertIsNotNone(match)
     self.assertEqual(1, uut.index(match.searcher))
     self.assertEqual(3, match.start)
     self.assertEqual(10, match.end)
 def test_constructor(self):
     s1, s2 = TextSearcher(u('')), TextSearcher(u(''))
     searcher = SearcherCollection(s1, s2)
     self.assertEqual(six.text_type, searcher.match_type)
     self.assertEqual([s1, s2], list(searcher))
     searcher = SearcherCollection([s1, s2])
     self.assertEqual(six.text_type, searcher.match_type)
     self.assertEqual([s1, s2], list(searcher))
     searcher = SearcherCollection(s1)
     self.assertEqual([s1], list(searcher))
     self.assertEqual(six.text_type, searcher.match_type)
 def test_multi_regex_multi_match(self):
     uut = SearcherCollection([
         RegexSearcher(u('omicron')),
         RegexSearcher(u('[eu]psilon')),
         TextSearcher(u('pi')),
         TextSearcher(u('iota')),
     ])
     match = uut.search(u('pi iota epsilon upsilon omicron'))
     self.assertIsNotNone(match)
     self.assertEqual(2, uut.index(match.searcher))
     self.assertEqual(0, match.start)
     self.assertEqual(2, match.end)
    def test_constructor_invalid(self):
        with self.assertRaises(ValueError):
            SearcherCollection([])
        with self.assertRaises(TypeError):
            SearcherCollection(1)
        with self.assertRaises(ValueError):
            SearcherCollection(TextSearcher(u('')), BytesSearcher(b''))

        NoSearchSearcher = type('NoSearchSearcher', (object,),
                                {'match_type': None})
        with self.assertRaises(TypeError):
            SearcherCollection(NoSearchSearcher())

        NoMatchTypeSearcher = type('NoMatchTypeSearcher', (object,),
                                   {'search': None})
        with self.assertRaises(TypeError):
            SearcherCollection(NoMatchTypeSearcher())
 def test_repr(self):
     # Only check no exceptions thrown
     searcher = SearcherCollection([TextSearcher(u('epsilon')),
                                    RegexSearcher(u('[eu]psilon'))])
     repr(searcher)