Ejemplo n.º 1
0
def test_retract_logical_update_view():
    e = get_engine("""
        p :- retract(p :- true), fail.
        p :- true.
    """)
    assert_true("p.", e)
    assert_false("p.", e)
Ejemplo n.º 2
0
def test_retract_logical_update_view():
    e = get_engine("""
        p :- retract(p :- true), fail.
        p :- true.
    """)
    assert_true("p.", e)
    assert_false("p.", e)
Ejemplo n.º 3
0
def test_comparison():
    assert_true("1 =:= 1.0.")
    assert_true("1 + 1 > 1.")
    assert_true("1 + 0.001 >= 1 + 0.001.")
    assert_true("1 + 0.001 =< 1 + 0.001.")
    assert_false("1 > 1.")
    assert_false("1 =\\= 1.0.")
    assert_true("1 =\\= 32.")
Ejemplo n.º 4
0
def test_between():
    assert_true("between(12, 15, 12).")
    assert_true("between(-5, 15, 0).")
    assert_false("between(12, 15, 6).")
    assert_false("between(12, 15, 16).")
    heaps = collect_all(Engine(), "between(1, 4, X).")
    assert len(heaps) == 4
    assert heaps[0]['X'].num == 1
Ejemplo n.º 5
0
def test_between():
    assert_true("between(12, 15, 12).")
    assert_true("between(-5, 15, 0).")
    assert_false("between(12, 15, 6).")
    assert_false("between(12, 15, 16).")
    heaps = collect_all(Engine(), "between(1, 4, X).")
    assert len(heaps) == 4
    assert heaps[0]['X'].num == 1
Ejemplo n.º 6
0
def test_comparison():
    assert_true("1 =:= 1.0.")
    assert_true("1 + 1 > 1.")
    assert_true("1 + 0.001 >= 1 + 0.001.")
    assert_true("1 + 0.001 =< 1 + 0.001.")
    assert_false("1 > 1.")
    assert_true("1.1 > 1.")
    assert_false("1 =\\= 1.0.")
    assert_true("1 =\\= 32.")
Ejemplo n.º 7
0
def test_not_with_cut():
    e = get_engine("""
    p1 :- \\+ q1.
    q1 :- fail.
    q1 :- true.
    
    p2:- \\+ q2.
    q2 :- !, fail.
    q2 :- true.
    """)
    assert_false("p1.", e)
    assert_true("p2.", e)
Ejemplo n.º 8
0
def test_not_with_cut():
    e = get_engine("""
    p1 :- \\+ q1.
    q1 :- fail.
    q1 :- true.
    
    p2:- \\+ q2.
    q2 :- !, fail.
    q2 :- true.
    """)
    assert_false("p1.", e)
    assert_true("p2.", e)
Ejemplo n.º 9
0
def test_nonvar():
    e = get_engine("""
        g(X) :- nonvar(X).
        g(x, X) :- nonvar(x), nonvar(X).
        f(X, Y) :- nonvar(X), nonvar(Y).
    """)
    assert_true("g(a).", e)
    assert_false("g(X).", e)
    assert_true("g(x).", e)
    assert_true("g(x, a).", e)
    assert_true("g(X, X).", e)
    assert_false("f(X, X).", e)
Ejemplo n.º 10
0
def test_nonvar():
    e = get_engine("""
        g(X) :- nonvar(X).
        g(x, X) :- nonvar(x), nonvar(X).
        f(X, Y) :- nonvar(X), nonvar(Y).
    """)
    assert_true("g(a).", e)
    assert_false("g(X).", e)
    assert_true("g(x).", e)
    assert_true("g(x, a).", e)
    assert_true("g(X, X).", e)
    assert_false("f(X, X).", e)
Ejemplo n.º 11
0
def test_assert_at_right_end():
    e = get_engine("g(b, b). f(b, b). h(b, b).")
    assert_true("assert(g(a, a)).", e)
    assert_true("assertz(f(a, a)).", e)
    assert_true("A = a, asserta(h(A, A)).", e)
    f = assert_true("g(B, B).", e)
    assert f['B'].name == "b"
    f = assert_true("f(B, B).", e)
    assert f['B'].name == "b"
    assert_false("h(c, c).", e)
    f = assert_true("h(B, B).", e)
    assert f['B'].name == "a"
Ejemplo n.º 12
0
def test_assert_at_right_end():
    e = get_engine("g(b, b). f(b, b). h(b, b).")
    assert_true("assert(g(a, a)).", e)
    assert_true("assertz(f(a, a)).", e)
    assert_true("A = a, asserta(h(A, A)).", e)
    f = assert_true("g(B, B).", e)
    assert f['B'].name == "b"
    f = assert_true("f(B, B).", e)
    assert f['B'].name == "b"
    assert_false("h(c, c).", e)
    f = assert_true("h(B, B).", e)
    assert f['B'].name == "a"
Ejemplo n.º 13
0
def test_term_construction():
    assert_true("g(a, b, c) =.. [G, A, B, C].")
    assert_true("g(a, b, c) =.. [g, a, b, c].")
    assert_true("X =.. [g, a, b, c], X = g(a, b, c).")
    assert_true("arg(1, g(a, b, c), a).")
    assert_true("arg(2, g(a, b, c), b).")
    assert_true("arg(3, g(a, b, c), c).")
    assert_false("arg(3, g(a, b, c), d).")
    assert_false("arg(0, g(a, b, c), X).")
    assert_false("arg(10, g(a, b, c), X).")
    assert_true("arg(1, g(a, b, c), X), X = a.")
    assert_true("arg(2, f(a, b, c), X), X = b.")
    assert_true("arg(3, h(a, b, c), X), X = c.")
    e = get_engine("""
        f(1, a).
        f(2, b).
        f(3, c).
    """)
    heaps = collect_all(e, "arg(X, g(a, b, c), A), f(X, A).")
    assert len(heaps) == 3
    assert_true("arg(X, h(a, b, c), b), X = 2.")
    assert_true("arg(X, h(a, b, g(X, b)), g(3, B)), X = 3, B = b.")
    assert_true("copy_term(X, Y), X = 1, Y = 2.")
    assert_true("copy_term(a, a).")
    assert_false("copy_term(f(X), g(X)).")
    assert_true("copy_term(f(X), f(a)), X = b.")
Ejemplo n.º 14
0
def test_term_construction():
    assert_true("g(a, b, c) =.. [G, A, B, C].")
    assert_true("g(a, b, c) =.. [g, a, b, c].")
    assert_true("X =.. [g, a, b, c], X = g(a, b, c).")
    assert_true("arg(1, g(a, b, c), a).")
    assert_true("arg(2, g(a, b, c), b).")
    assert_true("arg(3, g(a, b, c), c).")
    assert_false("arg(3, g(a, b, c), d).")
    assert_false("arg(0, g(a, b, c), X).")
    assert_false("arg(10, g(a, b, c), X).")
    assert_true("arg(1, g(a, b, c), X), X = a.")
    assert_true("arg(2, f(a, b, c), X), X = b.")
    assert_true("arg(3, h(a, b, c), X), X = c.")
    e = get_engine("""
        f(1, a).
        f(2, b).
        f(3, c).
    """)
    heaps = collect_all(e, "arg(X, g(a, b, c), A), f(X, A).")
    assert len(heaps) == 3
    assert_true("arg(X, h(a, b, c), b), X = 2.")
    assert_true("arg(X, h(a, b, g(X, b)), g(3, B)), X = 3, B = b.")
    assert_true("copy_term(X, Y), X = 1, Y = 2.")
    assert_true("copy_term(a, a).")
    assert_false("copy_term(f(X), g(X)).")
    assert_true("copy_term(f(X), f(a)), X = b.")
Ejemplo n.º 15
0
def test_assert_retract():
    e = get_engine("g(b, b).")
    assert_true("g(B, B).", e)
    assert_true("assert(g(c, d)).", e)
    assert_true("assert(g(a, b)).", e)
    assert_true("assert(g(a, b)).", e)  # assert the same rule multiple times
    assert_true("g(B, B).", e)
    assert_true("g(a, b).", e)
    assert_true("g(c, d).", e)
    assert_true("retract(g(B, B)).", e)
    assert_false("g(B, B).", e)
    assert_true("retract(g(a, b)).", e)
    assert_true("g(a, b).", e)
    assert_true("retract(g(a, b)).", e)
    assert_false("retract(g(a, b)).", e)
    assert_false("g(a, b).", e)
    assert_true("g(c, d).", e)
    e = get_engine("""
        g(b, b).
        f(X) :- g(X, b).
        f(a).
    """)
    assert_true("f(b).", e)
    assert_true("f(a).", e)
    assert_true("retract(f(X) :- g(X, Y)), Y == b.", e)
    assert_false("f(b).", e)
    assert_true("f(a).", e)
    prolog_raises("permission_error(X, Y, Z)", "retract(atom(X))")
Ejemplo n.º 16
0
def test_assert_retract():
    e = get_engine("g(b, b).")
    assert_true("g(B, B).", e)
    assert_true("assert(g(c, d)).", e)
    assert_true("assert(g(a, b)).", e)
    assert_true("assert(g(a, b)).", e) # assert the same rule multiple times
    assert_true("g(B, B).", e)
    assert_true("g(a, b).", e)
    assert_true("g(c, d).", e)
    assert_true("retract(g(B, B)).", e)
    assert_false("g(B, B).", e)
    assert_true("retract(g(a, b)).", e)
    assert_true("g(a, b).", e)
    assert_true("retract(g(a, b)).", e)
    assert_false("retract(g(a, b)).", e)
    assert_false("g(a, b).", e)
    assert_true("g(c, d).", e)
    e = get_engine("""
        g(b, b).
        f(X) :- g(X, b).
        f(a).
    """)
    assert_true("f(b).", e)
    assert_true("f(a).", e)
    assert_true("retract(f(X) :- g(X, Y)), Y == b.", e)
    assert_false("f(b).", e)
    assert_true("f(a).", e)
    prolog_raises("permission_error(X, Y, Z)", "retract(atom(X))")
Ejemplo n.º 17
0
def test_assert_logical_update_view():
    e = get_engine("""
        g(a).
        g(c) :- assertz(g(d)).
        g(b).
    """)
    heaps = collect_all(e, "g(X).")
    assert len(heaps) == 3
    e = get_engine("""
        p :- assertz(p), fail.
        p :- fail.
    """)
    assert_false("p.", e)
    e = get_engine("""
        q :- fail.
        q :- assertz(q), fail.
    """)
    assert_false("q.", e)
Ejemplo n.º 18
0
def test_assert_logical_update_view():
    e = get_engine("""
        g(a).
        g(c) :- assertz(g(d)).
        g(b).
    """)
    heaps = collect_all(e, "g(X).")
    assert len(heaps) == 3
    e = get_engine("""
        p :- assertz(p), fail.
        p :- fail.
    """)
    assert_false("p.", e)
    e = get_engine("""
        q :- fail.
        q :- assertz(q), fail.
    """)
    assert_false("q.", e)
Ejemplo n.º 19
0
def test_not():
    e = get_engine("""
        g(a, a).
        g(b, a).
        g(b, b).

        m(o, a).
        m(o, b).
        m(o, c).
        same(X, X).

        sibling(X, Y) :- m(Z, X), m(Z, Y), \\+same(X, Y).
    """)
    assert_true("not((!, fail)).", e)
    assert_true("not(g(b, c)).", e)
    assert_false("not(g(a, a)).", e)
    assert_true("\\+(g(b, c)).", e)
    assert_false("\\+(g(a, a)).", e)
    assert_false("not(!).", e)

    heaps = collect_all(e, "sibling(a, X).")
    assert len(heaps) == 2
Ejemplo n.º 20
0
def test_not():
    e = get_engine("""
        g(a, a).
        g(b, a).
        g(b, b).

        m(o, a).
        m(o, b).
        m(o, c).
        same(X, X).

        sibling(X, Y) :- m(Z, X), m(Z, Y), \\+same(X, Y).
    """)
    assert_true("not((!, fail)).", e)
    assert_true("not(g(b, c)).", e)
    assert_false("not(g(a, a)).", e)
    assert_true("\\+(g(b, c)).", e)
    assert_false("\\+(g(a, a)).", e)
    assert_false("not(!).", e)

    heaps = collect_all(e, "sibling(a, X).")
    assert len(heaps) == 2
Ejemplo n.º 21
0
def test_ifthenelse():
    e = get_engine("f(x). f(y). f(z).")
    assert_false("f(c) -> true.", e)
    assert_true("f(X) -> X \\= x; f(z).", e)
    assert_false("true -> fail.", e)
Ejemplo n.º 22
0
def test_sub_atom():
    assert_true("sub_atom(abc, B, L, A, bc), B=1, L=2, A=0.")
    assert_false("sub_atom(abc, B, 1, A, bc).")
    assert_true("sub_atom(abcabcabc, 3, 3, A, abc), A=3.")
    assert_true("sub_atom(abcabcabc, B, L, 3, abc), B=3, L=3.")
Ejemplo n.º 23
0
def test_unify():
    assert_true("g(b, B) = g(b, b).")
    assert_true("X = Y.")
    assert_true("X = f(X).")
    assert_false("g(b, B) \\= g(b, b).")
    assert_false("X \\= Y.")
    assert_false("X \\= f(X).")
    assert_true("x \\= y.")
    assert_true("f(X, b) \\= f(a, c), X = c.")
    assert_true("unify_with_occurs_check(X, Y).")
    assert_true("unify_with_occurs_check(X, X).")
    assert_false("unify_with_occurs_check(X, f(X)).")
    assert_false("unify_with_occurs_check(X, f(g(h(a, b, c, d(X, e), e)))).")
    assert_false("unify_with_occurs_check(g(X), X).")
    assert_false("X = Y, unify_with_occurs_check(X, f(d(Y), Y)).")
Ejemplo n.º 24
0
def test_type_checks():
    assert_true("integer(123).")
    assert_false("integer(a).")
    assert_false("integer(X).")
    assert_true("float(123.12).")
    assert_false("float(a).")
    assert_false("float(12).")
    assert_true("number(123).")
    assert_true("number(42.42).")
    assert_false("number(abc).")
    assert_false("integer(a).")
    assert_false("integer(X).")
    assert_true("var(X).")
    assert_false("X = a, var(X).")
    assert_true("compound(g(a)).")
    assert_false("compound(gxx).")
    assert_false("compound(123).")
    assert_false("compound([]).")
    assert_false("compound(X).")
    assert_true("atom(a).")
    assert_true("atom('asdf').")
    assert_false("atom(12).")
    assert_false("atom(X).")
    assert_true("atomic('asdf').")
    assert_true("atomic(12.5).")
    assert_false("atomic(f(1, 2, 3)).")
    assert_false("atomic(X).")
    assert_false("callable(X).")
    assert_false("callable(1).")
    assert_true("callable(asdf).")
    assert_true("callable(asdf(a, b, c, d, e, f)).")
    assert_true("ground(a).")
    assert_true("ground(t(a, b, f(a, b, g(a, b)))).")
    assert_false("ground(t(a, b, f(a, b, g(a, X)))).")
    assert_true("X = 13, ground(t(a, b, f(a, b, g(a, X)))).")
    assert_false("ground(X).")
Ejemplo n.º 25
0
def test_simple():
    assert_true("X is 1 + 2, X = 3.")
    assert_true("X is 1.2 + 2.8, X = 4.")
    assert_false("X is 1.1 + 2.8, X = 4.0.")
    assert_true("X is 1 - 2, X = -1.")
    assert_true("X is 1.2 - 1.2, X = 0.")
    assert_true("X is 2 * -2, X = -4.")
    assert_true("X is 2 * -2.1, X = -4.2.")
    assert_true("X is 2 + -2, X = 0.")
    assert_true("X is 2 // -2, X = -1.")

    assert_true("X is 1 << 4, X = 16.")
    assert_true("X is 128 >> 7, X = 1.")
    assert_true("X is 12 \\/ 10, X = 14.")
    assert_true("X is 12 /\\ 10, X = 8.")
    assert_true("X is 12 xor 10, X = 6.")

    assert_true("X is max(12, 13), X = 13.")
    assert_true("X is min(12, 13), X = 12.")
    assert_true("X is max(12, 13.9), X = 13.9.")
    assert_true("X is min(12.1, 13), X = 12.1.")

    assert_true("X is abs(42), X = 42.")
    assert_true("X is abs(-42), X = 42.")
    assert_true("X is abs(42.42), X = 42.42.")
    assert_true("X is abs(-42.42), X = 42.42.")

    assert_true("X is round(0), X = 0.")
    assert_true("X is round(0.3), X = 0.")
    assert_true("X is round(0.4), X = 0.")
    assert_true("X is round(0.5), X = 1.")
    assert_true("X is round(0.6), X = 1.")
    assert_true("X is round(1), X = 1.")
    assert_true("X is round(-0.3), X = 0.")
    assert_true("X is round(-0.4), X = 0.")
    assert_true("X is round(-0.5), X = 0.")
    #assert_true("X is round(-0.6), X = -1.") #XXX fix round
    #assert_true("X is round(-1), X = -1.")

    assert_true("X is ceiling(0), X = 0.")
    assert_true("X is ceiling(0.3), X = 1.")
    assert_true("X is ceiling(0.4), X = 1.")
    assert_true("X is ceiling(0.5), X = 1.")
    assert_true("X is ceiling(0.6), X = 1.")
    assert_true("X is ceiling(1), X = 1.")
    assert_true("X is ceiling(-0.3), X = 0.")
    assert_true("X is ceiling(-0.4), X = 0.")
    assert_true("X is ceiling(-0.5), X = 0.")
    assert_true("X is ceiling(-0.6), X = 0.")
    assert_true("X is ceiling(-1), X = -1.")

    assert_true("X is floor(0), X = 0.")
    assert_true("X is floor(0.3), X = 0.")
    assert_true("X is floor(0.4), X = 0.")
    assert_true("X is floor(0.5), X = 0.")
    assert_true("X is floor(0.6), X = 0.")
    assert_true("X is floor(1), X = 1.")
    assert_true("X is floor(-0.3), X = -1.")
    assert_true("X is floor(-0.4), X = -1.")
    assert_true("X is floor(-0.5), X = -1.")
    assert_true("X is floor(-0.6), X = -1.")
    assert_true("X is floor(-1), X = -1.")

    assert_true("X is float_integer_part(0), X = 0.")
    assert_true("X is float_integer_part(0.3), X = 0.")
    assert_true("X is float_integer_part(0.4), X = 0.")
    assert_true("X is float_integer_part(0.5), X = 0.")
    assert_true("X is float_integer_part(0.6), X = 0.")
    assert_true("X is float_integer_part(1), X = 1.")
    assert_true("X is float_integer_part(-0.3), X = 0.")
    assert_true("X is float_integer_part(-0.4), X = 0.")
    assert_true("X is float_integer_part(-0.5), X = 0.")
    assert_true("X is float_integer_part(-0.6), X = 0.")
    assert_true("X is float_integer_part(-1), X = -1.")

    assert_true("X is float_fractional_part(1), X = 0.")
    assert_true("X is float_fractional_part(2), X = 0.")
    assert_true("X is float_fractional_part(-1), X = 0.")
    assert_true("X is float_fractional_part(1.2), Y is 1.2 - 1, X = Y.")
    assert_true("X is float_fractional_part(1.4), Y is 1.4 - 1, X = Y.")
    assert_true("X is float_fractional_part(1.6), Y is 1.6 - 1, X = Y.")
    assert_true("X is float_fractional_part(-1.2), X is -1.2 + 1, X = Y.")
    assert_true("X is float_fractional_part(-1.4), X is -1.4 + 1, X = Y.")
    assert_true("X is float_fractional_part(-1.6), X is -1.6 + 1, X = Y.")

    assert_true("X is 2 ** 4, X = 16.")
Ejemplo n.º 26
0
def test_or_and_call_with_cut():
    assert_false("(!, fail); true.")
    assert_true("(call(!), fail); true.")
Ejemplo n.º 27
0
def test_ifthenelse():
    e = get_engine("f(x). f(y). f(z).")
    assert_false("f(c) -> true.", e)
    assert_true("f(X) -> X \\= x; f(z).", e)
    assert_false("true -> fail.", e)
Ejemplo n.º 28
0
def test_unify():
    assert_true("g(b, B) = g(b, b).")
    assert_true("X = Y.")
    assert_true("X = f(X).")
    assert_false("g(b, B) \\= g(b, b).")
    assert_false("X \\= Y.")
    assert_false("X \\= f(X).")
    assert_true("x \\= y.")
    assert_true("f(X, b) \\= f(a, c), X = c.")
    assert_true("unify_with_occurs_check(X, Y).")
    assert_true("unify_with_occurs_check(X, X).")
    assert_false("unify_with_occurs_check(X, f(X)).")
    assert_false("unify_with_occurs_check(X, f(g(h(a, b, c, d(X, e), e)))).")
    assert_false("unify_with_occurs_check(g(X), X).")
    assert_false("X = Y, unify_with_occurs_check(X, f(d(Y), Y)).")
Ejemplo n.º 29
0
def test_or_with_cut():
    assert_false("((X = 1, !); X = 2), X = 2.")
    assert_true("((X = 1, !); X = 2), X = 1.")
Ejemplo n.º 30
0
def test_sub_atom():
    assert_true("sub_atom(abc, B, L, A, bc), B=1, L=2, A=0.")
    assert_false("sub_atom(abc, B, 1, A, bc).")
    assert_true("sub_atom(abcabcabc, 3, 3, A, abc), A=3.")
    assert_true("sub_atom(abcabcabc, B, L, 3, abc), B=3, L=3.")
Ejemplo n.º 31
0
 def test_common(self):
     assert_false("fail.")
     assert_true("true.")
Ejemplo n.º 32
0
def test_and():
    assert_false("fail, X.")
    prolog_raises("type_error(callable, 1)", "(fail, 1)")
Ejemplo n.º 33
0
def test_and():
    assert_false("fail, X.")
    prolog_raises("type_error(callable, 1)", "(fail, 1)")
Ejemplo n.º 34
0
def test_or_with_cut():
    assert_false("((X = 1, !); X = 2), X = 2.")
    assert_true("((X = 1, !); X = 2), X = 1.")
Ejemplo n.º 35
0
def test_type_checks():
    assert_true("integer(123).")
    assert_false("integer(a).")
    assert_false("integer(X).")
    assert_true("float(123.12).")
    assert_false("float(a).")
    assert_false("float(12).")
    assert_true("number(123).")
    assert_true("number(42.42).")
    assert_false("number(abc).")
    assert_false("integer(a).")
    assert_false("integer(X).")
    assert_true("var(X).")
    assert_false("X = a, var(X).")
    assert_true("compound(g(a)).")
    assert_false("compound(gxx).")
    assert_false("compound(123).")
    assert_false("compound([]).")
    assert_false("compound(X).")
    assert_true("atom(a).")
    assert_true("atom('asdf').")
    assert_false("atom(12).")
    assert_false("atom(X).")
    assert_true("atomic('asdf').")
    assert_true("atomic(12.5).")
    assert_false("atomic(f(1, 2, 3)).")
    assert_false("atomic(X).")
    assert_false("callable(X).")
    assert_false("callable(1).")
    assert_true("callable(asdf).")
    assert_true("callable(asdf(a, b, c, d, e, f)).")
    assert_true("ground(a).")
    assert_true("ground(t(a, b, f(a, b, g(a, b)))).")
    assert_false("ground(t(a, b, f(a, b, g(a, X)))).")
    assert_true("X = 13, ground(t(a, b, f(a, b, g(a, X)))).")
    assert_false("ground(X).")
Ejemplo n.º 36
0
 def test_common(self):
     assert_false('fail.')
     assert_true('true.')
Ejemplo n.º 37
0
def test_simple():
    assert_true("X is 1 + 2, X = 3.")
    assert_true("X is 1.2 + 2.8, X = 4.")
    assert_false("X is 1.1 + 2.8, X = 4.0.")
    assert_true("X is 1 - 2, X = -1.")
    assert_true("X is 1.2 - 1.2, X = 0.")
    assert_true("X is 2 * -2, X = -4.")
    assert_true("X is 2 * -2.1, X = -4.2.")
    assert_true("X is 2 + -2, X = 0.")
    assert_true("X is 2 // -2, X = -1.")

    assert_true("X is 1 << 4, X = 16.")
    assert_true("X is 128 >> 7, X = 1.")
    assert_true("X is 12 \\/ 10, X = 14.")
    assert_true("X is 12 /\\ 10, X = 8.")
    assert_true("X is 12 xor 10, X = 6.")

    assert_true("X is max(12, 13), X = 13.")
    assert_true("X is min(12, 13), X = 12.")
    assert_true("X is max(12, 13.9), X = 13.9.")
    assert_true("X is min(12.1, 13), X = 12.1.")

    assert_true("X is abs(42), X = 42.")
    assert_true("X is abs(-42), X = 42.")
    assert_true("X is abs(42.42), X = 42.42.")
    assert_true("X is abs(-42.42), X = 42.42.")

    assert_true("X is round(0), X = 0.")
    assert_true("X is round(0.3), X = 0.")
    assert_true("X is round(0.4), X = 0.")
    assert_true("X is round(0.5), X = 1.")
    assert_true("X is round(0.6), X = 1.")
    assert_true("X is round(1), X = 1.")
    assert_true("X is round(-0.3), X = 0.")
    assert_true("X is round(-0.4), X = 0.")
    assert_true("X is round(-0.5), X = 0.")
    #assert_true("X is round(-0.6), X = -1.") #XXX fix round
    #assert_true("X is round(-1), X = -1.")

    assert_true("X is ceiling(0), X = 0.")
    assert_true("X is ceiling(0.3), X = 1.")
    assert_true("X is ceiling(0.4), X = 1.")
    assert_true("X is ceiling(0.5), X = 1.")
    assert_true("X is ceiling(0.6), X = 1.")
    assert_true("X is ceiling(1), X = 1.")
    assert_true("X is ceiling(-0.3), X = 0.")
    assert_true("X is ceiling(-0.4), X = 0.")
    assert_true("X is ceiling(-0.5), X = 0.")
    assert_true("X is ceiling(-0.6), X = 0.")
    assert_true("X is ceiling(-1), X = -1.")

    assert_true("X is floor(0), X = 0.")
    assert_true("X is floor(0.3), X = 0.")
    assert_true("X is floor(0.4), X = 0.")
    assert_true("X is floor(0.5), X = 0.")
    assert_true("X is floor(0.6), X = 0.")
    assert_true("X is floor(1), X = 1.")
    assert_true("X is floor(-0.3), X = -1.")
    assert_true("X is floor(-0.4), X = -1.")
    assert_true("X is floor(-0.5), X = -1.")
    assert_true("X is floor(-0.6), X = -1.")
    assert_true("X is floor(-1), X = -1.")

    assert_true("X is float_integer_part(0), X = 0.")
    assert_true("X is float_integer_part(0.3), X = 0.")
    assert_true("X is float_integer_part(0.4), X = 0.")
    assert_true("X is float_integer_part(0.5), X = 0.")
    assert_true("X is float_integer_part(0.6), X = 0.")
    assert_true("X is float_integer_part(1), X = 1.")
    assert_true("X is float_integer_part(-0.3), X = 0.")
    assert_true("X is float_integer_part(-0.4), X = 0.")
    assert_true("X is float_integer_part(-0.5), X = 0.")
    assert_true("X is float_integer_part(-0.6), X = 0.")
    assert_true("X is float_integer_part(-1), X = -1.")

    assert_true("X is float_fractional_part(1), X = 0.")
    assert_true("X is float_fractional_part(2), X = 0.")
    assert_true("X is float_fractional_part(-1), X = 0.")
    assert_true("X is float_fractional_part(1.2), Y is 1.2 - 1, X = Y.")
    assert_true("X is float_fractional_part(1.4), Y is 1.4 - 1, X = Y.")
    assert_true("X is float_fractional_part(1.6), Y is 1.6 - 1, X = Y.")
    assert_true("X is float_fractional_part(-1.2), X is -1.2 + 1, X = Y.")
    assert_true("X is float_fractional_part(-1.4), X is -1.4 + 1, X = Y.")
    assert_true("X is float_fractional_part(-1.6), X is -1.6 + 1, X = Y.")

    assert_true("X is 2 ** 4, X = 16.")
Ejemplo n.º 38
0
def test_or_and_call_with_cut():
    assert_false("(!, fail); true.")
    assert_true("(call(!), fail); true.")