docstr: Ensure lemmatization works well
docstr_tok: ["Ensure","lemmatization","works","well"]
code: def test_collatinus_decline(self):
      """Ensure lemmatization works well"""
      decliner = CollatinusDecliner()
  
      def sort_result(result):
          return {key: sorted(val) for key, val in result.items()}
  
          self.maxDiff = None
          self.assertEqual(
              decliner.decline("via", collatinus_dict=True),
              {
                  1: ["via"],
                  2: ["via"],
                  3: ["viam"],
                  4: ["viae"],
                  5: ["viae"],
                  6: ["via"],
                  7: ["viae"],
                  8: ["viae"],
                  9: ["vias"],
                  10: ["viarum"],
                  11: ["viis"],
                  12: ["viis"],
              },
              "Declination of via should be right",
          )
          self.assertEqual(
              decliner.decline("doctus", collatinus_dict=True),
              {
                  13: ["doctus"],
                  14: ["docte"],
                  15: ["doctum"],
                  16: ["docti"],
                  17: ["docto"],
                  18: ["docto"],
                  19: ["docti"],
                  20: ["docti"],
                  21: ["doctos"],
                  22: ["doctorum"],
                  23: ["doctis"],
                  24: ["doctis"],
                  25: ["docta"],
                  26: ["docta"],
                  27: ["doctam"],
                  28: ["doctae"],
                  29: ["doctae"],
                  30: ["docta"],
                  31: ["doctae"],
                  32: ["doctae"],
                  33: ["doctas"],
                  34: ["doctarum"],
                  35: ["doctis"],
                  36: ["doctis"],
                  37: ["doctum"],
                  38: ["doctum"],
                  39: ["doctum"],
                  40: ["docti"],
                  41: ["docto"],
                  42: ["docto"],
                  43: ["docta"],
                  44: ["docta"],
                  45: ["docta"],
                  46: ["doctorum"],
                  47: ["doctis"],
                  48: ["doctis"],
                  49: ["doctior"],
                  50: ["doctior"],
                  51: ["doctiorem"],
                  52: ["doctioris"],
                  53: ["doctiori"],
                  54: ["doctiore"],
                  55: ["doctiores"],
                  56: ["doctiores"],
                  57: ["doctiores"],
                  58: ["doctiorum"],
                  59: ["doctioribus"],
                  60: ["doctioribus"],
                  61: ["doctior"],
                  62: ["doctior"],
                  63: ["doctiorem"],
                  64: ["doctioris"],
                  65: ["doctiori"],
                  66: ["doctiore"],
                  67: ["doctiores"],
                  68: ["doctiores"],
                  69: ["doctiores"],
                  70: ["doctiorum"],
                  71: ["doctioribus"],
                  72: ["doctioribus"],
                  73: ["doctius"],
                  74: ["doctius"],
                  75: ["doctius"],
                  76: ["doctioris"],
                  77: ["doctiori"],
                  78: ["doctiore"],
                  79: ["doctiora"],
                  80: ["doctiora"],
                  81: ["doctiora"],
                  82: ["doctiorum"],
                  83: ["doctioribus"],
                  84: ["doctioribus"],
                  85: ["doctissimus"],
                  86: ["doctissime"],
                  87: ["doctissimum"],
                  88: ["doctissimi"],
                  89: ["doctissimo"],
                  90: ["doctissimo"],
                  91: ["doctissimi"],
                  92: ["doctissimi"],
                  93: ["doctissimos"],
                  94: ["doctissimorum"],
                  95: ["doctissimis"],
                  96: ["doctissimis"],
                  97: ["doctissima"],
                  98: ["doctissima"],
                  99: ["doctissimam"],
                  100: ["doctissimae"],
                  101: ["doctissimae"],
                  102: ["doctissima"],
                  103: ["doctissimae"],
                  104: ["doctissimae"],
                  105: ["doctissimas"],
                  106: ["doctissimarum"],
                  107: ["doctissimis"],
                  108: ["doctissimis"],
                  109: ["doctissimum"],
                  110: ["doctissimum"],
                  111: ["doctissimum"],
                  112: ["doctissimi"],
                  113: ["doctissimo"],
                  114: ["doctissimo"],
                  115: ["doctissima"],
                  116: ["doctissima"],
                  117: ["doctissima"],
                  118: ["doctissimorum"],
                  119: ["doctissimis"],
                  120: ["doctissimis"],
              },
              "Doctus has three radicals and lots of forms",
          )
          self.assertEqual(
              sort_result(
                  decliner.decline("verbex", collatinus_dict=True)
              ),
              {
                  1: ["berbex", "verbex", "vervex"],
                  2: ["berbex", "verbex", "vervex"],
                  3: ["berbecem", "verbecem", "vervecem"],
                  4: ["berbecis", "verbecis", "vervecis"],
                  5: ["berbeci", "verbeci", "verveci"],
                  6: ["berbece", "verbece", "vervece"],
                  7: ["berbeces", "verbeces", "verveces"],
                  8: ["berbeces", "verbeces", "verveces"],
                  9: ["berbeces", "verbeces", "verveces"],
                  10: ["berbecum", "verbecum", "vervecum"],
                  11: ["berbecibus", "verbecibus", "vervecibus"],
                  12: ["berbecibus", "verbecibus", "vervecibus"],
              },  # Missing 12 ?
              "Verbex has two different roots : checking they are taken into account",
          )
          self.assertEqual(
              sort_result(
                  decliner.decline("vendo", collatinus_dict=True)
              ),
              {
                  121: ["vendo"],
                  122: ["vendis"],
                  123: ["vendit"],
                  124: ["vendimus"],
                  125: ["venditis"],
                  126: ["vendunt"],
                  127: ["vendebam"],
                  128: ["vendebas"],
                  129: ["vendebat"],
                  130: ["vendebamus"],
                  131: ["vendebatis"],
                  132: ["vendebant"],
                  133: ["vendam"],
                  134: ["vendes"],
                  135: ["vendet"],
                  136: ["vendemus"],
                  137: ["vendetis"],
                  138: ["vendent"],
                  139: ["vendavi", "vendidi"],
                  140: ["vendavisti", "vendidisti"],
                  141: ["vendavit", "vendidit"],
                  142: ["vendavimus", "vendidimus"],
                  143: ["vendavistis", "vendidistis"],
                  144: [
                      "vendavere",
                      "vendaverunt",
                      "vendidere",
                      "vendiderunt",
                  ],
                  145: ["vendaveram", "vendideram"],
                  146: ["vendaveras", "vendideras"],
                  147: ["vendaverat", "vendiderat"],
                  148: ["vendaveramus", "vendideramus"],
                  149: ["vendaveratis", "vendideratis"],
                  150: ["vendaverant", "vendiderant"],
                  151: ["vendavero", "vendidero"],
                  152: ["vendaveris", "vendideris"],
                  153: ["vendaverit", "vendiderit"],
                  154: ["vendaverimus", "vendiderimus"],
                  155: ["vendaveritis", "vendideritis"],
                  156: ["vendaverint", "vendiderint"],
                  157: ["vendam"],
                  158: ["vendas"],
                  159: ["vendat"],
                  160: ["vendamus"],
                  161: ["vendatis"],
                  162: ["vendant"],
                  163: ["venderem"],
                  164: ["venderes"],
                  165: ["venderet"],
                  166: ["venderemus"],
                  167: ["venderetis"],
                  168: ["venderent"],
                  169: ["vendaverim", "vendiderim"],
                  170: ["vendaveris", "vendideris"],
                  171: ["vendaverit", "vendiderit"],
                  172: ["vendaverimus", "vendiderimus"],
                  173: ["vendaveritis", "vendideritis"],
                  174: ["vendaverint", "vendiderint"],
                  175: ["vendavissem", "vendidissem"],
                  176: ["vendavisses", "vendidisses"],
                  177: ["vendavisset", "vendidisset"],
                  178: ["vendavissemus", "vendidissemus"],
                  179: ["vendavissetis", "vendidissetis"],
                  180: ["vendavissent", "vendidissent"],
                  181: ["vende"],
                  182: ["vendite"],
                  183: ["vendito"],
                  184: ["vendito"],
                  185: ["venditote"],
                  186: ["vendunto"],
                  187: ["vendere"],
                  188: ["vendavisse", "vendidisse"],
                  189: ["vendens"],
                  190: ["vendens"],
                  191: ["vendentem"],
                  192: ["vendentis"],
                  193: ["vendenti"],
                  194: ["vendente"],
                  195: ["vendentes"],
                  196: ["vendentes"],
                  197: ["vendentes"],
                  198: ["vendentium", "vendentum"],
                  199: ["vendentibus"],
                  200: ["vendentibus"],
                  201: ["vendens"],
                  202: ["vendens"],
                  203: ["vendentem"],
                  204: ["vendentis"],
                  205: ["vendenti"],
                  206: ["vendente"],
                  207: ["vendentes"],
                  208: ["vendentes"],
                  209: ["vendentes"],
                  210: ["vendentium", "vendentum"],
                  211: ["vendentibus"],
                  212: ["vendentibus"],
                  213: ["vendens"],
                  214: ["vendens"],
                  215: ["vendens"],
                  216: ["vendentis"],
                  217: ["vendenti"],
                  218: ["vendente"],
                  219: ["vendentia"],
                  220: ["vendentia"],
                  221: ["vendentia"],
                  222: ["vendentium", "vendentum"],
                  223: ["vendentibus"],
                  224: ["vendentibus"],
                  225: ["vendaturus", "venditurus"],
                  226: ["vendature", "venditure"],
                  227: ["vendaturum", "venditurum"],
                  228: ["vendaturi", "vendituri"],
                  229: ["vendaturo", "vendituro"],
                  230: ["vendaturo", "vendituro"],
                  231: ["vendaturi", "vendituri"],
                  232: ["vendaturi", "vendituri"],
                  233: ["vendaturos", "vendituros"],
                  234: ["vendaturorum", "venditurorum"],
                  235: ["vendaturis", "vendituris"],
                  236: ["vendaturis", "vendituris"],
                  237: ["vendatura", "venditura"],
                  238: ["vendatura", "venditura"],
                  239: ["vendaturam", "vendituram"],
                  240: ["vendaturae", "venditurae"],
                  241: ["vendaturae", "venditurae"],
                  242: ["vendatura", "venditura"],
                  243: ["vendaturae", "venditurae"],
                  244: ["vendaturae", "venditurae"],
                  245: ["vendaturas", "vendituras"],
                  246: ["vendaturarum", "venditurarum"],
                  247: ["vendaturis", "vendituris"],
                  248: ["vendaturis", "vendituris"],
                  249: ["vendaturum", "venditurum"],
                  250: ["vendaturum", "venditurum"],
                  251: ["vendaturum", "venditurum"],
                  252: ["vendaturi", "vendituri"],
                  253: ["vendaturo", "vendituro"],
                  254: ["vendaturo", "vendituro"],
                  255: ["vendatura", "venditura"],
                  256: ["vendatura", "venditura"],
                  257: ["vendatura", "venditura"],
                  258: ["vendaturorum", "venditurorum"],
                  259: ["vendaturis", "vendituris"],
                  260: ["vendaturis", "vendituris"],
                  261: ["vendendum"],
                  262: ["vendendi"],
                  263: ["vendendo"],
                  264: ["vendendo"],
                  265: ["vendatum", "venditum"],
                  266: ["vendatu", "venditu"],
                  267: ["vendor"],
                  268: ["vendere", "venderis"],
                  269: ["venditur"],
                  270: ["vendimur"],
                  271: ["vendimini"],
                  272: ["venduntur"],
                  273: ["vendebar"],
                  274: ["vendebare", "vendebaris"],
                  275: ["vendebatur"],
                  276: ["vendebamur"],
                  277: ["vendebamini"],
                  278: ["vendebantur"],
                  279: ["vendar"],
                  280: ["vendere", "venderis"],
                  281: ["vendetur"],
                  282: ["vendemur"],
                  283: ["vendemini"],
                  284: ["vendentur"],
                  285: ["vendar"],
                  286: ["vendare", "vendaris"],
                  287: ["vendatur"],
                  288: ["vendamur"],
                  289: ["vendamini"],
                  290: ["vendantur"],
                  291: ["venderer"],
                  292: ["venderere", "vendereris"],
                  293: ["venderetur"],
                  294: ["venderemur"],
                  295: ["venderemini"],
                  296: ["venderentur"],
                  297: ["vendere"],
                  298: ["vendimini"],
                  299: ["venditor"],
                  300: ["venditor"],
                  301: ["venduntor"],
                  302: ["vendi"],
                  303: ["vendatus", "venditus"],
                  304: ["vendate", "vendite"],
                  305: ["vendatum", "venditum"],
                  306: ["vendati", "venditi"],
                  307: ["vendato", "vendito"],
                  308: ["vendato", "vendito"],
                  309: ["vendati", "venditi"],
                  310: ["vendati", "venditi"],
                  311: ["vendatos", "venditos"],
                  312: ["vendatorum", "venditorum"],
                  313: ["vendatis", "venditis"],
                  314: ["vendatis", "venditis"],
                  315: ["vendata", "vendita"],
                  316: ["vendata", "vendita"],
                  317: ["vendatam", "venditam"],
                  318: ["vendatae", "venditae"],
                  319: ["vendatae", "venditae"],
                  320: ["vendata", "vendita"],
                  321: ["vendatae", "venditae"],
                  322: ["vendatae", "venditae"],
                  323: ["vendatas", "venditas"],
                  324: ["vendatarum", "venditarum"],
                  325: ["vendatis", "venditis"],
                  326: ["vendatis", "venditis"],
                  327: ["vendatum", "venditum"],
                  328: ["vendatum", "venditum"],
                  329: ["vendatum", "venditum"],
                  330: ["vendati", "venditi"],
                  331: ["vendato", "vendito"],
                  332: ["vendato", "vendito"],
                  333: ["vendata", "vendita"],
                  334: ["vendata", "vendita"],
                  335: ["vendata", "vendita"],
                  336: ["vendatorum", "venditorum"],
                  337: ["vendatis", "venditis"],
                  338: ["vendatis", "venditis"],
                  339: ["vendendus"],
                  340: ["vendende"],
                  341: ["vendendum"],
                  342: ["vendendi"],
                  343: ["vendendo"],
                  344: ["vendendo"],
                  345: ["vendendi"],
                  346: ["vendendi"],
                  347: ["vendendos"],
                  348: ["vendendorum"],
                  349: ["vendendis"],
                  350: ["vendendis"],
                  351: ["vendenda"],
                  352: ["vendenda"],
                  353: ["vendendam"],
                  354: ["vendendae"],
                  355: ["vendendae"],
                  356: ["vendenda"],
                  357: ["vendendae"],
                  358: ["vendendae"],
                  359: ["vendendas"],
                  360: ["vendendarum"],
                  361: ["vendendis"],
                  362: ["vendendis"],
                  363: ["vendendum"],
                  364: ["vendendum"],
                  365: ["vendendum"],
                  366: ["vendendi"],
                  367: ["vendendo"],
                  368: ["vendendo"],
                  369: ["vendenda"],
                  370: ["vendenda"],
                  371: ["vendenda"],
                  372: ["vendendorum"],
                  373: ["vendendis"],
                  374: ["vendendis"],
              },
              "Check verb vendo declines well",
          )
          self.assertEqual(
              decliner.decline("poesis", collatinus_dict=True),
              {
                  1: ["poesis"],
                  2: ["poesis"],
                  3: ["poesem", "poesin", "poesim"],
                  4: ["poesis", "poeseos"],
                  5: ["poesi"],
                  6: ["poese"],
                  7: ["poeses"],
                  8: ["poeses"],
                  9: ["poeses", "poesis"],
                  10: ["poesium"],
                  11: ["poesibus"],
                  12: ["poesibus"],
              },
              "Duplicity of forms should be accepted",
          )
  
          self.assertEqual(
              sort_result(
                  decliner.decline("hic", collatinus_dict=True)
              ),
              {
                  13: ["hic", "hice", "hicine"],
                  15: ["hunc"],
                  16: ["hujus", "hujusce"],
                  17: ["huic"],
                  18: ["hoc", "hocine"],
                  19: ["hi"],
                  21: ["hos", "hosce"],
                  22: ["horum"],
                  23: ["his", "hisce"],
                  24: ["his", "hisce"],
                  25: ["haec", "haeccine", "haece", "haecine"],
                  27: ["hanc"],
                  28: ["hujus", "hujusce"],
                  29: ["huic"],
                  30: ["hac"],
                  31: ["hae"],
                  33: ["has", "hasce"],
                  34: ["harum"],
                  35: ["his", "hisce"],
                  36: ["his", "hisce"],
                  37: ["hoc", "hocine"],
                  39: ["hoc", "hocine"],
                  40: ["hujus", "hujusce"],
                  41: ["huic"],
                  42: ["hoc", "hocine"],
                  43: ["haec", "haeccine", "haecine"],
                  45: ["haec", "haeccine", "haecine"],
                  46: ["horum"],
                  47: ["his", "hisce"],
                  48: ["his", "hisce"],
              },
              "Check that suffixes are well added",
          )
          self.assertEqual(
              sort_result(
                  decliner.decline("quicumque", collatinus_dict=True)
              ),
              {
                  13: ["quicumque", "quicunque"],
                  15: ["quemcumque", "quemcunque"],
                  16: [
                      "cujuscumque",
                      "cujuscunque",
                      "quojuscumque",
                      "quojuscunque",
                  ],
                  17: [
                      "cuicumque",
                      "cuicunque",
                      "quoicumque",
                      "quoicunque",
                  ],
                  18: ["quocumque", "quocunque"],
                  19: ["quicumque", "quicunque"],
                  21: ["quoscumque", "quoscunque"],
                  22: ["quorumcumque", "quorumcunque"],
                  23: ["quibuscumque", "quibuscunque"],
                  24: ["quibuscumque", "quibuscunque"],
                  25: ["quaecumque", "quaecunque"],
                  27: ["quamcumque", "quamcunque"],
                  28: [
                      "cujuscumque",
                      "cujuscunque",
                      "quojuscumque",
                      "quojuscunque",
                  ],
                  29: [
                      "cuicumque",
                      "cuicunque",
                      "quoicumque",
                      "quoicunque",
                  ],
                  30: ["quacumque", "quacunque"],
                  31: ["quaecumque", "quaecunque"],
                  33: ["quascumque", "quascunque"],
                  34: ["quarumcumque", "quarumcunque"],
                  35: ["quibuscumque", "quibuscunque"],
                  36: ["quibuscumque", "quibuscunque"],
                  37: ["quodcumque", "quodcunque"],
                  39: ["quodcumque", "quodcunque"],
                  40: [
                      "cujuscumque",
                      "cujuscunque",
                      "quojuscumque",
                      "quojuscunque",
                  ],
                  41: [
                      "cuicumque",
                      "cuicunque",
                      "quoicumque",
                      "quoicunque",
                  ],
                  42: ["quocumque", "quocunque"],
                  43: ["quaecumque", "quaecunque"],
                  45: ["quaecumque", "quaecunque"],
                  46: ["quorumcumque", "quorumcunque"],
                  47: ["quibuscumque", "quibuscunque"],
                  48: ["quibuscumque", "quibuscunque"],
              },
              "Constant suffix should be added",
          )
          self.assertEqual(
              decliner.decline("plerique", collatinus_dict=True),
              {
                  19: ["plerique"],
                  20: ["plerique"],
                  21: ["plerosque"],
                  22: ["plerorumque"],
                  23: ["plerisque"],
                  24: ["plerisque"],
                  31: ["pleraeque"],
                  32: ["pleraeque"],
                  33: ["plerasque"],
                  34: ["plerarumque"],
                  35: ["plerisque"],
                  36: ["plerisque"],
                  43: ["pleraque"],
                  44: ["pleraque"],
                  45: ["pleraque"],
                  46: ["plerorumque"],
                  47: ["plerisque"],
                  48: ["plerisque"],
              },
              "Checking abs is applied correctly",
          )
          self.assertEqual(
              decliner.decline("edo", collatinus_dict=True)[122]
              + decliner.decline("edo", collatinus_dict=True)[163],
              ["edis", "es"] + ["ederem", "essem"],
              "Alternative desisences should be added, even with different root",
          )
  
          self.assertEqual(
              decliner.decline("aggero2")[0],
              ("aggero", "v1spia---"),
              "Lemma with disambiguation indexes should not fail their declension [aggero and not aggeroo]",
          )
  
file_path: cltk/tests/test_morphology.py
imports: import unittest
  from cltk.core.exceptions import CLTKException
  from cltk.morphology.lat import CollatinusDecliner
label_desc: Use image node_id 1 for calling the TestMorphology obj's underlying member method code with example usage: obj.test_collatinus_decline() and returns: unknown