refactor ControlInstruction

This commit is contained in:
Mark Thom
2018-03-17 01:26:50 -06:00
parent faabe85e75
commit d8bcf47462
9 changed files with 312 additions and 580 deletions

View File

@@ -1694,59 +1694,59 @@ fn test_queries_on_call_with_inference_limit()
submit(&mut wam, "f(X) :- call_with_inference_limit(g(X), 5, _).");
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 7, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = true", "X = 3"],
["R = true", "X = 4"],
["R = !", "X = 5"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 6, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = true", "X = 3"],
["R = true", "X = 4"],
["R = !", "X = 5"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 5, R).",
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 4, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = true", "X = 3"],
["R = true", "X = 4"],
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 3, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 2, R).",
[["R = true", "X = 1"],
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X), 1, R).",
[["R = inference_limit_exceeded", "X = _1"]]);
submit(&mut wam, "e(X) :- call_with_inference_limit(f(X), 10, _).");
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 7, R).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 10, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = true", "X = 3"],
["R = true", "X = 4"],
["R = !", "X = 5"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 6, R).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 8, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = true", "X = 3"],
["R = true", "X = 4"],
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 4, R).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 6, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 3, R).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 5, R).",
[["R = true", "X = 1"],
["R = inference_limit_exceeded", "X = _1"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 2, R).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(e(X), 4, R).",
[["R = inference_limit_exceeded", "X = _1"]]);
submit(&mut wam, "f(X, R) :- call_with_inference_limit(g(X), 5, R).");
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X, R), 3, S).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X, R), 4, S).",
[["S = true", "X = 1", "R = true"],
["S = true", "X = 2", "R = true"],
["S = inference_limit_exceeded", "X = _1", "R = _2"]]);
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X, R), 7, R).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X, R), 8, R).",
[["R = true", "X = 1"],
["R = true", "X = 2"],
["R = true", "X = 3"],
@@ -1755,7 +1755,7 @@ fn test_queries_on_call_with_inference_limit()
submit(&mut wam, "g(1). g(2). g(3). g(4). g(5). g(6).");
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X, R), 7, S).",
assert_prolog_success!(&mut wam, "?- call_with_inference_limit(f(X, R), 8, S).",
[["R = true", "X = 1", "S = true"],
["R = true", "X = 2", "S = true"],
["R = true", "X = 3", "S = true"],