(**************************************************************************
 * You can add new test cases by adding new elements to the following lists
 * Format is:
 * TEST<X>ARG(<weight>, <function_name>, <arg1>, <arg2>, ..., <argX>)
 *
 * <X> is the number of argument that the function being tested takes.
 **************************************************************************)

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

(* This list is for regular problems *)
let rubric =
[
	TEST1ARG(1, even_count, [1;2;3]);

	TEST2ARG( 1, split, (fun x -> x > 2), [0;2;3;5;1;4] );
	TEST1ARG( 1, rle, ['a';'b';'a';'a';'a';'c'] );
	TEST2ARG( 1, sub_list, [1;1;2;1;1;4;1], [1;2;1;1;1] );
	TEST2ARG( 1, concat, " ", ["a"; "b"; "c"] ) (*;
	TEST2ARG_TWOFUN(1, q5_sol, q5_stu, (fun x -> x > 2), [0;2;3;5;1;4]) ;
	TEST1ARG( 1, rle2, [1;1;1;2;2;2;3;1;1;1] );
	TEST2ARG( 1, concat2, " + ", ["a"; "3"; "z^2"]);
	TEST2ARG( 1, app_all, [(fun x -> x > 0); (fun y -> y mod 2 = 0); (fun x -> x * x = x)], [1; 3; 6] )*)
]
(* Note: the last entry should not be followed by a semicolon. *)

let extra_rubric = [ 
	TEST2ARG( 1, sub_list2, [1;1;2;1;1;4;1], [1;2;1;1;1] )
]
