Files
scryer-prolog/src/tests/call_with_inference_limit.pl
2020-04-05 20:32:16 -06:00

55 lines
1.4 KiB
Prolog

:- module(tests_on_call_with_inference_limit, []).
:- use_module(library(lists)).
:- use_module(library(iso_ext)).
:- dynamic(f/1).
:- dynamic(g/1).
test_queries_on_call_with_inference_limit :-
catch(call_with_inference_limit(throw(error), 0, inference_limit_exceeded),
error,
true),
catch(call_with_inference_limit(throw(error), 1, inference_limit_exceeded),
error,
true),
\+ call_with_inference_limit(g(X), 5, R),
maplist(assertz, [g(1), g(2), g(3), g(4), g(5)]),
findall([R,X],
call_with_inference_limit(g(X), 10, R),
[[true, 1],
[true, 2],
[true, 3],
[true, 4],
[!, 5]]),
findall([R,X],
(call_with_inference_limit(g(X), 10, R), call(true)),
[[true, 1],
[true, 2],
[true, 3],
[true, 4],
[!, 5]]),
findall([R,X],
(call_with_inference_limit(g(X), 4, R), call(true)),
[[true, 1],
[true, 2],
[inference_limit_exceeded, _]]),
findall([X,R1,R2],
(call_with_inference_limit(g(X), 4, R1),
call_with_inference_limit(g(X), 5, R2)),
[[1,true,!],
[2,true,!],
[3,true,!],
[4,true,!],
[5,!,!]]),
\+ \+ assertz((f(X) :- call_with_inference_limit(g(X), 8, _))),
findall([R,X],
call_with_inference_limit(f(X), 12, R),
[[true,1],
[true,2],
[true,3],
[true,4],
[!,5]]).
:- initialization(test_queries_on_call_with_inference_limit).