示例#1
0
 def test_not_one_constraint_something_matched_but_constraint_rejected_it(
         self):
     rule = Rule(
         [self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_NOT
     )  # yapf: disable
     effect_clues_dict = {
         'effect': Clue((42, ), '42 dinners', 1420, self.line_source)
     }
     clues = {
         'cause_a': [
             Clue((13,), '13 carrots', 130, self.line_source),
         ],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert results
     assert len(results) == 1
     assert results[0].lines == []
     assert results[0].constraints_linkage == InvestigationResult.NOT
示例#2
0
 def test_not_one_constraint_something_matched_but_constraint_approves(
         self):
     rule = Rule(
         [self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_NOT
     )  # yapf: disable
     effect_clues_dict = {
         'effect': Clue((42, ), '42 dinners', 1420, self.line_source)
     }
     clues = {
         'cause_a': [
             Clue((42,), '42 carrots', 420, self.line_source),
         ],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert not results
示例#3
0
 def test_not_one_constraint_something_matched_but_constraint_rejected_it(self):
     rule = Rule(
         [self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_NOT
     )  # yapf: disable
     effect_clues_dict = {'effect': Clue((42,), '42 dinners', 1420, self.line_source)}
     clues = {
         'cause_a': [
             Clue((13,), '13 carrots', 130, self.line_source),
         ],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert results
     assert len(results) == 1
     assert results[0].lines == []
     assert results[0].constraints_linkage == InvestigationResult.NOT
示例#4
0
 def test_one_matched_line_when_two_occurrences_requested(self):
     rule = Rule(
         [self.cause_a, self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1], [2, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_AND
     )  # yapf: disable
     effect_clues_dict = {
         'effect': Clue((42, ), '42 dinners', 1420, self.line_source)
     }
     clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
         'cause_a': [
             Clue((42,), '42 carrots', 420, self.line_source),
         ],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert effect_clues_dict['effect'].regex_parameters[0] == \
         clues['cause_a'][0].regex_parameters[0]
     assert not results
示例#5
0
    def test_constraints_check_same_cause_parser_as_effect(self):
        rule = Rule(
            [self.cause_a], self.cause_a, [
                {
                    'clues_groups': [[0, 1], [1, 1]],
                    'name': 'identical',
                    'params': {}
                }
            ], Rule.LINKAGE_AND
        )  # yapf: disable
        effect_clues_dict = {
            'cause_a': Clue((42, ), '42 carrots', 1420, self.line_source)
        }
        clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
            'cause_a': [
                Clue((40,), '40 carrots', 400, self.line_source),
                Clue((42,), '42 carrots', 420, self.line_source),
                Clue((44,), '44 carrots', 440, self.line_source)
            ],
            'dummy': [
                Clue((98,), '98 foo bar', 980, self.line_source),
                Clue((99,), '99 foo bar', 990, self.line_source)
            ]
        }  # yapf: disable
        results = rule.constraints_check(clues, effect_clues_dict)

        assert len(results) == 1

        assert results[0].lines == [
            FrontInput.from_clue(
                Clue((42,), '42 carrots', 420, self.line_source))
        ]  # yapf: disable
示例#6
0
    def test_constraints_check_same_cause_parser_as_effect(self):
        rule = Rule(
            [self.cause_a], self.cause_a, [
                {
                    'clues_groups': [[0, 1], [1, 1]],
                    'name': 'identical',
                    'params': {}
                }
            ], Rule.LINKAGE_AND
        )  # yapf: disable
        effect_clues_dict = {'cause_a': Clue((42,), '42 carrots', 1420, self.line_source)}
        clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
            'cause_a': [
                Clue((40,), '40 carrots', 400, self.line_source),
                Clue((42,), '42 carrots', 420, self.line_source),
                Clue((44,), '44 carrots', 440, self.line_source)
            ],
            'dummy': [
                Clue((98,), '98 foo bar', 980, self.line_source),
                Clue((99,), '99 foo bar', 990, self.line_source)
            ]
        }  # yapf: disable
        results = rule.constraints_check(clues, effect_clues_dict)

        assert len(results) == 1

        assert results[0].lines == [
            FrontInput.from_clue(
                Clue((42,), '42 carrots', 420, self.line_source))
        ]  # yapf: disable
示例#7
0
 def test_empty_clues_going_to_verify(self):
     rule = Rule(
         [self.cause_a, self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1], [2, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_AND
     )  # yapf: disable
     effect_clues_dict = {'effect': Clue((42,), '42 dinners', 1420, self.line_source)}
     clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
         'cause_a': [],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert not results
示例#8
0
    def test_constraints_check_basic(self):
        rule = Rule(
            [self.cause_a, self.cause_b], self.effect, [
                {
                    'clues_groups': [[0, 1], [1, 1], [2, 1]],
                    'name': 'identical',
                    'params': {}
                }
            ], Rule.LINKAGE_AND
        )  # yapf: disable
        effect_clues_dict = {
            'effect': Clue((42, ), '42 dinners', 1420, self.line_source)
        }
        clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
            'cause_a': [
                Clue((40,), '40 carrots', 400, self.line_source),
                Clue((42,), '42 carrots', 420, self.line_source),
                Clue((44,), '44 carrots', 440, self.line_source)
            ],
            'cause_b': [
                Clue((32,), '32 broccoli', 100, self.line_source),
                Clue((42,), '42 broccoli', 120, self.line_source),
                Clue((52,), '52 broccoli', 140, self.line_source)
            ],
            'dummy': [
                Clue((42,), '42 foo bar', 980, self.line_source),
                Clue((84,), '84 foo bar', 990, self.line_source)
            ]
        }  # yapf: disable
        results = rule.constraints_check(clues, effect_clues_dict)

        assert len(results) == 1

        assert results[0].lines == [
            FrontInput.from_clue(
                Clue((42,), '42 carrots', 420, self.line_source)),
            FrontInput.from_clue(
                Clue((42,), '42 broccoli', 120, self.line_source))
        ]  # yapf: disable
示例#9
0
 def test_empty_clues_going_to_verify(self):
     rule = Rule(
         [self.cause_a, self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1], [2, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_AND
     )  # yapf: disable
     effect_clues_dict = {
         'effect': Clue((42, ), '42 dinners', 1420, self.line_source)
     }
     clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
         'cause_a': [],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert not results
示例#10
0
 def test_not_one_constraint_something_matched_but_constraint_approves(self):
     rule = Rule(
         [self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_NOT
     )  # yapf: disable
     effect_clues_dict = {'effect': Clue((42,), '42 dinners', 1420, self.line_source)}
     clues = {
         'cause_a': [
             Clue((42,), '42 carrots', 420, self.line_source),
         ],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert not results
示例#11
0
    def test_constraints_check_basic(self):
        rule = Rule(
            [self.cause_a, self.cause_b], self.effect, [
                {
                    'clues_groups': [[0, 1], [1, 1], [2, 1]],
                    'name': 'identical',
                    'params': {}
                }
            ], Rule.LINKAGE_AND
        )  # yapf: disable
        effect_clues_dict = {'effect': Clue((42,), '42 dinners', 1420, self.line_source)}
        clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
            'cause_a': [
                Clue((40,), '40 carrots', 400, self.line_source),
                Clue((42,), '42 carrots', 420, self.line_source),
                Clue((44,), '44 carrots', 440, self.line_source)
            ],
            'cause_b': [
                Clue((32,), '32 broccoli', 100, self.line_source),
                Clue((42,), '42 broccoli', 120, self.line_source),
                Clue((52,), '52 broccoli', 140, self.line_source)
            ],
            'dummy': [
                Clue((42,), '42 foo bar', 980, self.line_source),
                Clue((84,), '84 foo bar', 990, self.line_source)
            ]
        }  # yapf: disable
        results = rule.constraints_check(clues, effect_clues_dict)

        assert len(results) == 1

        assert results[0].lines == [
            FrontInput.from_clue(
                Clue((42,), '42 carrots', 420, self.line_source)),
            FrontInput.from_clue(
                Clue((42,), '42 broccoli', 120, self.line_source))
        ]  # yapf: disable
示例#12
0
 def test_one_matched_line_when_two_occurrences_requested(self):
     rule = Rule(
         [self.cause_a, self.cause_a], self.effect, [
             {
                 'clues_groups': [[0, 1], [1, 1], [2, 1]],
                 'name': 'identical',
                 'params': {}
             }
         ], Rule.LINKAGE_AND
     )  # yapf: disable
     effect_clues_dict = {'effect': Clue((42,), '42 dinners', 1420, self.line_source)}
     clues = {  # it's dictionary of the same type as clues dict collected in SearchManager
         'cause_a': [
             Clue((42,), '42 carrots', 420, self.line_source),
         ],
         'dummy': [
             Clue((98,), '98 foo bar', 980, self.line_source),
             Clue((99,), '99 foo bar', 990, self.line_source)
         ]
     }  # yapf: disable
     results = rule.constraints_check(clues, effect_clues_dict)
     assert effect_clues_dict['effect'].regex_parameters[0] == \
         clues['cause_a'][0].regex_parameters[0]
     assert not results