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
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
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
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
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
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
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
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
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
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
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
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