#! encoding = utf-8

import unittest

from dictionary import conjug, conjug_all

class TestConjug(unittest.TestCase):

    def test_present_indicatif(self):

        answer = {
            "aimer": ("j'aime", "tu aimes", "il aime", "elle aime",
                      "nous aimons", "vous aimez", "ils aiment", "elles aiment"),
            "manger": ("je mange", "tu manges", "il mange", "elle mange",
                       "nous mangeons", "vous mangez", "ils mangent", "elles mangent"),
            "partager": ("je partage", "tu partages", "il partage", "elle partage",
                         "nous partageons", "vous partagez", "ils partagent", "elles partagent"),
            "habiter": ("j'habite", "tu habites", "il habite", "elle habite",
                        "nous habitons", "vous habitez", "ils habitent", "elles habitent"),
            "habiller": ("j'habille", "tu habilles", "il habille", "elle habille",
                         "nous habillons", "vous habillez", "ils habillent", "elles habillent"),
            "appeler": ("j'appelle", "tu appelles", "il appelle", "elle appelle",
                        "nous appelons", "vous appelez", "ils appellent", "elles appellent"),
            "jeter": ("je jette", "tu jettes", "il jette", "elle jette",
                      "nous jetons", "vous jetez", "ils jettent", "elles jettent"),
            "acheter": ("j'achète", "tu achètes", "il achète", "elle achète",
                        "nous achetons", "vous achetez", "ils achètent", "elles achètent"),
            "préférer": ("je préfère", "tu préfères", "il préfère", "elle préfère",
                         "nous préférons", "vous préférez", "ils préfèrent", "elles préfèrent"),
            "espérer": ("j'espère", "tu espères", "il espère", "elle espère",
                        "nous espérons", "vous espérez", "ils espèrent", "elles espèrent"),
            "atterrir": ("j'atterris", "tu atterris", "il atterrit", "elle atterrit",
                         "nous atterrissons", "vous atterrissez", "ils atterrissent", "elles atterrissent"),
            "choisir": ("je choisis", "tu choisis", "il choisit", "elle choisit",
                        "nous choisissons", "vous choisissez", "ils choisissent", "elles choisissent"),
            "réunir": ("je réunis", "tu réunis", "il réunit", "elle réunit",
                       "nous réunissons", "vous réunissez", "ils réunissent", "elles réunissent"),
            "sertir": ("je sertis", "tu sertis", "il sertit", "elle sertit",
                       "nous sertissons", "vous sertissez", "ils sertissent", "elles sertissent"),
            "se coucher": ("je me couche", "tu te couches", "il se couche", "elle se couche",
                           "nous nous couchons", "vous vous couchez", "ils se couchent", "elles se couchent"),
            "se passer": ("je me passe", "tu te passes", "il se passe", "elle se passe",
                          "nous nous passons", "vous vous passez", "ils se passent", "elles se passent"),
            "s'habiller": ("je m'habille", "tu t'habilles", "il s'habille",
                           "elle s'habille", "nous nous habillons", "vous vous habillez",
                           "ils s'habillent", "elles s'habillent"),
            "s'asseoir": ("je m'assieds", "tu t'assieds", "il s'assied", "elle s'assied",
                          "nous nous asseyons", "vous vous asseyez", "ils s'asseyent", "elles s'asseyent"),
            "aller": ("je vais", "tu vas", "il va", "elle va",
                      "nous allons", "vous allez", "ils vont", "elles vont"),
            "apercevoir": ("j'aperçois", "tu aperçois", "il aperçoit", "elle aperçoit",
                           "nous apercevons", "vous apercevez", "ils aperçoivent", "elles aperçoivent"),
            "apprendre": ("j'apprends", "tu apprends", "il apprend", "elle apprend",
                          "nous apprenons", "vous apprenez", "ils apprennent", "elles apprennent"),
            "appuyer": ("j'appuie","tu appuies","il appuie","elle appuie",
                        "nous appuyons", "vous appuyez", "ils appuient", "elles appuient"),
            "atteindre": ("j'atteins", "tu atteins", "il atteint", "elle atteint",
                          "nous atteignons", "vous atteignez", "ils atteignent", "elles atteignent"),
            "attendre": ("j'attends", "tu attends", "il attend", "elle attend",
                         "nous attendons", "vous attendez", "ils attendent", "elles attendent"),
            "avoir": ("j'ai", "tu as", "il a", "elle a",
                      "nous avons", "vous avez", "ils ont", "elles ont"),
            "boire": ("je bois", "tu bois", "il boit", "elle boit",
                      "nous buvons", "vous buvez", "ils boivent", "elles boivent"),
            "bouillir": ("je bous", "tu bous", "il bout", "elle bout",
                         "nous bouillons", "vous bouillez", "ils bouillent", "elles bouillent"),
            "comprendre": ("je comprends", "tu comprends", "il comprend", "elle comprend",
                           "nous comprenons", "vous comprenez", "ils comprennent", "elles comprennent"),
            "conduire": ("je conduis", "tu conduis", "il conduit", "elle conduit",
                         "nous conduisons", "vous conduisez", "ils conduisent", "elles conduisent"),
            "connaître": ("je connais", "tu connais", "il connaît", "elle connaît",
                          "nous connaissons", "vous connaissez", "ils connaissent", "elles connaissent"),
            "courir": ("je cours", "tu cours", "il court", "elle court",
                       "nous courons", "vous courez", "ils courent", "elles courent"),
            "couvrir": ("je couvre", "tu couvres", "il couvre", "elle couvre",
                        "nous couvrons", "vous couvrez", "ils couvrent", "elles couvrent"),
            "croire": ("je crois", "tu crois", "il croit", "elle croit",
                       "nous croyons", "vous croyez", "ils croient", "elles croient"),
            "cueillir": ("je cueille", "tu cueilles", "il cueille", "elle cueille",
                         "nous cueillons", "vous cueillez", "ils cueillent", "elles cueillent"),
            "cuire": ("je cuis", "tu cuis", "il cuit", "elle cuit",
                      "nous cuisons", "vous cuisez", "ils cuisent", "elles cuisent",),
            "décevoir": ("je déçois", "tu déçois", "il déçoit", "elle déçoit",
                         "nous décevons", "vous décevez", "ils déçoivent", "elles déçoivent",),
            "découvrir": ("je découvre", "tu découvres", "il découvre", "elle découvre",
                          "nous découvrons", "vous découvrez", "ils découvrent", "elles découvrent",),
            "déduire": ("je déduis", "tu déduis", "il déduit", "elle déduit",
                        "nous déduisons", "vous déduisez", "ils déduisent", "elles déduisent",),
            "descendre": ("je descends", "tu descends", "il descend", "elle descend",
                          "nous descendons", "vous descendez", "ils descendent", "elles descendent",),
            "détendre": ("je détends", "tu détends", "il détend", "elle détend",
                         "nous détendons", "vous détendez", "ils détendent", "elles détendent",),
            "devenir": ("je deviens", "tu deviens", "il devient", "elle devient",
                        "nous devenons", "vous devenez", "ils deviennent", "elles deviennent",),
            "devoir": ("je dois", "tu dois", "il doit", "elle doit",
                       "nous devons", "vous devez", "ils doivent", "elles doivent",),
            "dire": ("je dis", "tu dis", "il dit", "elle dit",
                     "nous disons", "vous dites", "ils disent", "elles disent",),
            "disparaître": ("je disparais", "tu disparais", "il disparaît", "elle disparaît",
                            "nous disparaissons", "vous disparaissez", "ils disparaissent", "elles disparaissent",),
            "dormir": ("je dors", "tu dors", "il dort", "elle dort",
                       "nous dormons", "vous dormez", "ils dorment", "elles dorment",),
            "écrire": ("j'écris", "tu écris", "il écrit", "elle écrit",
                       "nous écrivons", "vous écrivez", "ils écrivent", "elles écrivent",),
            "enduire": ("j'enduis", "tu enduis", "il enduit", "elle enduit",
                        "nous enduisons", "vous enduisez", "ils enduisent", "elles enduisent",),
            "entendre": ("j'entends", "tu entends", "il entend", "elle entend",
                         "nous entendons", "vous entendez", "ils entendent", "elles entendent",),
            "être": ("je suis", "tu es", "il est", "elle est",
                     "nous sommes", "vous êtes", "ils sont", "elles sont",),
            "faire": ("je fais", "tu fais", "il fait", "elle fait",
                      "nous faisons", "vous faites", "ils font", "elles font",),
            "falloir": ("", "", "il faut", "", "", "", "", ""),
            "frire": ("je fris", "tu fris", "il frit", "", "", "", "", ""),
            "inscrire": ("j'inscris", "tu inscris", "il inscrit", "elle inscrit",
                         "nous inscrivons", "vous inscrivez", "ils inscrivent", "elles inscrivent",),
            "s'inscrire": ("je m'inscris", "tu t'inscris", "il s'inscrit", "elle s'inscrit",
                           "nous nous inscrivons", "vous vous inscrivez", "ils s'inscrivent", "elles s'inscrivent",),
            "joindre": ("je joins", "tu joins", "il joint", "elle joint",
                        "nous joignons", "vous joignez", "ils joignent", "elles joignent",),
            "lire": ("je lis", "tu lis", "il lit", "elle lit",
                     "nous lisons", "vous lisez", "ils lisent", "elles lisent",),
            "mettre": ("je mets", "tu mets", "il met", "elle met",
                       "nous mettons", "vous mettez", "ils mettent", "elles mettent",),
            "mourir": ("je meurs", "tu meurs", "il meurt", "elle meurt",
                       "nous mourons", "vous mourez", "ils meurent", "elles meurent",),
            "naître": ("je nais", "tu nais", "il naît", "elle naît",
                       "nous naissons", "vous naissez", "ils naissent", "elles naissent",),
            "obtenir": ("j'obtiens", "tu obtiens", "il obtient", "elle obtient",
                        "nous obtenons", "vous obtenez", "ils obtiennent", "elles obtiennent",),
            "offrir": ("j'offre", "tu offres", "il offre", "elle offre",
                       "nous offrons", "vous offrez", "ils offrent", "elles offrent",),
            "ouvrir": ("j'ouvre", "tu ouvres", "il ouvre", "elle ouvre",
                       "nous ouvrons", "vous ouvrez", "ils ouvrent", "elles ouvrent",),
            "partir": ("je pars", "tu pars", "il part", "elle part",
                       "nous partons", "vous partez", "ils partent", "elles partent",),
            "peindre": ("je peins", "tu peins", "il peint", "elle peint",
                        "nous peignons", "vous peignez", "ils peignent", "elles peignent",),
            "pendre": ("je pends", "tu pends", "il pend", "elle pend",
                       "nous pendons", "vous pendez", "ils pendent", "elles pendent",),
            "percevoir": ("je perçois", "tu perçois", "il perçoit", "elle perçoit",
                          "nous percevons", "vous percevez", "ils perçoivent", "elles perçoivent",),
            "perdre": ("je perds", "tu perds", "il perd", "elle perd",
                       "nous perdons", "vous perdez", "ils perdent", "elles perdent",),
            "permettre": ("je permets", "tu permets", "il permet", "elle permet",
                          "nous permettons", "vous permettez", "ils permettent", "elles permettent",),
            "pleuvoir": ("", "", "il pleut", "", "", "", "", ""),
            "pourvoir": ("je pourvois", "tu pourvois", "il pourvoit", "elle pourvoit",
                         "nous pourvoyons", "vous pourvoyez", "ils pourvoient", "elles pourvoient",),
            "pouvoir": ("je peux", "tu peux", "il peut", "elle peut",
                        "nous pouvons", "vous pouvez", "ils peuvent", "elles peuvent",),
            "prendre": ("je prends", "tu prends", "il prend", "elle prend",
                        "nous prenons", "vous prenez", "ils prennent", "elles prennent",),
            "prescrire": ("je prescris", "tu prescris", "il prescrit", "elle prescrit",
                          "nous prescrivons", "vous prescrivez", "ils prescrivent", "elles prescrivent",),
            "prétendre": ("je prétends", "tu prétends", "il prétend", "elle prétend",
                          "nous prétendons", "vous prétendez", "ils prétendent", "elles prétendent",),
            "produire": ("je produis", "tu produis", "il produit", "elle produit",
                         "nous produisons", "vous produisez", "ils produisent", "elles produisent",),
            "recevoir": ("je reçois", "tu reçois", "il reçoit", "elle reçoit",
                         "nous recevons", "vous recevez", "ils reçoivent", "elles reçoivent",),
            "réduire": ("je réduis", "tu réduis", "il réduit", "elle réduit",
                        "nous réduisons", "vous réduisez", "ils réduisent", "elles réduisent",),
            "rejoindre": ("je rejoins", "tu rejoins", "il rejoint", "elle rejoint",
                          "nous rejoignons", "vous rejoignez", "ils rejoignent", "elles rejoignent",),
            "rendre": ("je rends", "tu rends", "il rend", "elle rend",
                       "nous rendons", "vous rendez", "ils rendent", "elles rendent",),
            "résoudre": ("je résous", "tu résous", "il résout", "elle résout",
                         "nous résolvons", "vous résolvez", "ils résolvent", "elles résolvent",),
            "rire": ("je ris", "tu ris", "il rit", "elle rit",
                     "nous rions", "vous riez", "ils rient", "elles rient",),
            "savoir": ("je sais", "tu sais", "il sait", "elle sait",
                       "nous savons", "vous savez", "ils savent", "elles savent",),
            "sentir": ("je sens", "tu sens", "il sent", "elle sent",
                       "nous sentons", "vous sentez", "ils sentent", "elles sentent",),
            "servir": ("je sers", "tu sers", "il sert", "elle sert",
                       "nous servons", "vous servez", "ils servent", "elles servent",),
            "sortir": ("je sors", "tu sors", "il sort", "elle sort",
                       "nous sortons", "vous sortez", "ils sortent", "elles sortent",),
            "souffrir": ("je souffre", "tu souffres", "il souffre", "elle souffre",
                         "nous souffrons", "vous souffrez", "ils souffrent", "elles souffrent",),
            "suffire": ("je suffis", "tu suffis", "il suffit", "elle suffit",
                        "nous suffisons", "vous suffisez", "ils suffisent", "elles suffisent",),
            "suivre": ("je suis", "tu suis", "il suit", "elle suit",
                       "nous suivons", "vous suivez", "ils suivent", "elles suivent",),
            "tendre": ("je tends", "tu tends", "il tend", "elle tend",
                       "nous tendons", "vous tendez", "ils tendent", "elles tendent",),
            "tenir": ("je tiens", "tu tiens", "il tient", "elle tient",
                      "nous tenons", "vous tenez", "ils tiennent", "elles tiennent",),
            "tondre": ("je tonds", "tu tonds", "il tond", "elle tond",
                       "nous tondons", "vous tondez", "ils tondent", "elles tondent",),
            "tordre": ("je tords", "tu tords", "il tord", "elle tord",
                       "nous tordons", "vous tordez", "ils tordent", "elles tordent",),
            "traduire": ("je traduis", "tu traduis", "il traduit", "elle traduit",
                         "nous traduisons", "vous traduisez", "ils traduisent", "elles traduisent",),
            "valoir": ("je vaux", "tu vaux", "il vaut", "elle vaut",
                       "nous valons", "vous valez", "ils valent", "elles valent",),
            "vendre": ("je vends", "tu vends", "il vend", "elle vend",
                       "nous vendons", "vous vendez", "ils vendent", "elles vendent",),
            "venir": ("je viens", "tu viens", "il vient", "elle vient",
                      "nous venons", "vous venez", "ils viennent", "elles viennent",),
            "vivre": ("je vis", "tu vis", "il vit", "elle vit",
                      "nous vivons", "vous vivez", "ils vivent", "elles vivent",),
            "voir": ("je vois", "tu vois", "il voit", "elle voit",
                     "nous voyons", "vous voyez", "ils voient", "elles voient",),
            "vouloir": ("je veux", "tu veux", "il veut", "elle veut",
                        "nous voulons", "vous voulez", "ils veulent", "elles veulent",),
        }

        for root, ans_tuple in answer.items():
            for i, ans in enumerate(ans_tuple):
                test_ans = conjug(root, "présent", "indicatif", i)
                self.assertEqual(ans, test_ans)
            test_ans_tuple = conjug_all(root, "présent", "indicatif")
            self.assertTupleEqual(ans_tuple, test_ans_tuple)

    def test_passe_compose_indicatif(self):
        answer = {
            "aimer": ("j'ai aimé", "tu as aimé", "il a aimé", "elle a aimé",
                      "nous avons aimé", "vous avez aimé", "ils ont aimé", "elles ont aimé"),
            "manger": ("j'ai mangé", "tu as mangé", "il a mangé", "elle a mangé",
                       "nous avons mangé", "vous avez mangé", "ils ont mangé", "elles ont mangé"),
            "partager": ("j'ai partagé", "tu as partagé", "il a partagé", "elle a partagé",
                         "nous avons partagé", "vous avez partagé", "ils ont partagé", "elles ont partagé"),
            "habiter": ("j'ai habité", "tu as habité", "il a habité", "elle a habité",
                        "nous avons habité", "vous avez habité", "ils ont habité", "elles ont habité"),
            "habiller": ("j'ai habillé", "tu as habillé", "il a habillé", "elle a habillé",
                         "nous avons habillé", "vous avez habillé", "ils ont habillé", "elles ont habillé"),
            "appeler": ("j'ai appelé", "tu as appelé", "il a appelé", "elle a appelé",
                        "nous avons appelé", "vous avez appelé", "ils ont appelé", "elles ont appelé"),
            "jeter": ("j'ai jeté", "tu as jeté", "il a jeté", "elle a jeté",
                      "nous avons jeté", "vous avez jeté", "ils ont jeté", "elles ont jeté"),
            "acheter": ("j'ai acheté", "tu as acheté", "il a acheté", "elle a acheté",
                        "nous avons acheté", "vous avez acheté", "ils ont acheté", "elles ont acheté"),
            "préférer": ("j'ai préféré", "tu as préféré", "il a préféré", "elle a préféré",
                         "nous avons préféré", "vous avez préféré", "ils ont préféré", "elles ont préféré"),
            "espérer": ("j'ai espéré", "tu as espéré", "il a espéré", "elle a espéré",
                        "nous avons espéré", "vous avez espéré", "ils ont espéré", "elles ont espéré"),
            "atterrir": ("j'ai atterri", "tu as atterri", "il a atterri", "elle a atterri",
                         "nous avons atterri", "vous avez atterri", "ils ont atterri", "elles ont atterri"),
            "choisir": ("j'ai choisi", "tu as choisi", "il a choisi", "elle a choisi",
                        "nous avons choisi", "vous avez choisi", "ils ont choisi", "elles ont choisi"),
            "réunir": ("j'ai réuni", "tu as réuni", "il a réuni", "elle a réuni",
                       "nous avons réuni", "vous avez réuni", "ils ont réuni", "elles ont réuni"),
            "sertir": ("j'ai serti", "tu as serti", "il a serti", "elle a serti",
                       "nous avons serti", "vous avez serti", "ils ont serti", "elles ont serti"),
            "se coucher": ("je me suis couché(e)", "tu t'es couché(e)",
                           "il s'est couché", "elle s'est couchée",
                           "nous nous sommes couché(e)s", "vous vous êtes couché(e)s",
                           "ils se sont couchés", "elles se sont couchées"),
            "se passer": ("je me suis passé(e)", "tu t'es passé(e)",
                          "il s'est passé", "elle s'est passée",
                          "nous nous sommes passé(e)s", "vous vous êtes passé(e)s",
                          "ils se sont passés", "elles se sont passées"),
            "s'habiller": ("je me suis habillé(e)", "tu t'es habillé(e)",
                           "il s'est habillé", "elle s'est habillée",
                           "nous nous sommes habillé(e)s", "vous vous êtes habillé(e)s",
                           "ils se sont habillés", "elles se sont habillées"),
            "s'asseoir": ("je me suis assis(e)", "tu t'es assis(e)",
                          "il s'est assis", "elle s'est assise",
                          "nous nous sommes assis(es)", "vous vous êtes assis(es)",
                          "ils se sont assis", "elles se sont assises"),
            "aller": ("je suis allé(e)", "tu es allé(e)", "il est allé", "elle est allée",
                      "nous sommes allé(e)s", "vous êtes allé(e)s", "ils sont allés", "elles sont allées"),
            "apercevoir": ("j'ai aperçu", "tu as aperçu", "il a aperçu", "elle a aperçu",
                           "nous avons aperçu", "vous avez aperçu", "ils ont aperçu", "elles ont aperçu"),
            "apprendre": ("j'ai appris", "tu as appris", "il a appris", "elle a appris",
                          "nous avons appris", "vous avez appris", "ils ont appris", "elles ont appris"),
            "atteindre": ("j'ai atteint", "tu as atteint", "il a atteint", "elle a atteint",
                          "nous avons atteint", "vous avez atteint", "ils ont atteint", "elles ont atteint"),
            "attendre": ("j'ai attendu", "tu as attendu", "il a attendu", "elle a attendu",
                         "nous avons attendu", "vous avez attendu", "ils ont attendu", "elles ont attendu"),
            "avoir": ("j'ai eu", "tu as eu", "il a eu", "elle a eu",
                      "nous avons eu", "vous avez eu", "ils ont eu", "elles ont eu"),
            "boire": ("j'ai bu", "tu as bu", "il a bu", "elle a bu",
                      "nous avons bu", "vous avez bu", "ils ont bu", "elles ont bu"),
            "bouillir": ("j'ai bouilli", "tu as bouilli", "il a bouilli", "elle a bouilli",
                         "nous avons bouilli", "vous avez bouilli", "ils ont bouilli", "elles ont bouilli"),
            "comprendre": ("j'ai compris", "tu as compris", "il a compris", "elle a compris",
                           "nous avons compris", "vous avez compris", "ils ont compris", "elles ont compris"),
            "conduire": ("j'ai conduit", "tu as conduit", "il a conduit", "elle a conduit",
                         "nous avons conduit", "vous avez conduit", "ils ont conduit", "elles ont conduit"),
            "connaître": ("j'ai connu", "tu as connu", "il a connu", "elle a connu",
                          "nous avons connu", "vous avez connu", "ils ont connu", "elles ont connu"),
            "courir": ("j'ai couru", "tu as couru", "il a couru", "elle a couru",
                       "nous avons couru", "vous avez couru", "ils ont couru", "elles ont couru"),
            "couvrir": ("j'ai couvert", "tu as couvert", "il a couvert", "elle a couvert",
                        "nous avons couvert", "vous avez couvert", "ils ont couvert", "elles ont couvert"),
            "croire": ("j'ai cru", "tu as cru", "il a cru", "elle a cru",
                       "nous avons cru", "vous avez cru", "ils ont cru", "elles ont cru"),
            "cueillir": ("j'ai cueilli", "tu as cueilli", "il a cueilli", "elle a cueilli",
                         "nous avons cueilli", "vous avez cueilli", "ils ont cueilli", "elles ont cueilli"),
            "cuire": ("j'ai cuit", "tu as cuit", "il a cuit", "elle a cuit",
                      "nous avons cuit", "vous avez cuit", "ils ont cuit", "elles ont cuit",),
            "décevoir": ("j'ai déçu", "tu as déçu", "il a déçu", "elle a déçu",
                         "nous avons déçu", "vous avez déçu", "ils ont déçu", "elles ont déçu",),
            "découvrir": ("j'ai découvert", "tu as découvert", "il a découvert", "elle a découvert",
                          "nous avons découvert", "vous avez découvert", "ils ont découvert", "elles ont découvert"),
            "déduire": ("j'ai déduit", "tu as déduit", "il a déduit", "elle a déduit",
                        "nous avons déduit", "vous avez déduit", "ils ont déduit", "elles ont déduit"),
            "descendre": ("je suis descendu(e)", "tu es descendu(e)", "il est descendu", "elle est descendue",
                          "nous sommes descendu(e)s", "vous êtes descendu(e)s", "ils sont descendus",
                          "elles sont descendues",),
            "détendre": ("j'ai détendu", "tu as détendu", "il a détendu", "elle a détendu",
                         "nous avons détendu", "vous avez détendu", "ils ont détendu", "elles ont détendu",),
            "devenir": ("je suis devenu(e)", "tu es devenu(e)", "il est devenu", "elle est devenue",
                        "nous sommes devenu(e)s", "vous êtes devenu(e)s", "ils sont devenus", "elles sont devenues",),
            "devoir": ("j'ai dû", "tu as dû", "il a dû", "elle a dû",
                       "nous avons dû", "vous avez dû", "ils ont dû", "elles ont dû",),
            "dire": ("j'ai dit", "tu as dit", "il a dit", "elle a dit",
                     "nous avons dit", "vous avez dit", "ils ont dit", "elles ont dit"),
            "disparaître": ("j'ai disparu", "tu as disparu",
                            "il a disparu", "elle a disparu",
                            "nous avons disparu", "vous avez disparu",
                            "ils ont disparu", "elles ont disparu",),
            "dormir": ("j'ai dormi", "tu as dormi", "il a dormi", "elle a dormi",
                       "nous avons dormi", "vous avez dormi", "ils ont dormi", "elles ont dormi",),
            "écrire": ("j'ai écrit", "tu as écrit", "il a écrit", "elle a écrit",
                       "nous avons écrit", "vous avez écrit", "ils ont écrit", "elles ont écrit",),
            "enduire": ("j'ai enduit", "tu as enduit", "il a enduit", "elle a enduit",
                        "nous avons enduit", "vous avez enduit", "ils ont enduit", "elles ont enduit",),
            "entendre": ("j'ai entendu", "tu as entendu", "il a entendu", "elle a entendu",
                         "nous avons entendu", "vous avez entendu", "ils ont entendu", "elles ont entendu",),
            "être": ("j'ai été", "tu as été", "il a été", "elle a été",
                     "nous avons été", "vous avez été", "ils ont été", "elles ont été",),
            "faire": ("j'ai fait", "tu as fait", "il a fait", "elle a fait",
                      "nous avons fait", "vous avez fait", "ils ont fait", "elles ont fait",),
            "falloir": ("", "", "il a fallu", "", "", "", "", ""),
            "frire": ("j'ai frit", "tu as frit", "il a frit", "", "", "", "", ""),
            "inscrire": ("j'ai inscrit", "tu as inscrit", "il a inscrit", "elle a inscrit",
                         "nous avons inscrit", "vous avez inscrit", "ils ont inscrit", "elles ont inscrit",),
            "s'inscrire": ("je me suis inscrit(e)", "tu t'es inscrit(e)",
                           "il s'est inscrit", "elle s'est inscrite",
                           "nous nous sommes inscrit(e)s", "vous vous êtes inscrit(e)s",
                           "ils se sont inscrits", "elles se sont inscrites",),
            "joindre": ("j'ai joint", "tu as joint", "il a joint", "elle a joint",
                        "nous avons joint", "vous avez joint", "ils ont joint", "elles ont joint",),
            "lire": ("j'ai lu", "tu as lu", "il a lu", "elle a lu",
                     "nous avons lu", "vous avez lu", "ils ont lu", "elles ont lu",),
            "mettre": ("j'ai mis", "tu as mis", "il a mis", "elle a mis",
                       "nous avons mis", "vous avez mis", "ils ont mis", "elles ont mis",),
            "mourir": ("je suis mort(e)", "tu es mort(e)", "il est mort", "elle est morte",
                       "nous sommes mort(e)s", "vous êtes mort(e)s", "ils sont morts", "elles sont mortes",),
            "naître": ("je suis né(e)", "tu es né(e)", "il est né", "elle est née",
                       "nous sommes né(e)s", "vous êtes né(e)s", "ils sont nés", "elles sont nées",),
            "obtenir": ("j'ai obtenu", "tu as obtenu", "il a obtenu", "elle a obtenu",
                        "nous avons obtenu", "vous avez obtenu", "ils ont obtenu", "elles ont obtenu",),
            "offrir": ("j'ai offert", "tu as offert", "il a offert", "elle a offert",
                       "nous avons offert", "vous avez offert", "ils ont offert", "elles ont offert",),
            "ouvrir": ("j'ai ouvert", "tu as ouvert", "il a ouvert", "elle a ouvert",
                       "nous avons ouvert", "vous avez ouvert", "ils ont ouvert", "elles ont ouvert",),
            "partir": ("je suis parti(e)", "tu es parti(e)", "il est parti", "elle est partie",
                       "nous sommes parti(e)s", "vous êtes parti(e)s", "ils sont partis", "elles sont parties",),
            "peindre": ("j'ai peint", "tu as peint", "il a peint", "elle a peint",
                        "nous avons peint", "vous avez peint", "ils ont peint", "elles ont peint",),
            "pendre": ("j'ai pendu", "tu as pendu", "il a pendu", "elle a pendu",
                       "nous avons pendu", "vous avez pendu", "ils ont pendu", "elles ont pendu",),
            "percevoir": ("j'ai perçu", "tu as perçu", "il a perçu", "elle a perçu",
                          "nous avons perçu", "vous avez perçu", "ils ont perçu", "elles ont perçu",),
            "perdre": ("j'ai perdu", "tu as perdu", "il a perdu", "elle a perdu",
                       "nous avons perdu", "vous avez perdu", "ils ont perdu", "elles ont perdu",),
            "permettre": ("j'ai permis", "tu as permis", "il a permis", "elle a permis",
                          "nous avons permis", "vous avez permis", "ils ont permis", "elles ont permis",),
            "pleuvoir": ("", "", "il a plu", "", "", "", "", ""),
            "pourvoir": ("j'ai pourvu", "tu as pourvu", "il a pourvu", "elle a pourvu",
                         "nous avons pourvu", "vous avez pourvu", "ils ont pourvu", "elles ont pourvu",),
            "pouvoir": ("j'ai pu", "tu as pu", "il a pu", "elle a pu",
                        "nous avons pu", "vous avez pu", "ils ont pu", "elles ont pu",),
            "prendre": ("j'ai pris", "tu as pris", "il a pris", "elle a pris",
                        "nous avons pris", "vous avez pris", "ils ont pris", "elles ont pris",),
            "prescrire": ("j'ai prescrit", "tu as prescrit", "il a prescrit", "elle a prescrit",
                          "nous avons prescrit", "vous avez prescrit", "ils ont prescrit", "elles ont prescrit",),
            "prétendre": ("j'ai prétendu", "tu as prétendu", "il a prétendu", "elle a prétendu",
                          "nous avons prétendu", "vous avez prétendu", "ils ont prétendu", "elles ont prétendu",),
            "produire": ("j'ai produit", "tu as produit", "il a produit", "elle a produit",
                         "nous avons produit", "vous avez produit", "ils ont produit", "elles ont produit",),
            "recevoir": ("j'ai reçu", "tu as reçu", "il a reçu", "elle a reçu",
                         "nous avons reçu", "vous avez reçu", "ils ont reçu", "elles ont reçu",),
            "réduire": ("j'ai réduit", "tu as réduit", "il a réduit", "elle a réduit",
                        "nous avons réduit", "vous avez réduit", "ils ont réduit", "elles ont réduit",),
            "rejoindre": ("j'ai rejoint", "tu as rejoint", "il a rejoint", "elle a rejoint",
                          "nous avons rejoint", "vous avez rejoint", "ils ont rejoint", "elles ont rejoint",),
            "rendre": ("j'ai rendu", "tu as rendu", "il a rendu", "elle a rendu",
                       "nous avons rendu", "vous avez rendu", "ils ont rendu", "elles ont rendu",),
            "résoudre": ("j'ai résolu", "tu as résolu", "il a résolu", "elle a résolu",
                         "nous avons résolu", "vous avez résolu", "ils ont résolu", "elles ont résolu",),
            "rire": ("j'ai ri", "tu as ri", "il a ri", "elle a ri",
                     "nous avons ri", "vous avez ri", "ils ont ri", "elles ont ri",),
            "savoir": ("j'ai su", "tu as su", "il a su", "elle a su",
                       "nous avons su", "vous avez su", "ils ont su", "elles ont su",),
            "sentir": ("j'ai senti", "tu as senti", "il a senti", "elle a senti",
                       "nous avons senti", "vous avez senti", "ils ont senti", "elles ont senti",),
            "servir": ("j'ai servi", "tu as servi", "il a servi", "elle a servi",
                       "nous avons servi", "vous avez servi", "ils ont servi", "elles ont servi",),
            "sortir": ("je suis sorti(e)", "tu es sorti(e)", "il est sorti", "elle est sortie",
                       "nous sommes sorti(e)s", "vous êtes sorti(e)s", "ils sont sortis", "elles sont sorties",),
            "souffrir": ("j'ai souffert", "tu as souffert", "il a souffert", "elle a souffert",
                         "nous avons souffert", "vous avez souffert", "ils ont souffert", "elles ont souffert",),
            "suffire": ("j'ai suffi", "tu as suffi", "il a suffi", "elle a suffi",
                        "nous avons suffi", "vous avez suffi", "ils ont suffi", "elles ont suffi",),
            "suivre": ("j'ai suivi", "tu as suivi", "il a suivi", "elle a suivi",
                       "nous avons suivi", "vous avez suivi", "ils ont suivi", "elles ont suivi",),
            "tendre": ("j'ai tendu", "tu as tendu", "il a tendu", "elle a tendu",
                       "nous avons tendu", "vous avez tendu", "ils ont tendu", "elles ont tendu",),
            "tenir": ("j'ai tenu", "tu as tenu", "il a tenu", "elle a tenu",
                      "nous avons tenu", "vous avez tenu", "ils ont tenu", "elles ont tenu",),
            "tondre": ("j'ai tondu", "tu as tondu", "il a tondu", "elle a tondu",
                       "nous avons tondu", "vous avez tondu", "ils ont tondu", "elles ont tondu",),
            "tordre": ("j'ai tordu", "tu as tordu", "il a tordu", "elle a tordu",
                       "nous avons tordu", "vous avez tordu", "ils ont tordu", "elles ont tordu",),
            "traduire": ("j'ai traduit", "tu as traduit", "il a traduit", "elle a traduit",
                         "nous avons traduit", "vous avez traduit", "ils ont traduit", "elles ont traduit",),
            "valoir": ("j'ai valu", "tu as valu", "il a valu", "elle a valu",
                       "nous avons valu", "vous avez valu", "ils ont valu", "elles ont valu",),
            "vendre": ("j'ai vendu", "tu as vendu", "il a vendu", "elle a vendu",
                       "nous avons vendu", "vous avez vendu", "ils ont vendu", "elles ont vendu",),
            "venir": ("je suis venu(e)", "tu es venu(e)", "il est venu", "elle est venue",
                      "nous sommes venu(e)s", "vous êtes venu(e)s", "ils sont venus", "elles sont venues",),
            "vivre": ("j'ai vécu", "tu as vécu", "il a vécu", "elle a vécu",
                      "nous avons vécu", "vous avez vécu", "ils ont vécu", "elles ont vécu",),
            "voir": ("j'ai vu", "tu as vu", "il a vu", "elle a vu",
                     "nous avons vu", "vous avez vu", "ils ont vu", "elles ont vu",),
            "vouloir": ("j'ai voulu", "tu as voulu", "il a voulu", "elle a voulu",
                        "nous avons voulu", "vous avez voulu", "ils ont voulu", "elles ont voulu",),
        }
        for root, ans_tuple in answer.items():
            for i, ans in enumerate(ans_tuple):
                test_ans = conjug(root, "passé composé", "indicatif", i)
                self.assertEqual(ans, test_ans)
            test_ans_tuple = conjug_all(root, "passé composé", "indicatif")
            self.assertTupleEqual(ans_tuple, test_ans_tuple)

    def test_imparfait_indicatif(self):
        answer = {
            "aimer": ("j'aimais", "tu aimais", "il aimait", "elle aimait",
                      "nous aimions", "vous aimiez", "ils aimaient", "elles aimaient"),
            "manger": ("je mangeais", "tu mangeais", "il mangeait", "elle mangeait",
                       "nous mangions", "vous mangiez", "ils mangeaient", "elles mangeaient"),
            "partager": ("je partageais", "tu partageais", "il partageait", "elle partageait",
                         "nous partagions", "vous partagiez", "ils partageaient", "elles partageaient"),
            "habiter": ("j'habitais", "tu habitais", "il habitait", "elle habitait",
                        "nous habitions", "vous habitiez", "ils habitaient", "elles habitaient"),
            "habiller": ("j'habillais", "tu habillais", "il habillait", "elle habillait",
                         "nous habillions", "vous habilliez", "ils habillaient", "elles habillaient"),
            "appeler": ("j'appelais", "tu appelais", "il appelait", "elle appelait",
                        "nous appelions", "vous appeliez", "ils appelaient", "elles appelaient"),
            "jeter": ("je jetais", "tu jetais", "il jetait", "elle jetait",
                      "nous jetions", "vous jetiez", "ils jetaient", "elles jetaient"),
            "acheter": ("j'achetais", "tu achetais", "il achetait", "elle achetait",
                        "nous achetions", "vous achetiez", "ils achetaient", "elles achetaient"),
            "préférer": ("je préférais", "tu préférais", "il préférait", "elle préférait",
                         "nous préférions", "vous préfériez", "ils préféraient", "elles préféraient"),
            "espérer": ("j'espérais", "tu espérais", "il espérait", "elle espérait",
                        "nous espérions", "vous espériez", "ils espéraient", "elles espéraient"),
            "atterrir": ("j'atterrissais", "tu atterrissais", "il atterrissait", "elle atterrissait",
                         "nous atterrissions", "vous atterrissiez", "ils atterrissaient", "elles atterrissaient"),
            "choisir": ("je choisissais", "tu choisissais", "il choisissait", "elle choisissait",
                        "nous choisissions", "vous choisissiez", "ils choisissaient", "elles choisissaient"),
            "réunir": ("je réunissais", "tu réunissais", "il réunissait", "elle réunissait",
                       "nous réunissions", "vous réunissiez", "ils réunissaient", "elles réunissaient"),
            "sertir": ("je sertissais", "tu sertissais", "il sertissait", "elle sertissait",
                       "nous sertissions", "vous sertissiez", "ils sertissaient", "elles sertissaient"),
            "se coucher": ("je me couchais", "tu te couchais", "il se couchait", "elle se couchait",
                           "nous nous couchions", "vous vous couchiez", "ils se couchaient", "elles se couchaient"),
            "se passer": ("je me passais", "tu te passais", "il se passait", "elle se passait",
                          "nous nous passions", "vous vous passiez", "ils se passaient", "elles se passaient"),
            "s'habiller": ("je m'habillais", "tu t'habillais", "il s'habillait", "elle s'habillait",
                           "nous nous habillions", "vous vous habilliez", "ils s'habillaient", "elles s'habillaient"),
            "s'asseoir": ("je m'asseyais", "tu t'asseyais", "il s'asseyait", "elle s'asseyait",
                          "nous nous asseyions", "vous vous asseyiez", "ils s'asseyaient", "elles s'asseyaient"),
            "aller": ("j'allais", "tu allais", "il allait", "elle allait",
                      "nous allions", "vous alliez", "ils allaient", "elles allaient"),
            "apercevoir": ("j'apercevais", "tu apercevais", "il apercevait", "elle apercevait",
                           "nous apercevions", "vous aperceviez", "ils apercevaient", "elles apercevaient"),
            "apprendre": ("j'apprenais", "tu apprenais", "il apprenait", "elle apprenait",
                          "nous apprenions", "vous appreniez", "ils apprenaient", "elles apprenaient"),
            "atteindre": ("j'atteignais", "tu atteignais", "il atteignait", "elle atteignait",
                          "nous atteignions", "vous atteigniez", "ils atteignaient", "elles atteignaient"),
            "attendre": ("j'attendais", "tu attendais", "il attendait", "elle attendait",
                         "nous attendions", "vous attendiez", "ils attendaient", "elles attendaient"),
            "avoir": ("j'avais", "tu avais", "il avait", "elle avait",
                      "nous avions", "vous aviez", "ils avaient", "elles avaient"),
            "boire": ("je buvais", "tu buvais", "il buvait", "elle buvait",
                      "nous buvions", "vous buviez", "ils buvaient", "elles buvaient"),
            "bouillir": ("je bouillais", "tu bouillais", "il bouillait", "elle bouillait",
                         "nous bouillions", "vous bouilliez", "ils bouillaient", "elles bouillaient"),
            "comprendre": ("je comprenais", "tu comprenais", "il comprenait", "elle comprenait",
                           "nous comprenions", "vous compreniez", "ils comprenaient", "elles comprenaient"),
            "conduire": ("je conduisais", "tu conduisais", "il conduisait", "elle conduisait",
                         "nous conduisions", "vous conduisiez", "ils conduisaient", "elles conduisaient"),
            "connaître": ("je connaissais", "tu connaissais", "il connaissait", "elle connaissait",
                          "nous connaissions", "vous connaissiez", "ils connaissaient", "elles connaissaient"),
            "courir": ("je courais", "tu courais", "il courait", "elle courait",
                       "nous courions", "vous couriez", "ils couraient", "elles couraient"),
            "couvrir": ("je couvrais", "tu couvrais", "il couvrait", "elle couvrait",
                        "nous couvrions", "vous couvriez", "ils couvraient", "elles couvraient"),
            "croire": ("je croyais", "tu croyais", "il croyait", "elle croyait",
                       "nous croyions", "vous croyiez", "ils croyaient", "elles croyaient"),
            "cueillir": ("je cueillais", "tu cueillais", "il cueillait", "elle cueillait",
                         "nous cueillions", "vous cueilliez", "ils cueillaient", "elles cueillaient"),
            "cuire": ("je cuisais", "tu cuisais", "il cuisait", "elle cuisait",
                      "nous cuisions", "vous cuisiez", "ils cuisaient", "elles cuisaient",),
            "décevoir": ("je décevais", "tu décevais", "il décevait", "elle décevait",
                         "nous décevions", "vous déceviez", "ils décevaient", "elles décevaient",),
            "découvrir": ("je découvrais", "tu découvrais", "il découvrait", "elle découvrait",
                          "nous découvrions", "vous découvriez", "ils découvraient", "elles découvraient"),
            "déduire": ("je déduisais", "tu déduisais", "il déduisait", "elle déduisait",
                        "nous déduisions", "vous déduisiez", "ils déduisaient", "elles déduisaient",),
            "descendre": ("je descendais", "tu descendais", "il descendait", "elle descendait",
                          "nous descendions", "vous descendiez", "ils descendaient", "elles descendaient",),
            "détendre": ("je détendais", "tu détendais", "il détendait", "elle détendait",
                         "nous détendions", "vous détendiez", "ils détendaient", "elles détendaient",),
            "devenir": ("je devenais", "tu devenais", "il devenait", "elle devenait",
                        "nous devenions", "vous deveniez", "ils devenaient", "elles devenaient",),
            "devoir": ("je devais", "tu devais", "il devait", "elle devait",
                       "nous devions", "vous deviez", "ils devaient", "elles devaient",),
            "dire": ("je disais", "tu disais", "il disait", "elle disait",
                     "nous disions", "vous disiez", "ils disaient", "elles disaient",),
            "disparaître": ("je disparaissais", "tu disparaissais",
                            "il disparaissait", "elle disparaissait",
                            "nous disparaissions", "vous disparaissiez",
                            "ils disparaissaient", "elles disparaissaient",),
            "dormir": ("je dormais", "tu dormais", "il dormait", "elle dormait",
                       "nous dormions", "vous dormiez", "ils dormaient", "elles dormaient",),
            "écrire": ("j'écrivais", "tu écrivais", "il écrivait", "elle écrivait",
                       "nous écrivions", "vous écriviez", "ils écrivaient", "elles écrivaient",),
            "enduire": ("j'enduisais", "tu enduisais", "il enduisait", "elle enduisait",
                        "nous enduisions", "vous enduisiez", "ils enduisaient", "elles enduisaient",),
            "entendre": ("j'entendais", "tu entendais", "il entendait", "elle entendait",
                         "nous entendions", "vous entendiez", "ils entendaient", "elles entendaient",),
            "être": ("j'étais", "tu étais", "il était", "elle était",
                     "nous étions", "vous étiez", "ils étaient", "elles étaient",),
            "faire": ("je faisais", "tu faisais", "il faisait", "elle faisait",
                      "nous faisions", "vous faisiez", "ils faisaient", "elles faisaient",),
            "falloir": ("", "", "il fallait", "", "", "", "", ""),
            "frire": ("", "", "", "", "", "", "", "",),
            "inscrire": ("j'inscrivais", "tu inscrivais", "il inscrivait", "elle inscrivait",
                         "nous inscrivions", "vous inscriviez", "ils inscrivaient", "elles inscrivaient",),
            "s'inscrire": ("je m'inscrivais", "tu t'inscrivais", "il s'inscrivait", "elle s'inscrivait",
                           "nous nous inscrivions", "vous vous inscriviez",
                           "ils s'inscrivaient", "elles s'inscrivaient",),
            "joindre": ("je joignais", "tu joignais", "il joignait", "elle joignait",
                        "nous joignions", "vous joigniez", "ils joignaient", "elles joignaient",),
            "lire": ("je lisais", "tu lisais", "il lisait", "elle lisait",
                     "nous lisions", "vous lisiez", "ils lisaient", "elles lisaient",),
            "mettre": ("je mettais", "tu mettais", "il mettait", "elle mettait",
                       "nous mettions", "vous mettiez", "ils mettaient", "elles mettaient",),
            "mourir": ("je mourais", "tu mourais", "il mourait", "elle mourait",
                       "nous mourions", "vous mouriez", "ils mouraient", "elles mouraient",),
            "naître": ("je naissais", "tu naissais", "il naissait", "elle naissait",
                       "nous naissions", "vous naissiez", "ils naissaient", "elles naissaient",),
            "obtenir": ("j'obtenais", "tu obtenais", "il obtenait", "elle obtenait",
                        "nous obtenions", "vous obteniez", "ils obtenaient", "elles obtenaient",),
            "offrir": ("j'offrais", "tu offrais", "il offrait", "elle offrait",
                       "nous offrions", "vous offriez", "ils offraient", "elles offraient",),
            "ouvrir": ("j'ouvrais", "tu ouvrais", "il ouvrait", "elle ouvrait",
                       "nous ouvrions", "vous ouvriez", "ils ouvraient", "elles ouvraient",),
            "partir": ("je partais", "tu partais", "il partait", "elle partait",
                       "nous partions", "vous partiez", "ils partaient", "elles partaient",),
            "peindre": ("je peignais", "tu peignais", "il peignait", "elle peignait",
                        "nous peignions", "vous peigniez", "ils peignaient", "elles peignaient",),
            "pendre": ("je pendais", "tu pendais", "il pendait", "elle pendait",
                       "nous pendions", "vous pendiez", "ils pendaient", "elles pendaient",),
            "percevoir": ("je percevais", "tu percevais", "il percevait", "elle percevait",
                          "nous percevions", "vous perceviez", "ils percevaient", "elles percevaient",),
            "perdre": ("je perdais", "tu perdais", "il perdait", "elle perdait",
                       "nous perdions", "vous perdiez", "ils perdaient", "elles perdaient",),
            "permettre": ("je permettais", "tu permettais", "il permettait", "elle permettait",
                          "nous permettions", "vous permettiez", "ils permettaient", "elles permettaient",),
            "pleuvoir": ("", "", "il pleuvait", "", "", "", "", ""),
            "pourvoir": ("je pourvoyais", "tu pourvoyais", "il pourvoyait", "elle pourvoyait",
                         "nous pourvoyions", "vous pourvoyiez", "ils pourvoyaient", "elles pourvoyaient",),
            "pouvoir": ("je pouvais", "tu pouvais", "il pouvait", "elle pouvait",
                        "nous pouvions", "vous pouviez", "ils pouvaient", "elles pouvaient",),
            "prendre": ("je prenais", "tu prenais", "il prenait", "elle prenait",
                        "nous prenions", "vous preniez", "ils prenaient", "elles prenaient",),
            "prescrire": ("je prescrivais", "tu prescrivais", "il prescrivait", "elle prescrivait",
                          "nous prescrivions", "vous prescriviez", "ils prescrivaient", "elles prescrivaient",),
            "prétendre": ("je prétendais", "tu prétendais", "il prétendait", "elle prétendait",
                          "nous prétendions", "vous prétendiez", "ils prétendaient", "elles prétendaient",),
            "produire": ("je produisais", "tu produisais", "il produisait", "elle produisait",
                         "nous produisions", "vous produisiez", "ils produisaient", "elles produisaient",),
            "recevoir": ("je recevais", "tu recevais", "il recevait", "elle recevait",
                         "nous recevions", "vous receviez", "ils recevaient", "elles recevaient",),
            "réduire": ("je réduisais", "tu réduisais", "il réduisait", "elle réduisait",
                        "nous réduisions", "vous réduisiez", "ils réduisaient", "elles réduisaient",),
            "rejoindre": ("je rejoignais", "tu rejoignais", "il rejoignait", "elle rejoignait",
                          "nous rejoignions", "vous rejoigniez", "ils rejoignaient", "elles rejoignaient",),
            "rendre": ("je rendais", "tu rendais", "il rendait", "elle rendait",
                       "nous rendions", "vous rendiez", "ils rendaient", "elles rendaient",),
            "résoudre": ("je résolvais", "tu résolvais", "il résolvait", "elle résolvait",
                         "nous résolvions", "vous résolviez", "ils résolvaient", "elles résolvaient",),
            "rire": ("je riais", "tu riais", "il riait", "elle riait",
                     "nous riions", "vous riiez", "ils riaient", "elles riaient",),
            "savoir": ("je savais", "tu savais", "il savait", "elle savait",
                       "nous savions", "vous saviez", "ils savaient", "elles savaient",),
            "sentir": ("je sentais", "tu sentais", "il sentait", "elle sentait",
                       "nous sentions", "vous sentiez", "ils sentaient", "elles sentaient",),
            "servir": ("je servais", "tu servais", "il servait", "elle servait",
                       "nous servions", "vous serviez", "ils servaient", "elles servaient",),
            "sortir": ("je sortais", "tu sortais", "il sortait", "elle sortait",
                       "nous sortions", "vous sortiez", "ils sortaient", "elles sortaient",),
            "souffrir": ("je souffrais", "tu souffrais", "il souffrait", "elle souffrait",
                         "nous souffrions", "vous souffriez", "ils souffraient", "elles souffraient",),
            "suffire": ("je suffisais", "tu suffisais", "il suffisait", "elle suffisait",
                        "nous suffisions", "vous suffisiez", "ils suffisaient", "elles suffisaient",),
            "suivre": ("je suivais", "tu suivais", "il suivait", "elle suivait",
                       "nous suivions", "vous suiviez", "ils suivaient", "elles suivaient",),
            "tendre": ("je tendais", "tu tendais", "il tendait", "elle tendait",
                       "nous tendions", "vous tendiez", "ils tendaient", "elles tendaient",),
            "tenir": ("je tenais", "tu tenais", "il tenait", "elle tenait",
                      "nous tenions", "vous teniez", "ils tenaient", "elles tenaient",),
            "tondre": ("je tondais", "tu tondais", "il tondait", "elle tondait",
                       "nous tondions", "vous tondiez", "ils tondaient", "elles tondaient",),
            "tordre": ("je tordais", "tu tordais", "il tordait", "elle tordait",
                       "nous tordions", "vous tordiez", "ils tordaient", "elles tordaient",),
            "traduire": ("je traduisais", "tu traduisais", "il traduisait", "elle traduisait",
                         "nous traduisions", "vous traduisiez", "ils traduisaient", "elles traduisaient",),
            "valoir": ("je valais", "tu valais", "il valait", "elle valait",
                       "nous valions", "vous valiez", "ils valaient", "elles valaient",),
            "vendre": ("je vendais", "tu vendais", "il vendait", "elle vendait",
                       "nous vendions", "vous vendiez", "ils vendaient", "elles vendaient",),
            "venir": ("je venais", "tu venais", "il venait", "elle venait",
                      "nous venions", "vous veniez", "ils venaient", "elles venaient",),
            "vivre": ("je vivais", "tu vivais", "il vivait", "elle vivait",
                      "nous vivions", "vous viviez", "ils vivaient", "elles vivaient",),
            "voir": ("je voyais", "tu voyais", "il voyait", "elle voyait",
                     "nous voyions", "vous voyiez", "ils voyaient", "elles voyaient",),
            "vouloir": ("je voulais", "tu voulais", "il voulait", "elle voulait",
                        "nous voulions", "vous vouliez", "ils voulaient", "elles voulaient",),
        }
        for root, ans_tuple in answer.items():
            for i, ans in enumerate(ans_tuple):
                test_ans = conjug(root, "imparfait", "indicatif", i)
                self.assertEqual(ans, test_ans)
            test_ans_tuple = conjug_all(root, "imparfait", "indicatif")
            self.assertTupleEqual(ans_tuple, test_ans_tuple)

    def test_future_indicatif(self):
        answer = {
            "aimer": ("j'aimerai", "tu aimeras", "il aimera", "elle aimera",
                      "nous aimerons", "vous aimerez", "ils aimeront", "elles aimeront"),
            "manger": ("je mangerai", "tu mangeras", "il mangera", "elle mangera",
                       "nous mangerons", "vous mangerez", "ils mangeront", "elles mangeront"),
            "partager": ("je partagerai", "tu partageras", "il partagera", "elle partagera",
                         "nous partagerons", "vous partagerez", "ils partageront", "elles partageront"),
            "habiter": ("j'habiterai", "tu habiteras", "il habitera", "elle habitera",
                        "nous habiterons", "vous habiterez", "ils habiteront", "elles habiteront"),
            "habiller": ("j'habillerai", "tu habilleras", "il habillera", "elle habillera",
                         "nous habillerons", "vous habillerez", "ils habilleront", "elles habilleront"),
            "appeler": ("j'appellerai", "tu appelleras", "il appellera", "elle appellera",
                        "nous appellerons", "vous appellerez", "ils appelleront", "elles appelleront"),
            "jeter": ("je jetterai", "tu jetteras", "il jettera", "elle jettera",
                      "nous jetterons", "vous jetterez", "ils jetteront", "elles jetteront"),
            "acheter": ("j'achèterai", "tu achèteras", "il achètera", "elle achètera",
                        "nous achèterons", "vous achèterez", "ils achèteront", "elles achèteront"),
            "appuyer": ("j'appuierai", "tu appuieras", "il appuiera", "elle appuiera",
                        "nous appuierons", "vous appuierez", "ils appuieront", "elles appuieront"),
            "préférer": ("je préférerai", "tu préféreras", "il préférera", "elle préférera",
                         "nous préférerons", "vous préférerez", "ils préféreront", "elles préféreront"),
            "espérer": ("j'espérerai", "tu espéreras", "il espérera", "elle espérera",
                        "nous espérerons", "vous espérerez", "ils espéreront", "elles espéreront"),
            "atterrir": ("j'atterrirai", "tu atterriras", "il atterrira", "elle atterrira",
                         "nous atterrirons", "vous atterrirez", "ils atterriront", "elles atterriront"),
            "choisir": ("je choisirai", "tu choisiras", "il choisira", "elle choisira",
                        "nous choisirons", "vous choisirez", "ils choisiront", "elles choisiront"),
            "réunir": ("je réunirai", "tu réuniras", "il réunira", "elle réunira",
                       "nous réunirons", "vous réunirez", "ils réuniront", "elles réuniront"),
            "sertir": ("je sertirai", "tu sertiras", "il sertira", "elle sertira",
                       "nous sertirons", "vous sertirez", "ils sertiront", "elles sertiront"),
            "se coucher": ("je me coucherai", "tu te coucheras", "il se couchera", "elle se couchera",
                           "nous nous coucherons", "vous vous coucherez", "ils se coucheront", "elles se coucheront"),
            "se passer": ("je me passerai", "tu te passeras", "il se passera", "elle se passera",
                          "nous nous passerons", "vous vous passerez", "ils se passeront", "elles se passeront",),
            "s'habiller": ("je m'habillerai", "tu t'habilleras", "il s'habillera", "elle s'habillera",
                           "nous nous habillerons", "vous vous habillerez", "ils s'habilleront", "elles s'habilleront"),
            "s'asseoir": ("je m'asseyerai", "tu t'asseyeras", "il s'asseyera", "elle s'asseyera",
                          "nous nous asseyerons", "vous vous asseyerez", "ils s'asseyeront", "elles s'asseyeront"),
            "aller": ("j'irai", "tu iras", "il ira", "elle ira",
                      "nous irons", "vous irez", "ils iront", "elles iront"),
            "apercevoir": ("j'apercevrai", "tu apercevras", "il apercevra", "elle apercevra",
                           "nous apercevrons", "vous apercevrez", "ils apercevront", "elles apercevront"),
            "apprendre": ("j'apprendrai", "tu apprendras", "il apprendra", "elle apprendra",
                          "nous apprendrons", "vous apprendrez", "ils apprendront", "elles apprendront"),
            "atteindre": ("j'atteindrai", "tu atteindras", "il atteindra", "elle atteindra",
                          "nous atteindrons", "vous atteindrez", "ils atteindront", "elles atteindront"),
            "attendre": ("j'attendrai", "tu attendras", "il attendra", "elle attendra",
                         "nous attendrons", "vous attendrez", "ils attendront", "elles attendront"),
            "avoir": ("j'aurai", "tu auras", "il aura", "elle aura",
                      "nous aurons", "vous aurez", "ils auront", "elles auront"),
            "boire": ("je boirai", "tu boiras", "il boira", "elle boira",
                      "nous boirons", "vous boirez", "ils boiront", "elles boiront"),
            "bouillir": ("je bouillirai", "tu bouilliras", "il bouillira", "elle bouillira",
                         "nous bouillirons", "vous bouillirez", "ils bouilliront", "elles bouilliront"),
            "comprendre": ("je comprendrai", "tu comprendras", "il comprendra", "elle comprendra",
                           "nous comprendrons", "vous comprendrez", "ils comprendront", "elles comprendront"),
            "conduire": ("je conduirai", "tu conduiras", "il conduira", "elle conduira",
                         "nous conduirons", "vous conduirez", "ils conduiront", "elles conduiront"),
            "connaître": ("je connaîtrai", "tu connaîtras", "il connaîtra", "elle connaîtra",
                          "nous connaîtrons", "vous connaîtrez", "ils connaîtront", "elles connaîtront"),
            "convaincre": ("je convaincrai", "tu convaincras", "il convaincra", "elle convaincra",
                           "nous convaincrons", "vous convaincrez", "ils convaincront", "elles convaincront"),
            "courir": ("je courrai", "tu courras", "il courra", "elle courra",
                       "nous courrons", "vous courrez", "ils courront", "elles courront"),
            "couvrir": ("je couvrirai", "tu couvriras", "il couvrira", "elle couvrira",
                        "nous couvrirons", "vous couvrirez", "ils couvriront", "elles couvriront"),
            "croire": ("je croirai", "tu croiras", "il croira", "elle croira",
                       "nous croirons", "vous croirez", "ils croiront", "elles croiront"),
            "cueillir": ("je cueillerai", "tu cueilleras", "il cueillera", "elle cueillera",
                         "nous cueillerons", "vous cueillerez", "ils cueilleront", "elles cueilleront"),
            "cuire": ("je cuirai", "tu cuiras", "il cuira", "elle cuira",
                      "nous cuirons", "vous cuirez", "ils cuiront", "elles cuiront",),
            "décevoir": ("je décevrai", "tu décevras", "il décevra", "elle décevra",
                         "nous décevrons", "vous décevrez", "ils décevront", "elles décevront",),
            "découvrir": ("je découvrirai", "tu découvriras", "il découvrira", "elle découvrira",
                          "nous découvrirons", "vous découvrirez", "ils découvriront", "elles découvriront"),
            "déduire": ("je déduirai", "tu déduiras", "il déduira", "elle déduira",
                        "nous déduirons", "vous déduirez", "ils déduiront", "elles déduiront",),
            "descendre": ("je descendrai", "tu descendras", "il descendra", "elle descendra",
                          "nous descendrons", "vous descendrez", "ils descendront", "elles descendront",),
            "détendre": ("je détendrai", "tu détendras", "il détendra", "elle détendra",
                         "nous détendrons", "vous détendrez", "ils détendront", "elles détendront",),
            "devenir": ("je deviendrai", "tu deviendras", "il deviendra", "elle deviendra",
                        "nous deviendrons", "vous deviendrez", "ils deviendront", "elles deviendront",),
            "devoir": ("je devrai", "tu devras", "il devra", "elle devra",
                       "nous devrons", "vous devrez", "ils devront", "elles devront",),
            "dire": ("je dirai", "tu diras", "il dira", "elle dira",
                     "nous dirons", "vous direz", "ils diront", "elles diront",),
            "disparaître": ("je disparaîtrai", "tu disparaîtras",
                            "il disparaîtra", "elle disparaîtra",
                            "nous disparaîtrons", "vous disparaîtrez",
                            "ils disparaîtront", "elles disparaîtront",),
            "dormir": ("je dormirai", "tu dormiras", "il dormira", "elle dormira",
                       "nous dormirons", "vous dormirez", "ils dormiront", "elles dormiront",),
            "écrire": ("j'écrirai", "tu écriras", "il écrira", "elle écrira",
                       "nous écrirons", "vous écrirez", "ils écriront", "elles écriront",),
            "enduire": ("j'enduirai", "tu enduiras", "il enduira", "elle enduira",
                        "nous enduirons", "vous enduirez", "ils enduiront", "elles enduiront",),
            "entendre": ("j'entendrai", "tu entendras", "il entendra", "elle entendra",
                         "nous entendrons", "vous entendrez", "ils entendront", "elles entendront",),
            "être": ("je serai", "tu seras", "il sera", "elle sera",
                     "nous serons", "vous serez", "ils seront", "elles seront",),
            "faire": ("je ferai", "tu feras", "il fera", "elle fera",
                      "nous ferons", "vous ferez", "ils feront", "elles feront",),
            "falloir": ("", "", "il faudra", "", "", "", "", ""),
            "frire": ("je frirai", "tu friras", "il frira", "", "", "", "", ""),
            "s'inscrire": ("je m'inscrirai", "tu t'inscriras",
                           "il s'inscrira", "elle s'inscrira",
                           "nous nous inscrirons", "vous vous inscrirez",
                           "ils s'inscriront", "elles s'inscriront",),
            "inscrire": ("j'inscrirai", "tu inscriras", "il inscrira", "elle inscrira",
                         "nous inscrirons", "vous inscrirez", "ils inscriront", "elles inscriront",),
            "joindre": ("je joindrai", "tu joindras", "il joindra", "elle joindra",
                        "nous joindrons", "vous joindrez", "ils joindront", "elles joindront",),
            "lire": ("je lirai", "tu liras", "il lira", "elle lira",
                     "nous lirons", "vous lirez", "ils liront", "elles liront",),
            "mettre": ("je mettrai", "tu mettras", "il mettra", "elle mettra",
                       "nous mettrons", "vous mettrez", "ils mettront", "elles mettront",),
            "mourir": ("je mourrai", "tu mourras", "il mourra", "elle mourra",
                       "nous mourrons", "vous mourrez", "ils mourront", "elles mourront",),
            "naître": ("je naîtrai", "tu naîtras", "il naîtra", "elle naîtra",
                       "nous naîtrons", "vous naîtrez", "ils naîtront", "elles naîtront",),
            "obtenir": ("j'obtiendrai", "tu obtiendras", "il obtiendra", "elle obtiendra",
                        "nous obtiendrons", "vous obtiendrez", "ils obtiendront", "elles obtiendront",),
            "offrir": ("j'offrirai", "tu offriras", "il offrira", "elle offrira",
                       "nous offrirons", "vous offrirez", "ils offriront", "elles offriront",),
            "ouvrir": ("j'ouvrirai", "tu ouvriras", "il ouvrira", "elle ouvrira",
                       "nous ouvrirons", "vous ouvrirez", "ils ouvriront", "elles ouvriront",),
            "partir": ("je partirai", "tu partiras", "il partira", "elle partira",
                       "nous partirons", "vous partirez", "ils partiront", "elles partiront",),
            "peindre": ("je peindrai", "tu peindras", "il peindra", "elle peindra",
                        "nous peindrons", "vous peindrez", "ils peindront", "elles peindront",),
            "pendre": ("je pendrai", "tu pendras", "il pendra", "elle pendra",
                       "nous pendrons", "vous pendrez", "ils pendront", "elles pendront",),
            "percevoir": ("je percevrai", "tu percevras", "il percevra", "elle percevra",
                          "nous percevrons", "vous percevrez", "ils percevront", "elles percevront",),
            "perdre": ("je perdrai", "tu perdras", "il perdra", "elle perdra",
                       "nous perdrons", "vous perdrez", "ils perdront", "elles perdront",),
            "permettre": ("je permettrai", "tu permettras", "il permettra", "elle permettra",
                          "nous permettrons", "vous permettrez", "ils permettront", "elles permettront",),
            "pleuvoir": ("", "", "il pleuvra", "", "", "", "", ""),
            "pourvoir": ("je pourvoirai", "tu pourvoiras", "il pourvoira", "elle pourvoira",
                         "nous pourvoirons", "vous pourvoirez", "ils pourvoiront", "elles pourvoiront",),
            "pouvoir": ("je pourrai", "tu pourras", "il pourra", "elle pourra",
                        "nous pourrons", "vous pourrez", "ils pourront", "elles pourront",),
            "prendre": ("je prendrai", "tu prendras", "il prendra", "elle prendra",
                        "nous prendrons", "vous prendrez", "ils prendront", "elles prendront",),
            "prescrire": ("je prescrirai", "tu prescriras", "il prescrira", "elle prescrira",
                          "nous prescrirons", "vous prescrirez", "ils prescriront", "elles prescriront",),
            "prétendre": ("je prétendrai", "tu prétendras", "il prétendra", "elle prétendra",
                          "nous prétendrons", "vous prétendrez", "ils prétendront", "elles prétendront",),
            "produire": ("je produirai", "tu produiras", "il produira", "elle produira",
                         "nous produirons", "vous produirez", "ils produiront", "elles produiront",),
            "recevoir": ("je recevrai", "tu recevras", "il recevra", "elle recevra",
                         "nous recevrons", "vous recevrez", "ils recevront", "elles recevront",),
            "réduire": ("je réduirai", "tu réduiras", "il réduira", "elle réduira",
                        "nous réduirons", "vous réduirez", "ils réduiront", "elles réduiront",),
            "rejoindre": ("je rejoindrai", "tu rejoindras", "il rejoindra", "elle rejoindra",
                          "nous rejoindrons", "vous rejoindrez", "ils rejoindront", "elles rejoindront",),
            "rendre": ("je rendrai", "tu rendras", "il rendra", "elle rendra",
                       "nous rendrons", "vous rendrez", "ils rendront", "elles rendront",),
            "résoudre": ("je résoudrai", "tu résoudras", "il résoudra", "elle résoudra",
                         "nous résoudrons", "vous résoudrez", "ils résoudront", "elles résoudront",),
            "rire": ("je rirai", "tu riras", "il rira", "elle rira",
                     "nous rirons", "vous rirez", "ils riront", "elles riront",),
            "savoir": ("je saurai", "tu sauras", "il saura", "elle saura",
                       "nous saurons", "vous saurez", "ils sauront", "elles sauront",),
            "sentir": ("je sentirai", "tu sentiras", "il sentira", "elle sentira",
                       "nous sentirons", "vous sentirez", "ils sentiront", "elles sentiront",),
            "servir": ("je servirai", "tu serviras", "il servira", "elle servira",
                       "nous servirons", "vous servirez", "ils serviront", "elles serviront",),
            "sortir": ("je sortirai", "tu sortiras", "il sortira", "elle sortira",
                       "nous sortirons", "vous sortirez", "ils sortiront", "elles sortiront",),
            "souffrir": ("je souffrirai", "tu souffriras", "il souffrira", "elle souffrira",
                         "nous souffrirons", "vous souffrirez", "ils souffriront", "elles souffriront",),
            "suffire": ("je suffirai", "tu suffiras", "il suffira", "elle suffira",
                        "nous suffirons", "vous suffirez", "ils suffiront", "elles suffiront",),
            "suivre": ("je suivrai", "tu suivras", "il suivra", "elle suivra",
                       "nous suivrons", "vous suivrez", "ils suivront", "elles suivront",),
            "tendre": ("je tendrai", "tu tendras", "il tendra", "elle tendra",
                       "nous tendrons", "vous tendrez", "ils tendront", "elles tendront",),
            "tenir": ("je tiendrai", "tu tiendras", "il tiendra", "elle tiendra",
                      "nous tiendrons", "vous tiendrez", "ils tiendront", "elles tiendront",),
            "tondre": ("je tondrai", "tu tondras", "il tondra", "elle tondra",
                       "nous tondrons", "vous tondrez", "ils tondront", "elles tondront",),
            "tordre": ("je tordrai", "tu tordras", "il tordra", "elle tordra",
                       "nous tordrons", "vous tordrez", "ils tordront", "elles tordront",),
            "traduire": ("je traduirai", "tu traduiras", "il traduira", "elle traduira",
                         "nous traduirons", "vous traduirez", "ils traduiront", "elles traduiront",),
            "valoir": ("je vaudrai", "tu vaudras", "il vaudra", "elle vaudra",
                       "nous vaudrons", "vous vaudrez", "ils vaudront", "elles vaudront",),
            "vendre": ("je vendrai", "tu vendras", "il vendra", "elle vendra",
                       "nous vendrons", "vous vendrez", "ils vendront", "elles vendront",),
            "venir": ("je viendrai", "tu viendras", "il viendra", "elle viendra",
                      "nous viendrons", "vous viendrez", "ils viendront", "elles viendront",),
            "vivre": ("je vivrai", "tu vivras", "il vivra", "elle vivra",
                      "nous vivrons", "vous vivrez", "ils vivront", "elles vivront",),
            "voir": ("je verrai", "tu verras", "il verra", "elle verra",
                     "nous verrons", "vous verrez", "ils verront", "elles verront",),
            "vouloir": ("je voudrai", "tu voudras", "il voudra", "elle voudra",
                        "nous voudrons", "vous voudrez", "ils voudront", "elles voudront",),
        }
        for root, ans_tuple in answer.items():
            for i, ans in enumerate(ans_tuple):
                test_ans = conjug(root, "futur", "indicatif", i)
                self.assertEqual(ans, test_ans)
            test_ans_tuple = conjug_all(root, "futur", "indicatif")
            self.assertTupleEqual(ans_tuple, test_ans_tuple)

    def test_present_conditionnel(self):

        answer = {
            "aimer": ("j'aimerais", "tu aimerais", "il aimerait", "elle aimerait",
                      "nous aimerions", "vous aimeriez", "ils aimeraient", "elles aimeraient"),
            "manger": ("je mangerais", "tu mangerais", "il mangerait", "elle mangerait",
                       "nous mangerions", "vous mangeriez", "ils mangeraient", "elles mangeraient"),
            "choisir": ("je choisirais", "tu choisirais", "il choisirait", "elle choisirait",
                        "nous choisirions", "vous choisiriez", "ils choisiraient", "elles choisiraient"),
            "convaincre": ("je convaincrais", "tu convaincrais", "il convaincrait", "elle convaincrait",
                           "nous convaincrions", "vous convaincriez", "ils convaincraient", "elles convaincraient"),
            "appuyer": ("j'appuierais","tu appuierais","il appuierait","elle appuierait",
                        "nous appuierions", "vous appuieriez", "ils appuieraient", "elles appuieraient"),
            "aller": ("j'irais", "tu irais", "il irait", "elle irait",
                      "nous irions", "vous iriez", "ils iraient", "elles iraient"),
            "avoir": ("j'aurais", "tu aurais", "il aurait", "elle aurait",
                      "nous aurions", "vous auriez", "ils auraient", "elles auraient"),
            "être": ("je serais", "tu serais", "il serait", "elle serait",
                     "nous serions", "vous seriez", "ils seraient", "elles seraient",),
            "faire": ("je ferais", "tu ferais", "il ferait", "elle ferait",
                      "nous ferions", "vous feriez", "ils feraient", "elles feraient",),
            "falloir": ("", "", "il faudrait", "", "", "", "", ""),
            "frire": ("je frirais", "tu frirais", "il frirait", "", "", "", "", ""),
            "pleuvoir": ("", "", "il pleuvrait", "", "", "", "", ""),
            "pouvoir": ("je pourrais", "tu pourrais", "il pourrait", "elle pourrait",
                        "nous pourrions", "vous pourriez", "ils pourraient", "elles pourraient",),
            "vouloir": ("je voudrais", "tu voudrais", "il voudrait", "elle voudrait",
                        "nous voudrions", "vous voudriez", "ils voudraient", "elles voudraient",),
        }
        for root, ans_tuple in answer.items():
            for i, ans in enumerate(ans_tuple):
                test_ans = conjug(root, "présent", "conditionnel", i)
                self.assertEqual(ans, test_ans)
            test_ans_tuple = conjug_all(root, "présent", "conditionnel")
            self.assertTupleEqual(ans_tuple, test_ans_tuple)

    def test_present_imperatif(self):

        answer = {
            "aimer": ("", "aime", "", "", "aimons", "aimez", "", ""),
            "manger": ("", "mange", "", "", "mangeons", "mangez", "", ""),
            "partager": ("", "partage", "", "", "partageons", "partagez", "", ""),
            "se coucher": ("", "couche-toi", "", "", "couchons-nous", "couchez-vous", "", ""),
            "se passer": ("", "passe-toi", "", "", "passons-nous", "passez-vous", "", ""),
            "s'habiller": ("", "habille-toi", "", "", "habillons-nous", "habillez-vous", "", ""),
            "aller": ("", "va", "", "", "allons", "allez", "", ""),
            "avoir": ("", "aie", "", "", "ayons", "ayez", "", ""),
            "convaincre": ("", "convaincs", "", "", "convainquons", "convainquez", "", ""),
            "courir": ("", "cours", "", "", "courons", "courez", "", ""),
            "couvrir": ("", "couvre", "", "", "couvrons", "couvrez", "", ""),
            "croire": ("", "crois", "", "", "croyons", "croyez", "", ""),
            "dire": ("", "dis", "", "", "disons", "dites", "", "",),
            "dormir": ("", "dors", "", "", "dormons", "dormez", "", "",),
            "être": ("", "sois", "", "", "soyons", "soyez", "", "",),
            "faire": ("", "fais", "", "", "faisons", "faites", "", "",),
            "offrir": ("", "offre", "", "", "offrons", "offrez", "", "",),
            "ouvrir": ("", "ouvre", "", "", "ouvrons", "ouvrez", "", "",),
            "pouvoir": ("", "", "", "", "", "", "", "",),
            "savoir": ("", "sache", "", "", "sachons", "sachez", "", "",),
            "vouloir": ("", "veuille", "", "", "veuillons", "veuillez", "", "",),
            "falloir": ("", "", "", "", "", "", "", "",),
            "pleuvoir": ("", "", "", "", "", "", "", "",),
        }
        for root, ans_tuple in answer.items():
            for i, ans in enumerate(ans_tuple):
                test_ans = conjug(root, "présent", "impératif", i)
                self.assertEqual(ans, test_ans)
            test_ans_tuple = conjug_all(root, "présent", "impératif")
            self.assertTupleEqual(ans_tuple, test_ans_tuple)

if __name__ == '__main__':
    unittest.main()


n = int(input())

arr = [1] * n
temp = 0
for i in range(1,n):
    arr[i] = arr[i-1] + i
    if arr[i] > n:
        temp = i
        break
# print(temp)
# print(arr)
adj = []
for i in range(1,temp+1):
    if i % 2 == 0:
        adj.append([1, i])
    else:
        adj.append([i, 1])
# print(adj)

k = n - arr[temp-1]
# print(k)
if temp % 2 == 0:
    x, y = adj[temp-1]
    x += k
    y -= k
    x = str(x)
    y = str(y)
    print(x + '/' + y)
else:
    x, y = adj[temp - 1]
    x -= k
    y += k
    x = str(x)
    y = str(y)
    print(x + '/' + y)

백준/단계별로 풀어보기/1193. 분수찾기.py


import requests
from lxml import etree
if __name__ == '__main__':
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
    }
    url = 'https://anqiu.58.com/ershoufang/'
    page_text = requests.get(url = url,headers = headers).text
    with open('58.txt','w',encoding='utf-8') as fp:
        fp.write(page_text)


from collections import namedtuple
import numpy as np

Experience = namedtuple('Experience', 'state action reward new_state game_over')

'''
A more efficient implementation of replay memory
to optimize for space.

This implementation of ReplayMemory was inspired by the following
sources:
 - devsisters/DQN-tensorflow: https://github.com/devsisters/DQN-tensorflow
 - Deepmind's implementation: https://github.com/deepmind/dqn
'''
class ReplayMemory:
	def __init__(self, replay_capacity, hist_len):
		# Initialize replay memory to capacity replay_capacity
		self.replay_capacity = replay_capacity
		self.hist_len = hist_len
		self.s = np.empty((replay_capacity, 84, 84), dtype=np.uint8)
		self.a = np.empty(replay_capacity, dtype=np.uint8)
		self.r = np.empty(replay_capacity)
		self.terminals = np.empty(replay_capacity, dtype=np.bool)
		self.episode_time = np.empty(replay_capacity, dtype=np.uint8)
		self.size = 0
		self.insertLoc = 0

	def add_item(self, frame, action, reward, episode_done, episode_timestep):
		# input a_t, r_t, f_t+1, episode done at t+1
		self.s[self.insertLoc, ...] = frame
		self.a[self.insertLoc] = action
		self.r[self.insertLoc] = reward
		self.terminals[self.insertLoc] = episode_done
		self.episode_time[self.insertLoc] = episode_timestep
		self.size = max(self.size, self.insertLoc + 1)
		self.insertLoc = (self.insertLoc + 1) % self.replay_capacity

	'''
	Assumes indices chosen properly
	'''
	def get_state(self, index):
		index = index % self.size
		if index >= self.hist_len - 1:
			return self.s[(index - (self.hist_len - 1)):(index + 1),...]
		else:
			return self.s[[(index - i) % self.size for i in reversed(range(hist_len))],...]

	def sample_minibatch(self, minibatch_size, random_state):
		indices = []
		while len(indices) < minibatch_size:
			rnd_index = random_state.randint(self.hist_len, self.size - 1)
			# check if there's buffer wraparound
			if rnd_index >= self.insertLoc and rnd_index - self.hist_len < self.insertLoc:
				continue
			# skip sequences that overlap with episode ends...
			if self.terminals[(rnd_index - self.hist_len):rnd_index].any():
				continue
			# Skip sequences where a new episode starts (but not terminal)
			if not all(t < t2 for t, t2 in zip(self.episode_time[(rnd_index - self.hist_len):rnd_index],
										self.episode_time[(rnd_index - self.hist_len + 1):rnd_index])):
				continue
			indices.append(rnd_index)
		minibatch = [Experience(state=np.expand_dims(self.get_state(index - 1).astype(np.float32)/255.0, axis=0),
			action=self.a[index],
			reward=self.r[index],
			new_state=np.expand_dims(self.get_state(index).astype(np.float32)/255.0, axis=0),
			game_over=self.terminals[index]) for index in indices]
		return minibatch

class State:
	def __init__(self, hist_len):
		# Initialize a 1 x hist_len x 84 x 84  state
		self.hist_len = hist_len
		self.state = np.zeros((1, hist_len, 84, 84), dtype=np.float32)
		'''
		index of next image, indicates that the first 84 x 84
		image should be at (0, 0)
		'''
		self.insertLoc = 0

	def add_frame(self, img):
		self.state[0, self.insertLoc, ...] = img.astype(np.float32)/255.0
		# The index to insert at cycles from betweem 0, 1, 2, 3
		self.insertLoc = (self.insertLoc + 1) % self.hist_len

	def get_state(self):
		'''
		return the stacked four frames in the correct order
		Example: Suppose the state contains the following frames:
		[f4 f1 f2 f3]. The return value should be [f1 f2 f3 f4].
		Since the most recent frame inserted in this example was
		f4 at index 0,  self.insertLoc equals 1. Thus, we
		"roll" the image a single space to the left, resulting in
		[f1 f2 f3 f4]
		'''
		return np.roll(self.state, 0 - self.insertLoc, axis=1)


import tkinter as tk

counter = 0 #counting every second
def counting(label: tk):
    def count():
        global counter
        counter += 1
        label.config(text=str(counter))
        label.after(1000, count)

    count()

root = tk.Tk()
root.title('Counting time (s)')
root.geometry('420x240')

label = tk.Label(root, fg='blue')
label.pack()

counting(label)

button = tk.Button(
    root,
    text='Stop',
    width=25,
    command=root.destroy
)
button.pack()

root.mainloop()


# -*- coding: utf-8 -*-
from environment import GraphicDisplay, Env

class Agent:
    def __init__(self, env):
        self.env = env
        # 2-d list for the value function
        self.value_table = [[0.0] * env.width for _ in range(env.height)]
        self.discount_factor = 0.9

    # get next value function table from the current value function table
    def update_value(self):
        next_value_table = [[0.0] * self.env.width
                                    for _ in range(self.env.height)]
        for state in self.env.get_all_states():
            if state == [2, 2]:
                next_value_table[state[0]][state[1]] = 0.0
                continue
            value_list = []

            # ------------------------- FROM HERE ----------------------------#
            # make value_list s --> s' by certain action a
            #
            print("Implemement : make value list!!!")

            # ------------------------- UNTIL HERE ---------------------------#

            # return the maximum value(it is the optimality equation!!)
            next_value_table[state[0]][state[1]] = round(max(value_list), 2)
        self.value_table = next_value_table

    # get action according to the current value function table
    def get_action(self, state):
        action_list = []
        max_value = -99999

        if state == [2, 2]:
            return []

        # calculating values for the all actions and
        # append the action to action list which has maximum q value
        # ------------------------- FROM HERE ----------------------------#
        # make action_list ( which is a list for possible next optimal action )

        print("Implemement : make action list!!!")

        # ------------------------- UNTIL HERE ---------------------------#
        return action_list

    def get_value(self, state):
        return round(self.value_table[state[0]][state[1]], 2)

if __name__ == "__main__":
    env = Env()
    agent = Agent(env)
    grid_world = GraphicDisplay(agent)
    grid_world.mainloop()


from http.server import BaseHTTPRequestHandler
import json
import debugserver

def capitalize(string, lower_rest=False):
  return string[:1].upper() + (string[1:].lower() if lower_rest else string[1:])

class handler(BaseHTTPRequestHandler):

    def do_GET(self):
      path = self.path
      print('path is ', path)

      self.send_response(200)
      self.send_header("Content-type", "application/json")
      self.end_headers()

      response = {"output": capitalize('diabolical')}
      self.wfile.write(json.dumps(response).encode("utf-8"))

      return

if __name__ == '__main__':
    debugserver.serve(handler)


#################################################################################
# Capstone Project - Career Study Advisor
# By: Kevin Elliott (ellkev004), Ryan Wong (wngrya001) and Zena Kelz (klzzen001)
# 21/07/2014 - 22/09/2014
# This document is for navigation throught the website
#################################################################################
from django.conf.urls import patterns, url

#Imports Career, Search, Home, Category, Category_Index, Institution_Career, Qualification,
#Institution_Index, Institution
from advisor import views

#Regex used to describe url patterns
# + -> 1 or many
# * -> 0 or many
# ? -> 0 or 1
# These symbols apply to the character immediately before which is why you need to use brackets
# for application to more than one character

urlpatterns = patterns('',
  url(r'^search/?$', views.search, name='search'),

  url(r'^career/(?P<career_name>\w+(\s+\w+)*)/liked/?$', views.unlike_career, name='unlike_career'),
  url(r'^career/(?P<career_name>\w+(\s+\w+)*)/like/?$', views.like_career, name='like_career'),
  url(r'^career/(?P<career_name>\w+(\s+\w+)*)/(?P<inst_name>\w[\w\s\(\)]*)/?$', views.institution_career, name='institution_career'),

  url(r'^career/(?P<career_name>\w+(\s+\w+)*)/?$', views.career, name='career'),
  url(r'^career/?$', views.career_index, name='career_index'),

  url(r'^institution/(?P<inst_name>\w[\w\s\(\)]*)/(?P<qualification_name>\w[\w\s\(\),&]*)/liked/?$', views.unlike_qualification, name='unlike_qualification'),
  url(r'^institution/(?P<inst_name>\w[\w\s\(\)]*)/(?P<qualification_name>\w[\w\s\(\),&]*)/like/?$', views.like_qualification, name='like_qualification'),

  url(r'^institution/(?P<inst_name>\w[\w\s\(\)]*)/(?P<qualification_name>\w[\w\s\(\),&]*)/?$', views.qualification, name='qualification'),
  url(r'^institution/(?P<institution_name>\w[\w\s\(\)]*)/?$', views.institution, name='institution'),
  url(r'^institution/?$', views.institution_index, name='institution_index'),
  url(r'^category/(?P<category_name>\w+(\s+\w+)*)/?$', views.category, name='category'),
  url(r'^category/?$', views.category_index, name='category_index'),
  url(r'^qualification/?$', views.qualification_index, name='qualification_index'),

  url(r'^recommend/?$', views.recommend_careers_and_qualifications, name ='recommend_careers_and_qualifications'),

  url(r'^accounts/login/?$', views.login, name ='login'),
  url(r'^accounts/auth/?$', views.auth_view, name ='auth_view'),
  url(r'^accounts/logout/?$', views.logout, name ='logout'),
  url(r'^accounts/loggedin/?$', views.loggedin, name = 'loggedin'),
  url(r'^accounts/register/?$', views.register_user, name = 'register_user'),

  url(r'^', views.home, name='home'),
)


# Волшебный шар. Напишите программу, которая моделирует волшебный шар, т. е.
# игрушку, предсказывающую будущее, которая дает случайный ответ на общий вопрос,
# требующий ответа "да" или "нет". Среди исходного кода главы 7, а также в подпапке
# data "Решений задач по программированию" соответствующей главы, вы найдете файл
# 8_ball_responses.txt. Этот файл содержит 12 ответов, в частности: "Не думаю", "Да, конечно!", "Не уверен" и т. д.
# Программа должна прочитать ответы из файла в список. Она должна предложить пользователю задать вопрос и
# затем показать один из ответов, отобранных из списка случайным образом. Программа должна продолжать работу до тех
# пор, пока пользователь не будет готов из нее выйти.

import random

answers_list = []

answers_list_file = open('8_ball_responses.txt', 'r', encoding='utf-8')

for item in answers_list_file:
    answers_list.append(item.rstrip('\n'))

answers_list_file.close()

answer = 'y'

while answer != 'n':
    question = input('Введите вопрос ')
    print(answers_list[random.randint(0, len(answers_list) - 1)])
    answer = input('Хотите продолжить? (y/n) ')


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from django.conf.urls import url

from . import views

app_name = 'proyecto'
urlpatterns = [
    # URL pattern for the UserListView
    url(
        regex=r'^$',
        view=views.ProyectoListView.as_view(),
        name='list'
    ),

    url(
        regex=r'^(?P<nombre>[\w.@+-]+)/$',
        view=views.ProyectoDetailView.as_view(),
        name='detail'
    ),

    url(
        regex=r'^(?P<nombre>[\w.@+-]+)/kanban/(?P<sprintId>[0-9]+)$',
        view=views.kanban,
        name='kanban'
    ),
    url(
        regex=r'^(?P<nombre>[\w.@+-]+)/tablero/(?P<sprintId>[0-9]+)$',
        view=views.tablero,
        name='tablero'
    ),

    # URL pattern for the UserUpdateView
    url(
        regex=r'^~update/$',
        view=views.ProyectoUpdateView.as_view(),
        name='update'
    ),
]


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/12/26 16:22
# @Author  : Aries
# @Site    :
# @File    : 4-6_principal_component_analyze.py
# @Software: PyCharm

#主成分分析 降维
import pandas as pd

#参数初始化
inputfile = 'principal_component.xls'
outputfile = 'dimention_reducted.xls' #降维后的数据

data = pd.read_excel(inputfile, header = None) #读入数据


import numpy as np
from scipy.optimize import curve_fit
def logistic_model(t,r,K):
    return K/(1+(K/p0-1)*np.exp(-r*t))
N=int(input().strip())
populations=list(map(int,input().strip().split()))
T=int(input().strip())
years_to_predict=[int(input().strip())for _ in range(T)]
p0=populations[0]
t=np.arange(0,N)
initial_guess=[0.03,400]
params, _ = curve_fit(logistic_model,t,populations,p0=initial_guess,maxfev=10000)
r,K=params
predictions=[]
for year in years_to_predict:
    prediction=logistic_model(year,r,K)
    predictions.append(prediction)
for pred in predictions:
    print(f"{pred:.2f}")

山东大学 数学模型 程序汇总/人口增长的logistic模型.py