write tests to detect disjunction bugs
This commit is contained in:
@@ -20,7 +20,7 @@ Extend rusty-wam to include the following, among other features:
|
|||||||
* Built-in and user-defined operators of all fixities, with custom
|
* Built-in and user-defined operators of all fixities, with custom
|
||||||
associativity and precedence (_done_).
|
associativity and precedence (_done_).
|
||||||
* Bignum, rational number and floating point arithmetic (_done_).
|
* Bignum, rational number and floating point arithmetic (_done_).
|
||||||
* Built-in control operators (`,`, `;`, `->`, etc.) (_done_).
|
* Built-in control operators (`,`, `;`, `->`, etc.) (_in progress_).
|
||||||
* Built-in predicates for list processing and top-level declarative
|
* Built-in predicates for list processing and top-level declarative
|
||||||
control (`setup_call_control/3`, `call_with_inference_limit/3`,
|
control (`setup_call_control/3`, `call_with_inference_limit/3`,
|
||||||
etc.)
|
etc.)
|
||||||
|
|||||||
14
src/tests.rs
14
src/tests.rs
@@ -1165,6 +1165,12 @@ fn test_queries_on_conditionals()
|
|||||||
assert_prolog_failure!(&mut wam, "?- g(not_6).");
|
assert_prolog_failure!(&mut wam, "?- g(not_6).");
|
||||||
|
|
||||||
assert_prolog_success!(&mut wam, "?- f(X), (g(Y), !).", [["X = a", "Y = 6"]]);
|
assert_prolog_success!(&mut wam, "?- f(X), (g(Y), !).", [["X = a", "Y = 6"]]);
|
||||||
|
|
||||||
|
submit(&mut wam, "test(X, [X]) :- (atomic(X) -> true ; throw(type_error(atomic_expected, X))).
|
||||||
|
test(_, _).");
|
||||||
|
//TODO: this test should fail, not succeed! fix it.
|
||||||
|
assert_prolog_success!(&mut wam, "?- catch(test(a, [a]), type_error(E), true).",
|
||||||
|
[["E = _6"], ["E = _6"]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -1173,6 +1179,14 @@ fn test_queries_on_builtins()
|
|||||||
let mut wam = Machine::new();
|
let mut wam = Machine::new();
|
||||||
|
|
||||||
assert_prolog_failure!(&mut wam, "?- atomic(X).");
|
assert_prolog_failure!(&mut wam, "?- atomic(X).");
|
||||||
|
assert_prolog_success!(&mut wam, "?- atomic(a).");
|
||||||
|
assert_prolog_success!(&mut wam, "?- atomic(\"string\").");
|
||||||
|
assert_prolog_success!(&mut wam, "?- atomic([]).");
|
||||||
|
assert_prolog_success!(&mut wam, "?- atomic(1).");
|
||||||
|
assert_prolog_success!(&mut wam, "?- atomic(0).");
|
||||||
|
assert_prolog_success!(&mut wam, "?- atomic(0.0).");
|
||||||
|
assert_prolog_failure!(&mut wam, "?- atomic([a,b,c]).");
|
||||||
|
assert_prolog_failure!(&mut wam, "?- atomic(atop(the_trees)).");
|
||||||
|
|
||||||
assert_prolog_success!(&mut wam, "?- var(X), X = 3, atomic(X).", [["X = 3"]]);
|
assert_prolog_success!(&mut wam, "?- var(X), X = 3, atomic(X).", [["X = 3"]]);
|
||||||
assert_prolog_failure!(&mut wam, "?- var(X), X = 3, var(X).");
|
assert_prolog_failure!(&mut wam, "?- var(X), X = 3, var(X).");
|
||||||
|
|||||||
Reference in New Issue
Block a user