ai-content-maker/.venv/Lib/site-packages/tests/test_accent.py

99 lines
3.0 KiB
Python
Raw Normal View History

2024-05-03 04:18:51 +03:00
#!/usr/bin/env python3
"""Tests for phoneme conversion between languages"""
import unittest
from gruut_ipa import Phonemes
from gruut_ipa.accent import guess_phonemes
class AccentTestCase(unittest.TestCase):
"""Test cases for phoneme conversion between languages"""
@classmethod
def setUpClass(cls):
cls.de_phonemes = Phonemes.from_language("de-de")
def test_exact(self):
"""Test exact match"""
guessed = guess_phonemes("k", self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
self.assertEqual(guessed.phonemes[0].text, "k")
def test_letters(self):
"""Test matching letters"""
guessed = guess_phonemes("ɐ̯ː", self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
self.assertEqual(guessed.phonemes[0].text, "ɐ")
def test_close_vowel(self):
"""Test nearby vowel"""
guessed = guess_phonemes("ɑ", self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
# Placement is more important that height
self.assertEqual(guessed.phonemes[0].text, "ɐ")
def test_close_consonant(self):
"""Test nearby consonant"""
guessed = guess_phonemes("ð", self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
# Should match a nearby voiced consonant
self.assertIn(guessed.phonemes[0].text, {"v", "z"})
def test_dipthong_letters_match(self):
"""Test dipthong (two vowels) with matching letters"""
guessed = guess_phonemes("", self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
self.assertEqual(guessed.phonemes[0].text, "aʊ̯")
def test_dipthong_split(self):
"""Test dipthong (two vowels) split into two phonemes"""
guessed = guess_phonemes("", self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 2)
self.assertEqual(guessed.phonemes[0].text, "oː")
self.assertEqual(guessed.phonemes[1].text, "ʊ")
def test_g(self):
"""Test ɡ/g mapping"""
from gruut_ipa.accent import GS
for g in GS:
guessed = guess_phonemes(g, self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
self.assertIn(guessed.phonemes[0].text, GS)
def test_r(self):
"""Test r-like mapping"""
from gruut_ipa.accent import R_LIKE
for r in R_LIKE:
guessed = guess_phonemes(r, self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
self.assertIn(guessed.phonemes[0].text, R_LIKE)
def test_schwa(self):
"""Test schwa mapping"""
from gruut_ipa.accent import R_LIKE, SCHWA_PREFERRED
from gruut_ipa.constants import SCHWAS
for s in SCHWAS:
guessed = guess_phonemes(s, self.de_phonemes)
self.assertEqual(len(guessed.phonemes), 1)
self.assertIn(guessed.phonemes[0].text, SCHWA_PREFERRED + R_LIKE)
# -----------------------------------------------------------------------------
if __name__ == "__main__":
unittest.main()