class TestRuleParser(unittest.TestCase): def setUp(self): self.parser = RuleParser() def test_patter_simple(self): rules_str = """ S : NP VP :: """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(rule.head, RuleParser.PatternToken('S', {'label': {'S'}})) self.assertEqual(rule.pattern[0], RuleParser.PatternToken('NP', {'label': {'NP'}})) self.assertEqual(rule.pattern[1], RuleParser.PatternToken('VP', {'label': {'VP'}})) def test_patter_complex(self): rules_str = """ S[type=animal] : NP[a={c,x}, b=0] VP :: """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual( rule.head, RuleParser.PatternToken('S', { 'label': {'S'}, 'type': {'animal'} })) self.assertEqual( rule.pattern[0], RuleParser.PatternToken('NP', { 'label': {'NP'}, 'a': {'c', 'x'}, 'b': {'0'} })) self.assertEqual(rule.pattern[1], RuleParser.PatternToken('VP', {'label': {'VP'}})) def test_relations_and_transformation(self): rules_str = """ VP : VBP NP PP : VBP -> NP, PP -> VBP : VBP """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(len(rule.relations), 2) self.assertEqual(rule.relations[0], ('VBP', 'NP')) self.assertEqual(rule.relations[1], ('PP', 'VBP')) self.assertEqual(rule.transformation, 'VBP') def test_string_replacement(self): rules_str = """ DT : a : : indefinite """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(len(rule.relations), 0) self.assertEqual(rule.transformation, 'indefinite')
class TestRuleParser(unittest.TestCase): def setUp(self): self.parser = RuleParser() def test_patter_simple(self): rules_str = """ S : NP VP :: """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(rule.head, RuleParser.PatternToken('S', {'label':{'S'}})) self.assertEqual(rule.pattern[0], RuleParser.PatternToken('NP', {'label':{'NP'}})) self.assertEqual(rule.pattern[1], RuleParser.PatternToken('VP', {'label':{'VP'}})) def test_patter_complex(self): rules_str = """ S[type=animal] : NP[a={c,x}, b=0] VP :: """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(rule.head, RuleParser.PatternToken('S', {'label':{'S'},'type':{'animal'}})) self.assertEqual(rule.pattern[0], RuleParser.PatternToken('NP', {'label':{'NP'},'a':{'c','x'},'b':{'0'}})) self.assertEqual(rule.pattern[1], RuleParser.PatternToken('VP', {'label':{'VP'}})) def test_relations_and_transformation(self): rules_str = """ VP : VBP NP PP : VBP -> NP, PP -> VBP : VBP """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(len(rule.relations), 2) self.assertEqual(rule.relations[0], ('VBP', 'NP')) self.assertEqual(rule.relations[1], ('PP', 'VBP')) self.assertEqual(rule.transformation, 'VBP') def test_string_replacement(self): rules_str = """ DT : a : : indefinite """ rule = self.parser.parse_rules(rules_str)[0] self.assertEqual(len(rule.relations), 0) self.assertEqual(rule.transformation, 'indefinite')