41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
||
"""Tests for Phone class"""
|
||
import unicodedata
|
||
import unittest
|
||
|
||
from gruut_ipa import IPA, Phone, Stress, VowelHeight, VowelPlacement
|
||
|
||
|
||
class PhoneTestCase(unittest.TestCase):
|
||
"""Test cases for Phone class"""
|
||
|
||
def test_from_string(self):
|
||
"""Test Phone.from_string"""
|
||
# ˈãː
|
||
codepoints = [IPA.STRESS_PRIMARY, "a", IPA.NASAL, IPA.LONG]
|
||
ipa = "".join(codepoints)
|
||
|
||
phone = Phone.from_string(ipa)
|
||
|
||
# Important: text is NFC normalized, so combining characters are
|
||
# elimiated if possible.
|
||
self.assertEqual(phone.text, unicodedata.normalize("NFC", "ˈãː"))
|
||
|
||
self.assertEqual(phone.letters, "a")
|
||
self.assertEqual(phone.diacritics[0], {IPA.NASAL})
|
||
self.assertEqual(phone.suprasegmentals, {IPA.STRESS_PRIMARY, IPA.LONG})
|
||
|
||
self.assertEqual(phone.stress, Stress.PRIMARY)
|
||
self.assertTrue(phone.is_nasal)
|
||
self.assertTrue(phone.is_long)
|
||
|
||
self.assertTrue(phone.is_vowel)
|
||
self.assertEqual(phone.vowel.height, VowelHeight.OPEN)
|
||
self.assertEqual(phone.vowel.placement, VowelPlacement.FRONT)
|
||
|
||
|
||
# -----------------------------------------------------------------------------
|
||
|
||
if __name__ == "__main__":
|
||
unittest.main()
|