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
|
||||
associativity and precedence (_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
|
||||
control (`setup_call_control/3`, `call_with_inference_limit/3`,
|
||||
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_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]
|
||||
@@ -1173,6 +1179,14 @@ fn test_queries_on_builtins()
|
||||
let mut wam = Machine::new();
|
||||
|
||||
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_failure!(&mut wam, "?- var(X), X = 3, var(X).");
|
||||
|
||||
Reference in New Issue
Block a user