Skip to content

Instantly share code, notes, and snippets.

@flypiggy
Created January 24, 2013 01:10
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flypiggy/4616598 to your computer and use it in GitHub Desktop.
Save flypiggy/4616598 to your computer and use it in GitHub Desktop.
change the assignment name then "$sml test.sml" to make test
use "assignment1.sml";
(* assert for test *)
fun assert (e: bool, message: string) =
let val prefix = "Testing [" ^ message ^ "]"
in if e then print( prefix ^ "----PASS\n")
else print(prefix ^ "----FAIL\n")
end
(* factroies for Q1-Q5 *)
val date1 = (2012,12,12)
val date2 = (2012,12,13)
val date3 = (2013,12,13)
val date4 = (2011,1,30);
(* test for Q1 *)
assert ( is_older(date1, date2), "is_older");
assert ( is_older(date1, date1)=false, "is_older");
assert ( is_older(date3, date1)=false, "is_older");
assert ( is_older(date4, date1), "is_older");
(* test for Q2 *)
assert ( number_in_month([date1, date2, date3, date4], 1) = 1
,"number_in_month");
assert ( number_in_month([date1, date2, date3, date4], 12) = 3
,"number_in_month");
assert ( number_in_month([date1, date2, date3, date4], 0) = 0
,"number_in_month");
(* test for Q3 *)
assert ( number_in_months([date1, date2, date3, date4], [1,12]) = 4
,"number_in_months");
assert ( number_in_months([date1, date2, date3, date4], []) = 0
,"number_in_months");
assert ( number_in_months([date1, date2, date3, date4], [12]) = 3
,"number_in_months");
(* test for Q4 *)
assert ( dates_in_month([date1, date2, date3, date4], 1) = [date4],
"dates_in_month");
assert ( dates_in_month([date1, date2, date3, date4], 3) = [],
"dates_in_month");
assert ( dates_in_month([], 12) =[], "dates_in_month");
assert ( dates_in_month([date1, date2, date3, date4], 12) =
[date1, date2, date3], "dates_in_month");
(* test for Q5 *)
assert ( dates_in_months([date1, date2, date3, date4], [1, 12]) =
[ date4, date1, date2, date3], "dates_in_months");
(* test for Q6 *)
assert ( get_nth(["aaa","bbb","ccc"], 1) = "aaa", "get_nth");
assert ( get_nth(["aaa","bbb","ccc"], 2) = "bbb", "get_nth");
(* test for Q7 *)
assert ( date_to_string date1 = "December 12, 2012", "date_to_string");
(* test for Q8 *)
assert ( number_before_reaching_sum (10, [1, 2, 3, 4]) = 3, "number_before_reaching_sum");
assert ( number_before_reaching_sum (100, [1, 2, 30, 4, 5, 80, 1, 2]) = 5, "number_before_reaching_sum");
(* test for Q9 *)
assert ( what_month(31) = 1, "what_month");
assert ( what_month(32) = 2, "what_month");
assert ( what_month(365) = 12, "what_month");
(* test for Q10 *)
assert ( month_range (1, 2) = [1,1], "month_range");
assert ( month_range (2, 2) = [1], "month_range");
assert ( month_range (2, 1) = [], "month_range");
assert ( month_range (29, 32) = [1, 1, 1, 2], "month_range");
(* test for Q11 *)
assert ( oldest ([date1, date2, date3]) = SOME date1, "oldest");
assert ( oldest ([date1, date2, date3, date4]) = SOME date4, "oldest");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment