Esempio n. 1
0
def test_macher_ltgt_multiply():
    m1 = Rule('A', 'a', lambda f: True, multiply=Decimal('1'))
    m2 = Rule('A', 'a', lambda f: True, multiply=Decimal('2'))
    assert m1 < m2
    assert not (m2 < m1)
    assert m2 > m1
    assert not (m1 > m2)
Esempio n. 2
0
def test_macher_ltgt_incompatible():
    m1 = Rule('A', 'a', lambda f: True, add=Decimal('1'))
    m2 = Rule('A', 'a', lambda f: True, multiply=Decimal('2'))

    with pytest.raises(Exception):
        m1 < m2
    with pytest.raises(Exception):
        m1 > m2
Esempio n. 3
0
def test_rule_call_passing_1():
    args = None

    def impl(a):
        nonlocal args
        args = [a]
        return True

    m = Rule('A', 'a', impl, add=Decimal('1'))
    m.match(0, 1, 2)
    assert args == [0]
Esempio n. 4
0
def test_rule_init_add_and_multiply():
    with pytest.raises(AssertionError):
        Rule('A',
             'a',
             lambda x: False,
             add=Decimal('1'),
             multiply=Decimal('2'))
Esempio n. 5
0
def make_rule(slug, **kwargs):
    return Rule(
        'R_' + slug,
        'Rule',
        lambda m: True,
        **kwargs,
    )
Esempio n. 6
0
def test_estg3bbase_add_rules_extend():
    e = EStG3b('DE')(add_rules=[
        RuleGroup('GRP_DE_NIGHT',
                  '',
                  rules=[
                      Rule('SPECIAL',
                           'Special',
                           lambda m: True,
                           multiply=Decimal("1")),
                  ]),
    ])

    group = dict((g._slug, g) for g in e._groups)['GRP_DE_NIGHT']
    assert 'SPECIAL' in group
Esempio n. 7
0
def test_macher_str():
    m = Rule('SLUG', 'description', lambda f: True, add=Decimal('1'))
    assert 'SLUG' in str(m)
    assert 'description' in str(m)
Esempio n. 8
0
def test_rule_init__no_add_or_multiply():
    with pytest.raises(AssertionError):
        Rule('A', 'a', lambda x: False)
Esempio n. 9
0
def test_rule_call_rtn_type(impl):
    m = Rule('A', 'a', impl, add=Decimal('1'))
    m.match(None, None, None)
Esempio n. 10
0
def test_rule_call_rtn_type_crash():
    m = Rule('A', 'a', lambda x: None, add=Decimal('1'))
    with pytest.raises(AssertionError):
        m.match(None, None, None)
Esempio n. 11
0
def test_rule_init_no_description():
    with pytest.raises(AssertionError):
        Rule('X', '', lambda x: False)
Esempio n. 12
0
def test_rule_init_impl_nargs_crash(impl):
    with pytest.raises(AssertionError):
        Rule('A', 'a', impl)
Esempio n. 13
0
def test_rule_init_no_slug():
    with pytest.raises(AssertionError):
        Rule('', 'xx', lambda x: False)
Esempio n. 14
0
def test_rule_init():
    m = Rule('A', 'a', lambda x: False, add=Decimal('1'))
    m.match(None, None, None)
Esempio n. 15
0
def test_macher_eq():
    m1 = Rule('A', 'a', lambda f: True, add=Decimal('1'))
    m2 = Rule('A', 'a', lambda f: True, add=Decimal('2'))
    assert m1 == m2
Esempio n. 16
0
def test_rule_init_decimal_add():
    with pytest.raises(AssertionError):
        Rule('A', 'a', lambda x: False, add=0.1)
Esempio n. 17
0
def test_rule_init_decimal_multiply():
    with pytest.raises(AssertionError):
        Rule('A', 'a', lambda x: False, multiply=0.1)