(* Auto-tester for squeeze function. *) use "tester.sml"; (* common utility functions *) (* Avoid "unbound variable or constructor" errors. *) fun squeeze _ = raise Undefined; (* Load file. *) print "\n--> Loading file \"squeeze.sml\"\n"; use "../squeeze.sml" handle _ => (); (* Run test cases. *) ( print "\n--> Beginning test cases for function 'squeeze'...\n"; runtests total grade squeeze "squeeze" intlist2string intlist2string (op =) [ (nil, nil, "(* empty list *)", 0.4), ([1], [1], "(* singleton *)", 0.4), ([1,1], [1], "(* \"doubleton\" *)", 0.4), ([1,1,1], [1], "(* \"tripleton\" *)", 0.2), ([2,1], [2,1], "(* two different values *)", 0.2), ([2,2,1], [2,1], "(* two values, first repeated *)", 0.2), ([2,1,1], [2,1], "(* two values, second repeated *)", 0.2), ([1,2,1], [1,2,1], "(* alternating values *)", 0.2), ([1,2,2,1], [1,2,1], "(* alternating values, 2nd repeated *)", 0.2), ([1,1,2,1], [1,2,1], "(* alternating values, 1st repeated *)", 0.2), ([1,2,1,1], [1,2,1], "(* alternating values, 3rd repeated *)", 0.2), ([1,1,1,2,1,1,1,1,3,3], [1,2,1,3], "(* \"general\" input *)", 0.4) ]; runtests total grade squeeze "squeeze" stringlist2string stringlist2string (op =) [ (["blah"], ["blah"], "(* singleton string *)", 0.2), (["hi","hi"], ["hi"], "(* \"doubleton\" string *)", 0.2), (["a","a","a","a","b","a","a","c","c","c"], ["a","b","a","c"], "(* \"general\" input *)", 0.4) ] ); (* Print total grade. *) print ("\n--> Grade = " ^ real2string (!grade) ^ " / " ^ real2string (!total) ^ "\n\n"); (* Quit the SML interpreter. *) exit 0;