From ab7ba0a207df6ccbea08ed572d7eb41ba2e899e9 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 26 Jan 2018 23:26:19 -0700 Subject: [PATCH] write tests to detect disjunction bugs --- README.md | 2 +- src/tests.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fc709ac8..91194b12 100644 --- a/README.md +++ b/README.md @@ -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.) diff --git a/src/tests.rs b/src/tests.rs index 55b6b745..20f4f079 100644 --- a/src/tests.rs +++ b/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)."); -- 2.54.0