let rubric_version = "1.0"
let rubric_title = "CS421 Fall 2013 MP2"

(**************************************************************************
 * 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.
 **************************************************************************)

(* This list is for regular problems *)
let rubric =
[
    TEST1ARG(1, truth_total, (false, false));
    TEST1ARG_TWOFUN(1, (List.map Solution.truth_total),
                       (List.map Student.truth_total),
                       [(true, false);(false, true);(true, true)]);

    TEST1ARG(1, drop_two, (1,2,3,4));
    TEST1ARG(0, drop_two, ((),((),()),((),(),()),((),(),(),())));
    TEST1ARG(1, drop_two, ("a",2.3,(),true));

    TEST3ARG(1, pair_min_max, (1,2), (3,4), true);
    TEST3ARG(1, pair_min_max, ('a','b'), (3,4), true);
    TEST3ARG(0, pair_min_max, ('a','b'), (3,4), false);
    TEST3ARG(0, pair_min_max, ((),()), ((),()), true);

(* To many points here *)
    TEST2ARG(1, apply_to_pair, (fun x -> fun y -> x + y), (1,2));
    TEST2ARG(1, apply_to_pair, (fun x -> fun y -> (x, y)), ((),((),())));
    TEST2ARG(1, apply_to_pair, (fun x -> fun y -> x < y), ("cat","dog"));
    TEST2ARG(1, apply_to_pair, (fun x -> fun y -> y x), (3,(fun a -> a * a)));

    TEST2ARG(1, test_swap, (fun x -> x > 5), (10, 15));
    TEST2ARG(0, test_swap, (fun x -> true), ((), ()));
    TEST2ARG(1, test_swap, (fun x -> x > "x"), ("a", "b"));

    TEST2ARG(1, sum_between, 1, 3);
    TEST2ARG(1, sum_between, 5, 3);
    TEST2ARG(1, sum_between, 2, 2);
    TEST2ARG(1, sum_between, 5, (-3));

    TEST2ARG(1, is_divis, 4, 2);
    TEST2ARG(1, is_divis, 9, 3);
    TEST2ARG(1, is_divis, 4, 4);
    TEST2ARG(1, is_divis, 7, 3);

    TEST1ARG(1, approx_exp, 1.5);
    TEST1ARG(1, approx_exp, 0.0);
    TEST1ARG(1, approx_exp, 1.8333);
    TEST1ARG(1, approx_exp, 1.8334);


    TEST1ARG(1, pow2, 3);
    TEST1ARG(1, pow2, 15);
    TEST1ARG(1, pow2, 16);
    TEST1ARG(1, pow2, 17);
    

    TEST2ARG(1, sudan, 0, (0,0));
    TEST2ARG(1, sudan, 0, (6,0));
    TEST2ARG(1, sudan, 0, (3,4));
    TEST2ARG(1, sudan, 1, (6,0));
    TEST2ARG(1, sudan, 1, (3,4));
    TEST2ARG(1, sudan, 2, (6,0));
    TEST2ARG(1, sudan, 2, (5,1))

]

(* Note: the last entry should not be followed by a semicolon. *)

let extra_rubric = [ ] 

