Example #1
0
    def test_syllables_phones(self):
        word = Word('the', 0.05, 0.25, ['dh', 'iy'], ['dh'], 'DT')
        word._phones = [Phone('dh')]

        assert_equal(word.syllables(), 1)
        assert_equal(word.syllables(phonetic=False), 1)
        assert_equal(word.syllables(phonetic=True), 0)
Example #2
0
class TestWord(object):

    def setup(self):
        self.word = Word('the', 0.05, 0.25, ['dh', 'iy'], ['dh'], 'DT')
        self.empty_word = Word('uh', 0.25, 0.40)

    def test_word(self):
        assert_equal(self.word.orthography, 'the')
        assert_equal(self.word.beg, 0.05)
        assert_equal(self.word.end, 0.25)
        assert_equal(self.word.phonemic, ['dh', 'iy'])
        assert_equal(self.word.phonetic, ['dh'])
        assert_equal(self.word.pos, 'DT')

        assert_equal(self.word.dur, 0.25 - 0.05)
        assert_is_none(self.word.phones)

    def test_empty_word(self):
        assert_equal(self.empty_word.orthography, 'uh')
        assert_equal(self.empty_word.beg, 0.25)
        assert_equal(self.empty_word.end, 0.40)
        assert_is_none(self.empty_word.phonemic)
        assert_is_none(self.empty_word.phonetic)
        assert_is_none(self.empty_word.pos)
        assert_is_none(self.empty_word.phones)
        assert_equal(self.empty_word.dur, 0.40 - 0.25)

    @raises(TypeError)
    def test_missing_word(self):
        word = Word()

    def test_syllables(self):
        assert_equal(self.word.syllables(), 1)
        assert_equal(self.word.syllables(phonetic=False), 1)
        assert_equal(self.word.syllables(phonetic=True), 0)

        assert_is_none(self.empty_word.syllables())
        assert_is_none(self.empty_word.syllables(False))
        assert_is_none(self.empty_word.syllables(True))

    @raises(AttributeError)
    def test_readonly_orthography(self):
        self.word.orthography = 'an'

    @raises(AttributeError)
    def test_readonly_beg(self):
        self.word.beg = 0.0

    @raises(AttributeError)
    def test_readonly_end(self):
        self.word.end = 1.0

    @raises(AttributeError)
    def test_readonly_dur(self):
        self.word.dur = 1.0

    @raises(AttributeError)
    def test_readonly_phonemic(self):
        self.word.phonemic = ['uh', 'n']

    @raises(AttributeError)
    def test_readonly_phonetic(self):
        self.word.phonetic = ['en']

    @raises(AttributeError)
    def test_readonly_pos(self):
        self.word.pos = 'DT'

    def test_phones_setter(self):
        assert_false(self.word.misaligned)

        phone_th = Phone('th')
        phone_dh = Phone('dh')

        self.word._phones = [phone_th]
        assert_in(phone_th, self.word.phones)
        assert_true(self.word.misaligned)

        self.word._phones = [phone_dh]
        assert_in(phone_dh, self.word.phones)
        assert_false(self.word.misaligned)

        self.word._phones = []
        assert_true(self.word.misaligned)

    def test_misaligned(self):
        misaligned_word = Word('', 0.50, 0.25)
        assert_true(misaligned_word.misaligned)

        phone_dh = Phone('dh')
        misaligned_word._phones = [phone_dh]
        assert_true(misaligned_word.misaligned)

    def test_misaligned_zero(self):
        zero_word = Word('', 0.40, 0.40)
        assert_false(zero_word.misaligned)

    def test_repr(self):
        assert_equal(repr(self.word), "Word('the', 0.05, 0.25, ['dh', 'iy'], ['dh'], 'DT')")

    def test_str(self):
        assert_equal(str(self.word), '<Word "the" at 0.05>')