]> Repositorios git - scryer-prolog.git/commitdiff
write tests to detect disjunction bugs
authorMark Thom <[email protected]>
Sat, 27 Jan 2018 06:26:19 +0000 (23:26 -0700)
committerMark Thom <[email protected]>
Sat, 27 Jan 2018 06:26:19 +0000 (23:26 -0700)
README.md
src/tests.rs

index fc709ac8c37fcce3a1a009f492dbf9fca862ed21..91194b12112b84051d8ad76d4d131f80876505b5 100644 (file)
--- 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.)
index 55b6b745febaf571c49345f80c7b7a453fa7db64..20f4f0792573d13bf6c41dcd951c9a43aa384056 100644 (file)
@@ -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).");