Exemple #1
0
    def test_amor(self):
        line = Line('amor')
        syllables = line.syllables
        self.assertCountEqual(
            reduce_to_text(syllables),
            Multiple(
                [
                    Syllable('a'),
                    Syllable(ConsonantCluster('m'), 'o', ConsonantCluster('r'))
                ]
            )
        )

        a, mor = syllables[0]

        self.assertEqual(reduce_to_text(a.vowel), 'a')
        self.assertTrue(a.is_open)
        self.assertFalse(a.is_closed)
        self.assertTrue(a.could_be_heavy)
        self.assertTrue(a.could_be_light)
        self.assertEqual(a.vowel.is_long, Unknown)

        self.assertEqual(reduce_to_text(mor.vowel), 'o')
        self.assertFalse(mor.is_open)
        self.assertTrue(mor.is_closed)
        self.assertTrue(mor.could_be_heavy)
        self.assertFalse(mor.could_be_light)
Exemple #2
0
 def test_no_elision(self):
     self.assertCountEqual(
         reduce_to_text(Line('non ego').with_elisions),
         Multiple(
             ['n', 'o', 'n', 'e', 'g', 'o']
         )
     )
Exemple #3
0
 def test_ait(self):
     self.assertCountEqual(
         reduce_to_text(Line('ait').letters),
         [
             ['a', 'i', 't'],
         ]
     )
Exemple #4
0
 def test_bis(self):
     self.assertCountEqual(
         reduce_to_text(Line('bis').letters),
         [
             ['b', 'i', 's'],
         ]
     )
Exemple #5
0
 def test_am_or(self):
     self.assertCountEqual(
         reduce_to_text(Line('am or').with_elisions),
         Multiple(
             ['a', 'm', 'o', 'r']
         )
     )
Exemple #6
0
 def test_mori(self):
     self.assertCountEqual(
         reduce_to_text(Line('vmori').letters),
         [
             ['u', 'm', 'o', 'r', 'i'],
             # vmorj, etc. are not possible
         ]
     )
Exemple #7
0
 def test_cui(self):
     self.assertCountEqual(
         reduce_to_text(Line('cui').letters),
         (
             ['c', 'uj'],
             ['c', 'u', 'i']
         )
     )
Exemple #8
0
 def test_julius(self):
     self.assertCountEqual(
         reduce_to_text(Line('Julius').letters),
         Multiple(
             ['i', 'u', 'l', 'i', 'u', 's'],
             ['i', 'u', 'l', 'j', 'u', 's'],
             ['j', 'u', 'l', 'i', 'u', 's'],
             ['j', 'u', 'l', 'j', 'u', 's'],
         )
     )
Exemple #9
0
 def test_amo(self):
     self.assertCountEqual(
         reduce_to_text(Line('amo').syllables),
         Multiple(
             [
                 Syllable('a'),
                 Syllable(ConsonantCluster('m'), 'o')
             ]
         )
     )
Exemple #10
0
 def test_urbsa(self):
     self.assertCountEqual(
         reduce_to_text(Line('urbsa').syllables),
         Multiple(
             [
                 Syllable('u', ConsonantCluster('r', 'b')),
                 Syllable(ConsonantCluster('s'), 'a')
             ]
         )
     )
Exemple #11
0
 def test_laviniaque(self):
     self.assertCountEqual(
         reduce_to_text(Line('laviniaque').letters),
         [
             ['l', 'a', 'v', 'i', 'n', 'i', 'a', 'qu', 'e'],
             ['l', 'a', 'v', 'i', 'n', 'j', 'a', 'qu', 'e'],
             ['l', 'au', 'i', 'n', 'i', 'a', 'qu', 'e'],
             ['l', 'au', 'i', 'n', 'j', 'a', 'qu', 'e'],
             ['l', 'a', 'u', 'i', 'n', 'i', 'a', 'qu', 'e'],
             ['l', 'a', 'u', 'i', 'n', 'j', 'a', 'qu', 'e'],
         ]
     )
Exemple #12
0
    def test_two_elisions(self):
        line = Line('rem hida it')

        letters = generate_elisions(line.letters)
        self.assertCountEqual(
            reduce_to_text(letters),
            Multiple(
                ['r', Elision('e', 'm', 'h'), 'i', 'd', Elision('a'), 'i', 't'],
                ['r', 'e', 'm', hiatus, 'h', 'i', 'd', Elision('a'), 'i', 't'],
                ['r', Elision('e', 'm', 'h'), 'i', 'd', 'a', hiatus, 'i', 't'],
                ['r', 'e', 'm', hiatus, 'h', 'i', 'd', 'a', hiatus, 'i', 't'],
            )
        )
Exemple #13
0
 def test_non_ego(self):
     line = Line('non ego')
     syllables = line.syllables
     self.assertCountEqual(
         reduce_to_text(syllables),
         Multiple(
             [
                 Syllable(ConsonantCluster('n'), 'o'),
                 Syllable(ConsonantCluster('n'), 'e'),
                 Syllable(ConsonantCluster('g'), 'o')
             ]
         )
     )
Exemple #14
0
 def test_urbs_an(self):
     self.assertCountEqual(
         reduce_to_text(Line('urbs an').with_clusters),
         Multiple(
             [
                 'u',
                 ConsonantCluster('r', 'b'),
                 ConsonantCluster('s'),
                 'a',
                 ConsonantCluster('n')
             ]
         )
     )
Exemple #15
0
 def test_tenebra(self):
     self.assertCountEqual(
         reduce_to_text(Line('tenebra').syllables),
         Multiple(
             [
                 Syllable(ConsonantCluster('t'), 'e'),
                 Syllable(ConsonantCluster('n'), 'e'),
                 Syllable(ConsonantCluster('b', 'r'), 'a')
             ],
             [
                 Syllable(ConsonantCluster('t'), 'e'),
                 Syllable(ConsonantCluster('n'), 'e', ConsonantCluster('b')),
                 Syllable(ConsonantCluster('r'), 'a')
             ]
         )
     )
Exemple #16
0
    def test_testvar(self):
        c_map = CombinatoricMap(MakeInto(Letter),
            (Target('a', TestVar('C', is_consonant), 'e'),
                ReplaceWith(['A', Var('C'), 'E'])),
            (Target(Var('A', Any)),
                ReplaceWith([Var('A')]))
        )

        input = 'garebaie'

        self.assertCountEqual(
            reduce_to_text(c_map.map(input)),
            (
                ['g', 'A', 'r', 'E', 'b', 'a', 'i', 'e'],
            )
        )
Exemple #17
0
 def test_basics(self):
     self.assertCountEqual(
         reduce_to_text(Line('blurbsit blabst').with_clusters),
         # Only 'urbs' gets split multiple ways, since it's in the
         # middle of a word.
         Multiple(
             [
                 ConsonantCluster('b', 'l'),
                 'u',
                 ConsonantCluster('r'),
                 ConsonantCluster('b', 's'),
                 'i',
                 ConsonantCluster('t'),
                 ConsonantCluster('b', 'l'),
                 'a',
                 ConsonantCluster('b', 's', 't')
             ],
             [
                 ConsonantCluster('b', 'l'),
                 'u',
                 ConsonantCluster('r', 'b'),
                 ConsonantCluster('s'),
                 'i',
                 ConsonantCluster('t'),
                 ConsonantCluster('b', 'l'),
                 'a',
                 ConsonantCluster('b', 's', 't')
             ],
             [
                 ConsonantCluster('b', 'l'),
                 'u',
                 ConsonantCluster('r', 'b', 's'),
                 'i',
                 ConsonantCluster('t'),
                 ConsonantCluster('b', 'l'),
                 'a',
                 ConsonantCluster('b', 's', 't')
             ],
         )
     )
Exemple #18
0
    def test_simplest(self):
        line = Line('re id')

        letters = generate_elisions(line.letters)
        self.assertEqual(letters[0][0].__class__, Letter)
        self.assertCountEqual(
            reduce_to_text(letters),
            Multiple(
                ['r', Elision('e'), 'i', 'd'],
                ['r', 'e', hiatus, 'i', 'd'],
            )
        )

        self.assertCountEqual(
            [' '.join(str(letter) for letter in e)
                for e in line.with_elisions
            ],
            [
                'r(e) i d',
                'r e i d'
            ]
        )
Exemple #19
0
 def reduced_to_text(self):
     return Syllable(*[reduce_to_text(cl) for cl in self.elems])
Exemple #20
0
 def reduced_to_text(self):
     return ConsonantCluster(*[reduce_to_text(l) for l in self.letters])
Exemple #21
0
 def __repr__(self):
     return '\nCombinatoricAlternatives(%s)' % ', '.join(
         repr(reduce_to_text(a)) for a in self.alternatives
     )
Exemple #22
0
 def reduced_to_text(self):
     return self.__class__(
         *[reduce_to_text(sy) for sy in self.raw_syllables]
     )