program for testing semcpl.pl
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2013 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
5f6c063171
commit
28dd8a87a4
127
cplint/testsemcpl.pl
Normal file
127
cplint/testsemcpl.pl
Normal file
@ -0,0 +1,127 @@
|
||||
/*
|
||||
LPAD and CP-Logic reasoning suite
|
||||
Copyright (c) 2007, Fabrizio Riguzzi
|
||||
|
||||
Test file for semcpl.pl
|
||||
|
||||
Use
|
||||
:-t.
|
||||
to execute the test
|
||||
|
||||
*/
|
||||
|
||||
:-use_module(library(semcpl)).
|
||||
|
||||
epsilon(0.000001).
|
||||
|
||||
close_to(V,T):-
|
||||
epsilon(E),
|
||||
TLow is T-E,
|
||||
THigh is T+E,
|
||||
TLow<V,
|
||||
V<THigh.
|
||||
|
||||
|
||||
t:-
|
||||
format("~nTesting semcpl.yap~n~n",[]),
|
||||
files(F),
|
||||
statistics(runtime,[_,_]),
|
||||
set(ground_body,false),
|
||||
format("~nNon ground body~n~n",[]),
|
||||
test_files(F,ground_body(false)),
|
||||
set(ground_body,true),
|
||||
format("~nGround body~n~n",[]),
|
||||
test_files(F,ground_body(true)),
|
||||
statistics(runtime,[_,T]),
|
||||
T1 is T /1000,
|
||||
format("Test successful, time ~f secs.~n",[T1]).
|
||||
|
||||
t:-
|
||||
format("Test unsuccessful.",[]).
|
||||
|
||||
test_files([],_GB).
|
||||
|
||||
test_files([H|T],GB):-
|
||||
format("~n~a.cpl~n",[H]),
|
||||
library_directory(LD),
|
||||
atom_concat(LD,'/cplint/examples/',ExDir),
|
||||
atom_concat(ExDir,H,NH),
|
||||
p(NH),!,
|
||||
findall(A,test(A,H,GB),L),
|
||||
test_all(H,L),
|
||||
test_files(T,GB).
|
||||
|
||||
test_all(_F,[]).
|
||||
|
||||
test_all(F,[H|T]):-
|
||||
copy_term(H,NH),
|
||||
NH=(_Query,close_to('P',_Prob)),
|
||||
format("~a ~p.~n",[F,NH]),
|
||||
call(H),!,
|
||||
test_all(F,T).
|
||||
|
||||
|
||||
files([
|
||||
esapprox,esrange,threesideddice,mendels,
|
||||
coin2,es,throws,trigger,win,hiv,light,
|
||||
invalid]).
|
||||
|
||||
test((s([p],P),close_to(P,0)),invalid,_).
|
||||
test((s([q],P),close_to(P,0)),invalid,_).
|
||||
test((s([p,q],P),close_to(P,0)),invalid,_).
|
||||
|
||||
test((s([throws(mary),throws(john),break],P),close_to(P,0.46)),throws,_).
|
||||
test((s([throws(mary),throws(john),\+break],P),close_to(P,0.04)),throws,_).
|
||||
test((s([\+ throws(mary),throws(john),break],P),close_to(P,0.3)),throws,_).
|
||||
test((s([\+ throws(mary),throws(john),\+ break],P),close_to(P,0.2)),throws,_).
|
||||
|
||||
test((s([death],P),close_to(P,0.305555555555556)),trigger,_).
|
||||
|
||||
test((s([win(white)],P),close_to(P,0.5)),win,_).
|
||||
test((s([win(black)],P),close_to(P,0.5)),win,_).
|
||||
test((s([win(black),win(white)],P),close_to(P,0)),win,_).
|
||||
|
||||
test((s([hiv(a)],P),close_to(P,0.154)),hiv,_).
|
||||
test((s([hiv(b)],P),close_to(P,0.154)),hiv,_).
|
||||
test((s([hiv(b),hiv(a)],P),close_to(P,0.118)),hiv,_).
|
||||
test((s([\+ hiv(b),\+ hiv(a)],P),close_to(P,0.81)),hiv,_).
|
||||
test((s([ hiv(b),\+ hiv(a)],P),close_to(P,0.036)),hiv,_).
|
||||
test((s([\+ hiv(b),hiv(a)],P),close_to(P,0.036)),hiv,_).
|
||||
|
||||
test((s([push,replace],P),close_to(P,0.5)),light,_).
|
||||
test((s([push,light],P),close_to(P,0.5)),light,_).
|
||||
test((s([push,light,replace],P),close_to(P,0)),light,_).
|
||||
test((s([light,replace],P),close_to(P,0)),light,_).
|
||||
test((s([light],P),close_to(P,0.5)),light,_).
|
||||
test((s([replace],P),close_to(P,0.5)),light,_).
|
||||
|
||||
|
||||
test((s([a],P),close_to(P,0.1719)),esapprox,ground_body(true)).
|
||||
test((s([a],P),close_to(P,0.099)),esapprox,ground_body(false)).
|
||||
|
||||
|
||||
test((s([a(1)],P),close_to(P,0.2775)),esrange,_).
|
||||
test((s([a(2)],P),close_to(P,0.36)),esrange,_).
|
||||
|
||||
test((s([on(0,1)],P),close_to(P,0.333333333333333)),threesideddice,_).
|
||||
test((s([on(1,1)],P),close_to(P,0.222222222222222)),threesideddice,_).
|
||||
test((s([on(2,1)],P),close_to(P,0.148148147703704)),threesideddice,_).
|
||||
|
||||
test((sc([on(2,1)],[on(0,1)],P),close_to(P,0.222222222222222)),threesideddice,_).
|
||||
test((sc([on(2,1)],[on(1,1)],P),close_to(P,0.333333333333333)),threesideddice,_).
|
||||
|
||||
|
||||
test((s([cg(s,1,p)],P),close_to(P,0.5)),mendels,ground_body(false)).
|
||||
test((s([cg(s,1,w)],P),close_to(P,0.5)),mendels,ground_body(false)).
|
||||
test((s([cg(s,2,p)],P),close_to(P,1.0)),mendels,ground_body(false)).
|
||||
test((s([cg(s,2,w)],P),close_to(P,0)),mendels,ground_body(false)).
|
||||
|
||||
|
||||
test((s([heads(coin1)],P),close_to(P,0.51)),coin2,_).
|
||||
test((s([heads(coin2)],P),close_to(P,0.51)),coin2,_).
|
||||
|
||||
test((s([tails(coin1)],P),close_to(P,0.49)),coin2,_).
|
||||
test((s([tails(coin2)],P),close_to(P,0.49)),coin2,_).
|
||||
|
||||
test((s([a],P),close_to(P,0.226)),es,_).
|
||||
|
Reference in New Issue
Block a user