aboutsummaryrefslogtreecommitdiff
path: root/motus/test
diff options
context:
space:
mode:
Diffstat (limited to 'motus/test')
-rw-r--r--motus/test/dune3
-rw-r--r--motus/test/motus_test.ml51
2 files changed, 54 insertions, 0 deletions
diff --git a/motus/test/dune b/motus/test/dune
new file mode 100644
index 0000000..04fe199
--- /dev/null
+++ b/motus/test/dune
@@ -0,0 +1,3 @@
+(test
+ (name motus_test)
+ (libraries ounit2 motus_lib))
diff --git a/motus/test/motus_test.ml b/motus/test/motus_test.ml
new file mode 100644
index 0000000..4ea952e
--- /dev/null
+++ b/motus/test/motus_test.ml
@@ -0,0 +1,51 @@
+module Validity = Motus_lib.Validity
+open StdLabels
+open OUnit2
+
+let tests =
+ "validity test suite"
+ >::: [ ( "Sequence of elements"
+ >:: fun _ ->
+ assert_equal
+ 243
+ ( Validity.sequence 5
+ |> List.of_seq
+ |> List.sort_uniq ~cmp:Stdlib.compare
+ |> List.length ) )
+ ; ( "Index of element"
+ >:: fun _ ->
+ assert_equal 0 Validity.(index_of_result [| Wellplaced; Wellplaced |])
+ )
+ ; ( "Bijection for all the elements"
+ >:: fun _ ->
+ (* Create an array of 243 elements*)
+ let arr = Array.make 243 false in
+ let seq = Validity.sequence 5 in
+ (* Populate the array *)
+ Seq.iter
+ (fun v ->
+ let idx = Validity.index_of_result v in
+ Array.set arr idx true )
+ seq;
+
+ (* Now count the elements set to true *)
+ let count =
+ Array.fold_left arr ~init:0 ~f:(fun acc value ->
+ if value then acc + 1 else acc )
+ in
+
+ assert_equal 243 count )
+ ; ( "Compare words 1"
+ >:: fun _ ->
+ assert_equal
+ (Some Validity.[| Wellplaced; Wellplaced; Wellplaced; Wellplaced |])
+ (Validity.compare_words "Test" ~ref:"Test") )
+ ; ( "Compare words 2"
+ >:: fun _ ->
+ assert_equal
+ (Some Validity.[| Missing; Misplaced; Wellplaced |])
+ (Validity.compare_words "DAC" ~ref:"ABC") )
+ ]
+
+
+let _ = run_test_tt_main tests