コード例 #1
0
def test_rule_has_consequence_when_false_different_field():
    def condition(subject):
        return subject['fruit'] == 'strawberry'
    
    def consequence(subject):
        subject['color'] = 'red'

    rule = Rule('all strawberries are red', condition, consequence, {'fruit': 'strawberry'}, ('fruit',))

    assert rule.has_consequence(condition) is False
コード例 #2
0
def test_rule_has_consequence_when_true():
    def condition(subject):
        return subject['fruit'] == 'strawberry'
    
    def consequence(subject):
        subject['color'] = 'red'

    rule = Rule('all strawberries are red', condition, consequence, {'fruit': 'strawberry'}, ('fruit',))

    assert rule.has_consequence({'color': 'red'})
コード例 #3
0
def test_rule_evaluate_returns_true_when_rule_pass():
    def condition(subject):
        return subject['fruit'] == 'strawberry'
    
    def consequence(subject):
        subject['color'] = 'red'

    rule = Rule('all strawberries are red', condition, consequence, {'fruit': 'strawberry'}, ('fruit',))

    assert rule.evaluate({'fruit': 'strawberry'})
コード例 #4
0
def test_rule_evaluate_raise_error_when_applied_to_subject_without_rule_field():
    def condition(subject):
        return subject['fruit'] == 'strawberry'
    
    def consequence(subject):
        subject['color'] = 'red'

    s = {}

    rule = Rule('all strawberries are red', condition, consequence, {'fruit': 'strawberry'}, ('fruit',))

    with pytest.raises(Rule.RuleNotApplyException):
        rule.evaluate(s)
コード例 #5
0
def test_rule_evaluate_does_not_apply_consequence_when_false():
    def condition(subject):
        return subject['fruit'] == 'strawberry'
    
    def consequence(subject):
        subject['color'] = 'red'

    s = {'fruit': 'lime'}

    rule = Rule('all strawberries are red', condition, consequence, {'fruit': 'strawberry'}, ('fruit',))
    rule.evaluate(s)

    assert s.get('color') is None