diff options
Diffstat (limited to 'sorsyl/test/test_sonorityold.ml')
-rw-r--r-- | sorsyl/test/test_sonorityold.ml | 133 |
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" |