def test_cloze_import(self):
        expected = Category._make([
            'je {{c1::parle::parler, présent}}|I speak|[sound:je parle.mp3]|parler',
            'tu {{c1::parles::parler, présent}}|you speak|[sound:tu parles.mp3]|parler',
            'il/elle/on {{c1::parle::parler, présent}}|he/she/it speaks|[sound:il parle.mp3]|parler',
            'nous {{c1::parlons::parler, présent}}|we speak|[sound:nous parlons.mp3]|parler',
            'vous {{c1::parlez::parler, présent}}|you speak|[sound:vous parlez.mp3]|parler',
            'ils/elles {{c1::parlent::parler, présent}}|they speak|[sound:ils parlent.mp3]|parler'
        ])

        translation = [
            'I speak', 'you speak', 'he/she/it speaks', 'we speak',
            'you speak', 'they speak'
        ]

        sound = [
            'je parle.mp3', 'tu parles.mp3', 'il parle.mp3',
            'nous parlons.mp3', 'vous parlez.mp3', 'ils parlent.mp3'
        ]

        conj = French.construct_inflection('parler', 'présent')
        actual = French.output_cloze_import('parler', 'présent', translation,
                                            sound, conj)

        with self.subTest():
            self.assertEqual(expected.fps, actual.fps)
            self.assertEqual(expected.sps, actual.sps)
            self.assertEqual(expected.tps, actual.tps)
            self.assertEqual(expected.fpp, actual.fpp)
            self.assertEqual(expected.spp, actual.spp)
            self.assertEqual(expected.tpp, actual.tpp)
 def test_simple_tense_ouput(self):
     expected = [
         'je parle', 'tu parles', 'il/elle/on parle', 'nous parlons',
         'vous parlez', 'ils/elles parlent'
     ]
     inflection = French.construct_inflection('parler', 'présent')
     actual = list(French.construct_simple_tense_output(inflection))
     self.assertEqual(expected, actual)
 def test_cloze_verb_begins_with_vowel(self):
     expected =\
         Category._make(["j'{{c1::abandonne::abandonner, présent}}",
                         'tu {{c1::abandonnes::abandonner, présent}}',
                         'il/elle/on {{c1::abandonne::abandonner, présent}}',
                         'nous {{c1::abandonnons::abandonner, présent}}',
                         'vous {{c1::abandonnez::abandonner, présent}}',
                         'ils/elles {{c1::abandonnent::abandonner, présent}}'])
     conj = French.construct_inflection('abandonner', 'présent')
     actual = French.output_cloze('abandonner', 'présent', conj)
     with self.subTest():
         self.assertEqual(expected.fps, actual.fps)
         self.assertEqual(expected.sps, actual.sps)
         self.assertEqual(expected.tps, actual.tps)
         self.assertEqual(expected.fpp, actual.fpp)
         self.assertEqual(expected.spp, actual.spp)
         self.assertEqual(expected.tpp, actual.tpp)
    def test_cloze_normal(self):
        expected = Category._make([
            'je {{c1::parle::parler, présent}}',
            'tu {{c1::parles::parler, présent}}',
            'il/elle/on {{c1::parle::parler, présent}}',
            'nous {{c1::parlons::parler, présent}}',
            'vous {{c1::parlez::parler, présent}}',
            'ils/elles {{c1::parlent::parler, présent}}'
        ])

        conj = French.construct_inflection('parler', 'présent')
        actual = French.output_cloze('parler', 'présent', conj)
        with self.subTest():
            self.assertEqual(expected.fps, actual.fps)
            self.assertEqual(expected.sps, actual.sps)
            self.assertEqual(expected.tps, actual.tps)
            self.assertEqual(expected.fpp, actual.fpp)
            self.assertEqual(expected.spp, actual.spp)
            self.assertEqual(expected.tpp, actual.tpp)
 def test_verb_starts_with_a(self):
     inf = French.construct_inflection('abandonner', 'présent').fps
     pronoun, verb = inf
     self.assertEqual("j'abandonne", '{}{}'.format(pronoun, verb))