(************************************************************************** * You can add new test cases by adding new elements to the following lists * Format is: * TESTARG(, , , , ..., ) * * is the number of argument that the function being tested takes. **************************************************************************) let map_sub_list_stu1 l1 l2= List.map (Student.sub_list l1) l2 let map_sub_list_sol1 l1 l2= List.map (Solution.sub_list l1) l2 let map_sub_list_stu2 l1 l2= List.map (fun x-> Student.sub_list x l2) l1 let map_sub_list_sol2 l1 l2= List.map (fun x->Solution.sub_list x l2) l1 let map_sub_list2_stu1 l1 l2= List.map (Student.sub_list2 l1) l2 let map_sub_list2_sol1 l1 l2= List.map (Solution.sub_list2 l1) l2 let map_sub_list2_stu2 l1 l2= List.map (fun x-> Student.sub_list2 x l2) l1 let map_sub_list2_sol2 l1 l2= List.map (fun x->Solution.sub_list2 x l2) l1 let q5_stu f lst = List.fold_right (Student.split_step f) lst Student.split_base let q5_sol f lst = List.fold_right (Solution.split_step f) lst Solution.split_base let idk = fun x -> x let nullk = fun x -> () (* This list is for regular problems *) let rubric = [ TEST2ARG( 1, split, (fun x -> x > 2), [0;2;3;5;1;4] ); TEST2ARG( 1, split, (fun x -> x=()), [] ); TEST2ARG( 1, split, (fun x -> x=()), [();();();();();()] ); TEST2ARG( 1, split, (fun x -> x< -2), [1+2;2;-2;-10;-1;10-2;9-3;8-4;7-5;6-6;5-7;4;-4;-5;-6] ); TEST1ARG( 1, rle, [1;1;1;2;2;2;3;1;1;1] ); TEST1ARG( 1, rle, ['a';'b';'a';'a';'a';'c';'d';'e';'f';'g';'h';'i';'i';'i';'j';'k';'l';'m'] ); TEST1ARG( 1, rle, [] ); TEST1ARG( 1, rle, ['a'] ); TEST1ARG( 1, rle, ['a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'b';'a';'a';'a';'c';'d';'e';'f';'g';'h';'i';'i';'i';'j';'k';'l';'m';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a'] ); TEST2ARG( 1, sub_list, [1;1;2;1;1;4;1], [1;2;1;1;1]); TEST2ARG_TWOFUN(1, map_sub_list_sol1, map_sub_list_stu1, [], [[];[()];[();()]]) ; TEST2ARG_TWOFUN(1, map_sub_list_sol2, map_sub_list_stu2, [[];[()];[();()]],[]) ; TEST2ARG( 1, sub_list, [2;1;2;3;4;5;6;7], [1;2;3;4;5;6;7]); TEST2ARG( 1, sub_list, [2;1;1;2;2;3;3;4;4;5;5;6;6;7;7], [1;2;3;4;5;6;7]); TEST2ARG( 1, concat, " * ", ["3"; "6"; "2"]); TEST2ARG( 1, concat, " ", [] ); TEST2ARG( 1, concat, " ", ["UIUC"] ); TEST2ARG( 1, concat, "", ["I";"love";"UIUC";"football";"team";"if";"and";"only";"if";"they";"can";"get";"success";"in";"the";"NCAA";"championship"] ); TEST2ARG( 1, concat, " ", ["I";"love";"UIUC";"football";"team";"if";"and";"only";"if";"they";"can";"get";"success";"in";"the";"NCAA";"championship"] ); TEST2ARG( 1, concat, ", and the other string is ", ["1";"100";"111";"123";"345";"567";"";"666";"\n";"\t";" ";"33";"555";"65432";"4444";"4\n4";"666";""] ); TEST2ARG( 1, concat, "", ["1";"100";"111";"123";"345";"567";"";"666";"\n";"\t";" ";"33";"555";"65432";"4444";"4\n4";"666";""] ); TEST2ARG_TWOFUN(1, q5_sol, q5_stu, (fun x -> x > 2), [0;2;3;5;1;4]) ; TEST2ARG_TWOFUN(1, q5_sol, q5_stu, (fun x -> x=()), []) ; TEST2ARG_TWOFUN(1, q5_sol, q5_stu, (fun x -> x=()), [()]) ; TEST2ARG_TWOFUN(1, q5_sol, q5_stu, (fun x -> x!=()), [();();();();();()] ); TEST2ARG_TWOFUN(1, q5_sol, q5_stu, (fun x -> x< -2), [1+2;2;-2;-10;-1;10-2;9-3;8-4;7-5;6-6;5-7;4;-4;-5;-6] ); TEST1ARG( 1, rle2, [1;1;1;2;2;2;3;1;1;1] ); TEST1ARG( 1, rle2, ['a';'b';'a';'a';'a';'c';'d';'e';'f';'g';'h';'i';'i';'i';'j';'k';'l';'m'] ); TEST1ARG( 1, rle2, [] ); TEST1ARG( 1, rle2, ['a'] ); TEST1ARG( 1, rle2, ['a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'b';'a';'a';'a';'c';'d';'e';'f';'g';'h';'i';'i';'i';'j';'k';'l';'m';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a';'a'] ); TEST2ARG( 1, concat2, " * ", ["3"; "6"; "2"]); TEST2ARG( 1, concat2, " ", [] ); TEST2ARG( 1, concat2, " ", ["UIUC"] ); TEST2ARG( 1, concat2, "", ["I";"love";"UIUC";"football";"team";"if";"and";"only";"if";"they";"can";"get";"success";"in";"the";"NCAA";"championship"] ); TEST2ARG( 1, concat2, " ", ["I";"love";"UIUC";"football";"team";"if";"and";"only";"if";"they";"can";"get";"success";"in";"the";"NCAA";"championship"] ); TEST2ARG( 1, concat2, ", and the other string is ", ["1";"100";"111";"123";"345";"567";"";"666";"\n";"\t";" ";"33";"555";"65432";"4444";"4\n4";"666";""] ); TEST2ARG( 1, concat2, "", ["1";"100";"111";"123";"345";"567";"";"666";"\n";"\t";" ";"33";"555";"65432";"4444";"4\n4";"666";""] ); TEST2ARG( 1, app_all, [(fun x -> x > 0); (fun y -> y mod 2 = 0); (fun x -> x * x = x)], [1; 3; 6] ); TEST2ARG( 1, app_all, [], [] ); TEST2ARG( 1, app_all, [], [()]); TEST2ARG( 1, app_all, [(fun y -> () = y)], []); TEST2ARG( 1, app_all, [(fun y -> () = y);(fun x -> x != ()); (fun x -> () !=());(fun y -> () = y);(fun x -> x != ()); (fun x -> () !=())], [();();();();();()]); TEST2ARG( 1, app_all, [(fun x -> x > 10); (fun y -> y * 2 > 0); (fun x -> x * x = x);(fun x -> x > 0); (fun y -> y mod 2 = 0);(fun y -> 10 / y = 0) ], [1; 3; 6 ;7;9;10;-2;-3;-4;-5;-6;-7;100;101;210;22;1;1;3;4;7;8;9] ); TEST2ARG( 1, app_all, [(fun x -> x > 10); (fun y -> y * 2 > 0); (fun x -> x * x = x);(fun x -> x > 0); (fun y -> y mod 2 = 0);(fun x -> x > 10); (fun y -> y * 2 > 0); (fun x -> x * x = x);(fun x -> x > 0); (fun y -> y mod 2 = 0) ], [-10;-9;-8;-7;-6;-5;-4;-3;-2;-1;0;1;2;3;4;5;6;7;8;9;10] ); TEST2ARG( 1, app_all, [(fun x -> x ^"1" ="1001"); (fun y -> "33" = y ); (fun x -> String.length x <2)], ["1";"100";"111";"123";"345";"567";"";"666";"\n";"\t";" ";"33";"555";"65432";"4444";"4\n4";"666";""] ) ] (* Note: the last entry should not be followed by a semicolon. *) (* This list is for extra credit problems *) let extra_rubric = [ TEST2ARG( 0, sub_list2, [1;1;2;1;1;4;1], [1;2;1;1;1]); TEST2ARG_TWOFUN(1, map_sub_list2_sol1, map_sub_list2_stu1, [], [[];[()];[();()]]) ; TEST2ARG_TWOFUN(1, map_sub_list2_sol2, map_sub_list2_stu2, [[];[()];[();()]],[]) ; TEST2ARG( 1, sub_list2, [2;1;2;3;4;5;6;7], [1;2;3;4;5;6;7]); TEST2ARG( 1, sub_list2, [2;1;1;2;2;3;3;4;4;5;5;6;6;7;7], [1;2;3;4;5;6;7]) ]