def test_match(self): # Assert Match properties. s = Sentence(parse("Death awaits you all with nasty, big, pointy teeth.")) p = search.Pattern(sequence=[ search.Constraint(tags=["JJ"], optional=True), search.Constraint(tags=["NN*"])]) m = p.search(s) self.assertTrue(isinstance(m, list)) self.assertEqual(m[0].pattern, p) self.assertEqual(m[1].pattern, p) self.assertEqual(m[0].words, [s.words[0]]) self.assertEqual(m[1].words, [s.words[-3], s.words[-2]]) # Assert contraint "NN*" links to "Death" and "teeth", and "JJ" to "pointy". self.assertEqual(m[0].constraint(s.words[ 0]), p[1]) self.assertEqual(m[1].constraint(s.words[-3]), p[0]) self.assertEqual(m[1].constraint(s.words[-2]), p[1]) # Assert constraints "JJ NN*" links to chunk "pointy teeth". self.assertEqual(m[1].constraints(s.chunks[6]), [p[0], p[1]]) # Assert Match.constituents() by constraint, constraint index and list of indices. self.assertEqual(m[1].constituents(), [s.chunks[6]]) self.assertEqual(m[1].constituents(constraint=p[0]), [s.words[-3]]) self.assertEqual(m[1].constituents(constraint=1), [s.words[-2]]) self.assertEqual(m[1].constituents(constraint=(0,1)), [s.chunks[6]]) # Assert Match.string. self.assertEqual(m[1].string, "pointy teeth") print "pattern.search.Match"
def test_pattern(self): # Assert Pattern properties. v = search.Pattern([ search.Constraint("a|an|the"), search.Constraint("JJ*"), search.Constraint("cat")], search.STRICT) self.assertEqual(len(v), 3) self.assertEqual(v.strict, True) print "pattern.search.Pattern"
def test_group_ordering(self): # Assert group parser ordering (opened-first). c1 = search.Constraint("1") c2 = search.Constraint("2") c3 = search.Constraint("3") c4 = search.Constraint("4") p = search.Pattern([c1, [c2, [[c3], c4]]]) self.assertEqual(p.groups[0][0].words[0], "2") self.assertEqual(p.groups[0][1].words[0], "3") self.assertEqual(p.groups[0][2].words[0], "4") self.assertEqual(p.groups[1][0].words[0], "3") self.assertEqual(p.groups[1][1].words[0], "4") self.assertEqual(p.groups[2][0].words[0], "3") p = search.Pattern.fromstring("1 {2 {{3} 4}}") self.assertEqual(p.groups[0][0].words[0], "2") self.assertEqual(p.groups[0][1].words[0], "3") self.assertEqual(p.groups[0][2].words[0], "4") self.assertEqual(p.groups[1][0].words[0], "3") self.assertEqual(p.groups[1][1].words[0], "4") self.assertEqual(p.groups[2][0].words[0], "3") p = search.Pattern.fromstring("1 {2} {3} 4") self.assertEqual(p.groups[0][0].words[0], "2") self.assertEqual(p.groups[1][0].words[0], "3")