programming_languages/sml/week4/hw3_test.sml

90 lines
2.1 KiB
Standard ML
Raw Normal View History

2020-06-05 04:57:25 +03:00
use "test.sml";
use "hw3.sml";
val () =
assert
$ only_capitals ["Alpha", "beta"] = ["Alpha"]
$ "only_capitals: filter strings"
val () =
assert
$ longest_string1 ["alpha", "betta"] = "alpha"
$ "longest_string1: finds longest string"
val () =
assert
$ longest_string1 [] = ""
$ "longest_string1: empty syting on empty list"
val () =
assert
$ longest_string2 ["alpha", "betta"] = "betta"
$ "longest_string2: on ties it returns the string closest to the end"
val () =
assert
$ longest_string_helper (op >) ["alpha", "betta"] = "alpha"
$ "longest_string_helper: a > b = longest_string1"
val () =
assert
$ longest_string_helper (op >=) ["alpha", "betta"] = "betta"
$ "longest_string_helper: a >= b = longest_string2"
val () =
assert
$ longest_capitalized ["Alpha", "bettaaaa"] = "Alpha"
$ "longest_capitalized: longest capitalized string"
val () =
assert
$ rev_string "string" = "gnirts"
$ "rev_string: reverses string"
2020-06-16 00:58:09 +03:00
val NONE =
first_answer (fn elm => NONE) []
handle NoAnswer =>
assert true "first_answer: rises on on empty lst"
|> (fn _ => NONE)
val NONE =
first_answer (fn elm => NONE) ["elm"]
handle NoAnswer =>
assert true "first_answer: rises on miss"
|> (fn _ => NONE)
val () =
assert
$ first_answer (fn elm => SOME elm) ["elm"] = "elm"
$ "first_answer: returns first answer"
val () =
assert
$ first_answer
(fn elm => if elm = "second" then SOME elm else NONE)
["elm", "second"] = "second"
$ "first_answer: returns some answer"
val () =
assert
$ all_answers (fn elm => SOME elm) [] = SOME []
$ "all_answers: returns SOME [] on []"
val () =
assert
$ all_answers (fn elm => SOME [elm]) ["a", "b"] = SOME ["a", "b"]
$ "all_answers: returns all answers"
val () =
assert
$ all_answers
(fn elm => if elm = "a" then SOME [elm] else NONE)
["a", "b"] = NONE
$ "all_answers: NONE on at least one NONE"
2020-06-05 04:57:25 +03:00
val () = complete ()