Пример #1
0
def test_pwr2():
    env = stdlib.copy()
    evaldef(
        "pwr2   =   ap ap s ap ap c ap eq 0 1 ap ap b ap mul 2 ap ap b pwr2 ap add -1",
        env,
    )
    assert eval(parse("ap pwr2 8".split()), env) == Number(256)
Пример #2
0
def test_false_returns_bool():
    assert eval(parse("f".split())) == stdlib["f"]
Пример #3
0
def test_true_returns_bool():
    assert eval(parse("t".split())) == stdlib["t"]
Пример #4
0
def test_div_returns_integer():
    assert eval(parse("ap ap div 10 4".split())) == Number(2)
Пример #5
0
def test_div_with_two_numbers_returns_result():
    assert eval(parse("ap ap div 12 4".split())) == Number(3)
Пример #6
0
def test_c_combinator():
    assert eval(parse("ap ap ap c add 1 2".split())) == Number(3)
Пример #7
0
def test_lt_with_lhs_greater_than_rhs_returns_false():
    assert eval(parse("ap ap lt 2 1".split())) == stdlib["f"]
Пример #8
0
def test_lt_with_equal_numbers_returns_false():
    assert eval(parse("ap ap lt 1 1".split())) == stdlib["f"]
Пример #9
0
def test_parse_id_returns_id():
    assert parse(["a"]) == Var("a")
Пример #10
0
def test_parse_number_returns_number():
    assert parse(["-123"]) == Number(-123)
    assert parse(["123"]) == Number(123)
Пример #11
0
def test_f_combinator():
    assert eval(parse("ap ap f 1 5".split())) == Number(5)
    assert eval(parse("ap ap f f ap inc 5".split())) == Number(6)
    assert eval(parse("ap ap f ap inc 5 t".split())) == stdlib["t"]
Пример #12
0
def test_t_combinator():
    assert eval(parse("ap ap t 1 5".split())) == Number(1)
    assert eval(parse("ap ap t t ap inc 5".split())) == stdlib["t"]
    assert eval(parse("ap ap t ap inc 5 t".split())) == Number(6)
    assert eval(parse("ap ap t t i".split())) == stdlib["t"]
Пример #13
0
def test_b_combinator():
    assert eval(parse("ap ap ap b inc dec 5".split())) == Number(5)
Пример #14
0
def test_eq_with_numbers():
    assert eval(parse("ap ap eq 1 1".split())) == stdlib["t"]
    assert eval(parse("ap ap eq 1 2".split())) == stdlib["f"]
Пример #15
0
def test_parse_app():
    exp = parse(["ap", "ap", "add", "1", "2"])
    assert eval(exp) == Number(3)
Пример #16
0
def test_eq_with_bool():
    assert eval(parse("ap ap eq t t".split())) == stdlib["t"]
    assert eval(parse("ap ap eq t f".split())) == stdlib["f"]
Пример #17
0
def test_parse_app2():
    # From the video
    exp = parse("ap dec ap ap add 1 2".split())
    assert eval(exp) == Number(2)
Пример #18
0
def test_lt_with_lhs_less_than_rhs_returns_true():
    assert eval(parse("ap ap lt 1 2".split())) == stdlib["t"]
Пример #19
0
def test_mul_with_two_numbers_returns_result():
    assert eval(parse("ap ap mul 3 4".split())) == Number(12)
Пример #20
0
def test_neg_with_negative_returns_positive():
    assert eval(parse("ap neg -5".split())) == Number(5)
Пример #21
0
def test_s_combinator():
    assert eval(parse("ap ap ap s add inc 1".split())) == Number(3)
    assert eval(parse("ap ap ap s mul ap add 1 6".split())) == Number(42)