summaryrefslogtreecommitdiff
path: root/sorsyl/test/test_sonorityold.ml
diff options
context:
space:
mode:
Diffstat (limited to 'sorsyl/test/test_sonorityold.ml')
-rw-r--r--sorsyl/test/test_sonorityold.ml133
1 files changed, 133 insertions, 0 deletions
diff --git a/sorsyl/test/test_sonorityold.ml b/sorsyl/test/test_sonorityold.ml
new file mode 100644
index 0000000..70845a6
--- /dev/null
+++ b/sorsyl/test/test_sonorityold.ml
@@ -0,0 +1,133 @@
+(** Tests for the Sonority module *)
+
+open Sorsyl
+
+(** Test fixture - initialize the module once *)
+let () =
+ (* Initialize with the data directory *)
+ (* When run with dune test, the working directory is _build/default/test *)
+ let data_dir =
+ if Sys.file_exists "./data" then "./data"
+ else if Sys.file_exists "../data" then "../data"
+ else if Sys.file_exists "../../../data" then "../../../data"
+ else (
+ Printf.eprintf "Current directory: %s\n" (Sys.getcwd ());
+ failwith "Cannot find data directory")
+ in
+ Sonority.init data_dir
+
+(** Test sonority value 9 - Low vowels *)
+let test_sonority_nine () =
+ let segments = [ "a"; "ɑ"; "æ"; "ɒ"; "e"; "o̥" ] in
+ let expected = [ 9; 9; 9; 9; 9; 9 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_nine: PASSED\n"
+
+(** Test sonority value 8 - High vowels *)
+let test_sonority_eight () =
+ let segments = [ "i"; "y"; "ɨ"; "ʉ"; "ɯ"; "u" ] in
+ let expected = [ 8; 8; 8; 8; 8; 8 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_eight: PASSED\n"
+
+(** Test sonority value 7 - Glides/approximants *)
+let test_sonority_seven () =
+ let segments = [ "j"; "w"; "ʋ"; "ɰ"; "ɹ"; "e̯" ] in
+ let expected = [ 7; 7; 7; 7; 7; 7 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_seven: PASSED\n"
+
+(** Test sonority value 6 - Liquids *)
+let test_sonority_six () =
+ let segments = [ "l"; "ɭ"; "r"; "ɾ" ] in
+ let expected = [ 6; 6; 6; 6 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_six: PASSED\n"
+
+(** Test sonority value 5 - Nasals *)
+let test_sonority_five () =
+ let segments = [ "n"; "m"; "ŋ"; "ɴ" ] in
+ let expected = [ 5; 5; 5; 5 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_five: PASSED\n"
+
+(** Test sonority value 4 - Voiced fricatives *)
+let test_sonority_four () =
+ let segments = [ "v"; "z"; "ʒ"; "ɣ" ] in
+ let expected = [ 4; 4; 4; 4 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_four: PASSED\n"
+
+(** Test sonority value 3 - Voiceless fricatives *)
+let test_sonority_three () =
+ let segments = [ "f"; "s"; "x"; "ħ"; "ʃ" ] in
+ let expected = [ 3; 3; 3; 3; 3 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_three: PASSED\n"
+
+(** Test sonority value 2 - Voiced stops *)
+let test_sonority_two () =
+ let segments = [ "b"; "ɡ"; "d"; "ɢ" ] in
+ let expected = [ 2; 2; 2; 2 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_two: PASSED\n"
+
+(** Test sonority value 1 - Voiceless stops *)
+let test_sonority_one () =
+ let segments = [ "p"; "k"; "c"; "q" ] in
+ let expected = [ 1; 1; 1; 1 ] in
+ let results = List.map Sonority.sonority segments in
+ assert (results = expected);
+ Printf.printf "test_sonority_one: PASSED\n"
+
+(** Test unknown segment handling *)
+let test_unknown_segment () =
+ try
+ let _ = Sonority.sonority "🦆" in
+ assert false (* Should not reach here *)
+ with
+ | Failure msg when String.sub msg 0 20 = "Unknown IPA segment:" ->
+ Printf.printf "test_unknown_segment: PASSED\n"
+ | _ -> assert false
+
+(** Test feature-based sonority calculation *)
+let test_sonority_from_features () =
+ (* Test a simple voiceless stop: -syl, +cons, -son, -cont, -voi *)
+ let segment =
+ [
+ (Feature.Syllabic, Feature.Minus);
+ (Feature.Consonantal, Feature.Plus);
+ (Feature.Sonorant, Feature.Minus);
+ (Feature.Continuant, Feature.Minus);
+ (Feature.Voiced, Feature.Minus);
+ ]
+ in
+ let result = Sonority.sonority_from_features segment in
+ assert (result = 1);
+ Printf.printf "test_sonority_from_features: PASSED\n"
+
+(** Run all tests *)
+let () =
+ Printf.printf "Running Sonority module tests...\n";
+ Printf.printf "================================\n";
+ test_sonority_nine ();
+ test_sonority_eight ();
+ test_sonority_seven ();
+ test_sonority_six ();
+ test_sonority_five ();
+ test_sonority_four ();
+ test_sonority_three ();
+ test_sonority_two ();
+ test_sonority_one ();
+ test_unknown_segment ();
+ test_sonority_from_features ();
+ Printf.printf "================================\n";
+ Printf.printf "All tests passed!\n"