2:- module(test_sc,
    3  [test_sc/0,test_all/0,test_par/0,test_stru/0]).    4:- use_module(library(plunit)).    5
    6test_sc:-
    7  test_all.
    8
    9test_all:-
   10  par(P),
   11  stru(S),
   12  append(P,S,A),
   13  run_tests(A).
   14
   15test_par:-
   16  par(P),
   17  run_tests(P).
   18
   19test_stru:-
   20  stru(S),
   21  run_tests(S).
   22
   23par([
   24	  bongard,
   25		bongardkeys,
   26		hmmlearn,
   27		shop,
   28		multiple_paths_simple_learning,
   29		multiple_paths_learning,
   30    bongard_ind,
   31    bongard_fixed,
   32    bongard_initial,
   33    mach_par]).
   34
   35stru([mach_sendback,
   36    mach_fix,
   37    mach_all,
   38		registration]).
   39
   40
   41:- begin_tests(mach_par, []).   42:-ensure_loaded(library(examples/learning/mach_par)).   43:-use_module(library(cplint_test/cplint_test)).   44
   45test(induce_par):-
   46  induce_par([train],P),
   47  writeln('Result:'),
   48  writeln(P),
   49  writeln('Expected:'),
   50  writeln([(class(sendback):1.0;'':0.0:-worn(A), not_replaceable(A)),
   51   (class(fix):0.5714285714285714;'':0.4285714285714286:-worn(B), replaceable(B)),
   52   (class(ok):0.2;'':0.8:-not_worn(_120))]).
   53
   54:- end_tests(mach_par).   55
   56
   57:- begin_tests(mach_sendback, []).   58:-ensure_loaded(library(examples/learning/mach_sendback)).   59:-use_module(library(cplint_test/cplint_test)).   60
   61test(induce):-
   62  induce([train],P),test(P,[test],LL,AUCROC,_ROC,AUCPR,_PR),
   63  atomic_list_concat(['Result\nLL=',LL,'\nAUCROC=',AUCROC,'\nAUCPR=',AUCPR,'\n'],St),
   64  writeln(St),
   65  writeln(P),
   66  atomic_list_concat(['Expected\nLL=','0.0','\nAUCROC=','1.0','\nAUCPR=','1.0','\n'],StE),
   67  writeln(StE),
   68  writeln([(sendback:1.0;'':0.0:-worn(_52500), not_replaceable(_52510), not_replaceable(_52520), worn(_52520))]),
   69  close_to(LL,0.0),close_to(AUCROC,1.0),close_to(AUCPR,1.0).
   70:- end_tests(mach_sendback).   71
   72
   73:- begin_tests(mach_fix, []).   74:-ensure_loaded(library(examples/learning/mach_fix)).   75:-use_module(library(cplint_test/cplint_test)).   76
   77test(induce):-
   78  induce([train],P),test(P,[test],LL,AUCROC,_ROC,AUCPR,_PR),
   79  atomic_list_concat(['Result\nLL=',LL,'\nAUCROC=',AUCROC,'\nAUCPR=',AUCPR,'\n'],St),
   80  writeln(St),
   81  writeln(P),
   82  atomic_list_concat(['Expected\nLL=','0.0','\nAUCROC=','1.0','\nAUCPR=','1.0','\n'],StE),
   83  writeln(StE),
   84  writeln([(fix:1.0;'':0.0:-worn(_142386))]),
   85  close_to(LL,0.0),close_to(AUCROC,1.0),close_to(AUCPR,1.0).
   86:- end_tests(mach_fix).   87
   88:- begin_tests(mach_all, []).   89:-ensure_loaded(library(examples/learning/mach_all)).   90:-use_module(library(cplint_test/cplint_test)).   91
   92
   93test(test_in):-
   94  in(P),test(P,[all],LL,AUCROC,_ROC,AUCPR,_PR),close_to(LL, -124.33959502167846),close_to(AUCROC,0.7),close_to(AUCPR, 0.6844298018482021).
   95:- end_tests(mach_all).   96
   97
   98
   99:- begin_tests(bongard, []).  100:-ensure_loaded(library(examples/learning/bongard)).  101:-use_module(library(cplint_test/cplint_test)).  102
  103test(induce_par):-
  104induce_par([train],P),
  105writeln('Result:'),
  106writeln(P),
  107writeln('Expected:'),
  108writeln([(pos:0.08375986464331642;'':0.9162401353566836:-circle(A), in(_96, A)),  (pos:0.41285257298968425;'':0.5871474270103157:-circle(_92), triangle(_97))]).
  109
  110
  111:- end_tests(bongard).  112
  113:- begin_tests(bongardkeys, []).  114:-ensure_loaded(library(examples/learning/bongardkeys)).  115:-use_module(library(cplint_test/cplint_test)).  116
  117test(induce_par):-
  118induce_par([train],P),
  119writeln('Result:'),
  120writeln(P),
  121writeln('Expected:'),
  122writeln([(pos:0.08375986464331642;'':0.9162401353566836:-circle(A), in(_96, A)),  (pos:0.41285257298968425;'':0.5871474270103157:-circle(_92), triangle(_97))]).
  123:- end_tests(bongardkeys).  124
  125:- begin_tests(registration, []).  126:-ensure_loaded(library(examples/learning/registration)).  127:-use_module(library(cplint_test/cplint_test)).  128
  129
  130test(in):-
  131  in(P),test(P,[all],LL,AUCROC,_ROC,AUCPR,_PR),
  132writeln('Result:'),
  133writeln(P),
  134atomic_list_concat(['\nLL=',LL,'\nAUCROC=',AUCROC,'\nAUCPR=',AUCPR,'\n'],St),
  135writeln(St),
  136atomic_list_concat(['Expected:\nP =', "[(party(yes):0.5:-company_type(commercial)),  (party(no):0.5:-subscription(C), course_len(C, 4), \\+company_type(commercial))]",
  137'\nLL =', -17.281246460764,
  138'\nAUCROC =',0.9166666666666667,
  139'\nAUCPR =', 0.9583333333333334],St1),
  140writeln(St1).
  141
  142test(induce):-
  143  induce([all],P),test(P,[all],LL,AUCROC,_ROC,AUCPR,_PR),
  144writeln('Result:'),
  145writeln(P),
  146atomic_list_concat(['\nLL=',LL,'\nAUCROC=',AUCROC,'\nAUCPR=',AUCPR,'\n'],St),
  147writeln(St),
  148atomic_list_concat(['Expected:\nP =',
  149"[(party(yes):0.015604109954480928;:0.9843958900455191:-company_type(university),job(researcher)),(party(yes):0.3224437982952064;:0.6775562017047936:-job(researcher)),(party(yes):0.9999999983379018;:1.6620982368209525e-9:-company_type(commercial)),(party(yes):0.6233797589501375;:0.37662024104986247:-not_company_type(university)),(party(yes):0.0003946210127296068;:0.9996053789872704:-subscription(_814)),(party(no):1.0;:0.0:-not_company_type(commercial),subscription(_1844),subscription(_1854),subscription(_1864),course_len(_1864,4))]",
  150'\nLL =', -1.909937224474644,
  151'\nAUCROC =', 0.9722222222222223,
  152'\nAUCPR =', 0.9791666666666667],St1),
  153writeln(St1).
  154
  155:- end_tests(registration).  156
  157:- begin_tests(hmmlearn, []).  158:-ensure_loaded(library(examples/learning/hmmlearn)).  159:-use_module(library(cplint_test/cplint_test)).  160%:- style_check(-singleton).
  161
  162test(induce_par):-
  163  induce_par([train],P),
  164writeln('Result:'),
  165writeln(P),
  166writeln('Expected:'),
  167writeln([(success(_3868):1.0:-hmmf(_3868, [r0], 3)),  (hmmf([p|_3868], _3888, _3890):0.397642938480145;hmmf([s|_3868], _3888, _3890):0.602357061519855:-_3890>0, _3888=[r0|_3928], tr(_3888, _3934), _3938 is _3890-1, hmmf(_3868, [_3934|_3888], _3938)),  (hmmf([s|_3868], _3888, _3890):0.52143903729156;hmmf([h|_3868], _3888, _3890):0.47856096270843995:-_3890>0, _3888=[r1|_4006], tr(_3888, _3934), _3938 is _3890-1, hmmf(_3868, [_3934|_3888], _3938)),  (hmmf([], _3888, 0):1.0:-true),
  168(tr([r0|_4058], r0):0.6858291009862068;tr([r0|_4058], r1):0.31417089901379325:-true),  (tr([r1|_4058], r0):0.2719403559829671;tr([r1|_4058], r1):0.7280596440170328:-true)]).
  169:- end_tests(hmmlearn).  170
  171:- begin_tests(shop, []).  172:-ensure_loaded(library(examples/learning/shop)).  173%:- style_check(-singleton).
  174
  175test(induce_par):-
  176  induce_par([train],P),test(P,[test],LL,AUCROC,_ROC,AUCPR,_PR),
  177writeln('Result:'),
  178writeln(P),
  179atomic_list_concat(['\nLL=',LL,'\nAUCROC=',AUCROC,'\nAUCPR=',AUCPR,'\n'],St),
  180writeln(St),
  181atomic_list_concat(['Expected:\nP =', "[(shops(john):0.20548261545513422;'':0.7945173845448658:-true),  (shops(mary):0.8982135971596719;'':0.10178640284032814:-true),  (bought(spaghetti):0.5448836590413033;bought(steak):0.4551163409586967:-shops(john)),  (bought(spaghetti):0.29413365772975464;bought(fish):0.7058663422702454:-shops(mary))]",
  182'\nLL =', -3137.1337240554694,
  183'\nAUCROC =', 0.8035006664184584,
  184'\nAUCPR =', 0.752406766447365,'\n'],St1),
  185writeln(St1).
  186
  187test(in):-
  188  in(P),test(P,[test],LL,AUCROC,_ROC,AUCPR,_PR),
  189atomic_list_concat(['Result\nLL=',LL,'\nAUCROC=',AUCROC,'\nAUCPR=',AUCPR,'\n'],St),
  190writeln(St),
  191P = [shops(john):0.2, shops(mary):0.9,  (bought(spaghetti):0.5;bought(steak):0.5:-shops(john)),  (bought(spaghetti):0.3;bought(fish):0.7:-shops(mary))],
  192atomic_list_concat(['Expected\nLL=','-3127.225749380786','\nAUCROC=','0.8035006664184584','\nAUCPR=','0.752406766447365','\n'],StE),
  193writeln(StE),
  194LL = -3127.225749380786,
  195AUCROC = 0.8035006664184584,
  196AUCPR = 0.752406766447365.
  197:- end_tests(shop).  198
  199:- begin_tests(multiple_paths_simple_learning, []).  200:-ensure_loaded(library(examples/learning/multiple_paths_simple_learning)).  201
  202:-use_module(library(cplint_test/cplint_test)).  203
  204
  205test(induce_par):-
  206  induce_par([train],P), test_prob(P,[train],_NP,_NN,LL,_EL),
  207writeln(P),writeln(LL),
  208writeln(
  209[(p:1.0:-a, b),  (p:1.0:- \+a, \+b),  (a:0.14098536470750564;'':0.8590146352924943:-true),
  210(b:0.2686080357352204;'':0.7313919642647796:-true)]),
  211writeln([0.6661462033202675-p(train1), 0.6661462033202675-(\+p(train2)),
  2120.6661462033202675-p(train3)]),
  213writeln(-1.9095443323886057),
  214close_to(LL, -1.9095443323886057,0.3).
  215
  216:- end_tests(multiple_paths_simple_learning).  217
  218:- begin_tests(multiple_paths_learning, []).  219:-ensure_loaded(library(examples/learning/multiple_paths_learning)).  220
  221
  222test(induce_par):-
  223  induce_par([train],P),writeln(P),
  224writeln( [(p:1.0:-c, \+d, a, b),  (p:1.0:-d, \+a, \+b),
  225(a:0.11345438264374658;'':0.8865456173562534:-true),
  226  (b:0.24757444431927064;'':0.7524255556807293:-true),
  227    (c:0.6699713764888383;'':0.3300286235111617:-true),
  228      (d:0.7420553493044134;'':0.2579446506955866:-true)]).
  229
  230:- end_tests(multiple_paths_learning).  231
  232:- begin_tests(bongard_ind, []).  233:-ensure_loaded(library(examples/learning/bongard_ind)).  234:-use_module(library(cplint_test/cplint_test)).  235
  236test(induce_par):-
  237induce_par([train],P),
  238writeln('Result:'),
  239writeln(P),
  240writeln('Expected:'),
  241writeln([(pos:0.0032009782151307584;'':0.9967990217848692:-circle(_24), in(_28, _24)), 
  242  (pos:0.36069511297793233;'':0.6393048870220677:-triangle(_90), config(_90, down)),
  243  (pos:0.4178555801893244;'':0.5821444198106756:-triangle(_144), config(_144, up))]).
  244:- end_tests(bongard_ind).  245
  246:- begin_tests(bongard_fixed, []).  247:-ensure_loaded(library(examples/learning/bongard_fixed)).  248:-use_module(library(cplint_test/cplint_test)).  249
  250test(induce_par):-
  251induce_par([train],P),
  252writeln('Result:'),
  253writeln(P),
  254writeln('Expected:'),
  255writeln( [(pos:0.0021000155528233407;'':0.9978999844471766:-circle(_24), in(_28, _24)),  (pos:0.5;'':0.5:-circle(_24), triangle(_28))]).
  256:- end_tests(bongard_fixed).  257
  258:- begin_tests(bongard_initial, []).  259:-ensure_loaded(library(examples/learning/bongard_initial)).  260:-use_module(library(cplint_test/cplint_test)).  261
  262test(induce_par):-
  263induce_par([train],P),
  264writeln('Result:'),
  265writeln(P),
  266writeln('Expected:'),
  267writeln([(pos:0.07507285519157605;'':0.924927144808424:-circle(_24), in(_28, _24)),  (pos:0.41706649095461357;'':0.5829335090453864:-circle(_88), triangle(_98))]).
  268
  269:- end_tests(bongard_initial).