Esempio n. 1
0
    def test_sort_rules_used_in_invalid_parsing(self):
        rules_container = RulesContainer()
        rule1 = Rule()
        rule1.usages_in_invalid_parsing = 1
        rule1.fitness = 0.3
        rule2 = Rule()
        rule2.usages_in_invalid_parsing = 2
        rule2.fitness = 0.29
        rule3 = Rule()
        rule3.usages_in_invalid_parsing = 3
        rule3.fitness = 0.28
        rule4 = Rule()
        rule4.usages_in_invalid_parsing = 4
        rule4.fitness = 0.27
        rule5 = Rule()
        rule5.usages_in_invalid_parsing = 5
        rule5.fitness = 0.26
        rule6 = Rule()
        rule6.usages_in_invalid_parsing = 6
        rule6.fitness = 0.25

        invalid_parsing_rules = [rule1, rule2, rule3, rule4, rule5, rule6]
        sorted_rules = rules_container.sort_rules_used_in_invalid_parsing(
            invalid_parsing_rules)
        self.assertEqual(sorted_rules[0].fitness, rule6.fitness)
        self.assertEqual(sorted_rules[1].fitness, rule5.fitness)
        self.assertEqual(sorted_rules[2].fitness, rule4.fitness)
        self.assertEqual(sorted_rules[3].fitness, rule3.fitness)
        self.assertEqual(sorted_rules[4].fitness, rule2.fitness)
        self.assertEqual(sorted_rules[5].fitness, rule1.fitness)
Esempio n. 2
0
    def test_select_rules_not_used_in_parsing(self):
        rules_container = RulesContainer()
        rule1 = Rule()
        rule1.usages_in_invalid_parsing = 1
        rule2 = Rule()
        rule2.usages_in_invalid_parsing = 0
        rule3 = Rule()
        rule3.usages_in_invalid_parsing = 0
        rule4 = Rule()
        rule4.usages_in_invalid_parsing = 0
        rule5 = Rule()
        rule5.usages_in_invalid_parsing = 2
        rule6 = Rule()
        rule6.usages_in_invalid_parsing = 3

        non_terminal_rules = [rule1, rule2, rule3, rule4, rule5, rule6]
        rules_container.non_terminal_rules = non_terminal_rules

        invalid_usages_rules = rules_container.select_rules_used_in_invalid_parsing(
        )
        self.assertEqual(len(invalid_usages_rules), 3)
        self.assertEqual(invalid_usages_rules[0].usages_in_invalid_parsing,
                         rule1.usages_in_invalid_parsing)
        self.assertEqual(invalid_usages_rules[1].usages_in_invalid_parsing,
                         rule5.usages_in_invalid_parsing)
        self.assertEqual(invalid_usages_rules[2].usages_in_invalid_parsing,
                         rule6.usages_in_invalid_parsing)
Esempio n. 3
0
    def test_descriptions_generation(self):
        rule = Rule([self.left, self.rightTerminal])
        rule.fitness = 1
        rule.profit = 2
        rule.usages_in_invalid_parsing = 3
        rule.usages_in_proper_parsing = 4
        rule.debt = 5
        rule.age = 6

        descriptions = RulesService.get_description_string_for_rule(rule)
        self.assertEqual(descriptions[0], "fitness (f): 1")
        self.assertEqual(descriptions[1], "proper usages (u_p): 4")
        self.assertEqual(descriptions[2], "invalid usages (u_n): 3")
        self.assertEqual(descriptions[3], "profit (p): 2")
        self.assertEqual(descriptions[4], "debt (d): 5")
        self.assertEqual(descriptions[5], "age: 6")