# -*- encoding: utf-8 -*-
import os
import neahtta
import unittest
import tempfile
from .lexicon import ( BasicTests
, WordLookupTests
, WordLookupDetailTests
, WordLookupAPITests
, WordLookupAPIDefinitionTests
, ParadigmGenerationTests
, form_contains
, form_doesnt_contain
)
wordforms_that_shouldnt_fail = [
( ('sme', 'nob'), u'sihke'),
( ('sme', 'nob'), u'mannat'),
( ('sme', 'nob'), u'manai'),
( ('sme', 'nob'), u'Gállábártnit'),
( ('nob', 'sme'), u'drikke'),
( ('nob', 'sme'), u'forbi'),
( ('nob', 'sme'), u'stige'),
# This one contains a blank definition node, but translations.
( ('nob', 'sme'), u'sette'),
# Copied some words from a previous test log. May need to go through
# these and do things about results instead of just testing that
# 404s and 500s aren't returned
# Test that SoMe paths work
( ('SoMe', 'nob'), u'geahcci'),
( ('SoMe', 'nob'), u'leazzaba'),
( ('SoMe', 'nob'), u'leažžaba'),
( ('SoMe', 'nob'), u'munnuide'),
# Test that finn paths work: TODO: -- ensure analysis returned?
( ('fin', 'sme'), u'menijä'),
( ('fin', 'sme'), u'menijää'),
( ('fin', 'sme'), u'menisi'),
( ('fin', 'sme'), u'mennä'),
# test that nob->sme placenames work
( ('nob', 'sme'), u'Austerrike'),
( ('nob', 'sme'), u'Noreg'),
( ('nob', 'sme'), u'austerrikisk'),
( ('nob', 'sme'), u'skilnad'),
( ('nob', 'sme'), u'Østerrike'),
( ('nob', 'sme'), u'Aust-Noreg'),
# sme->fin
( ('sme', 'fin'), u'leažžaba'),
# placenames returned
( ('sme', 'nob'), u'Gálbbejávrrit'),
( ('sme', 'nob'), u'Gállábártnit'),
# misc inflections
( ('sme', 'nob'), u'diehtit'),
( ('sme', 'nob'), u'girjaide'),
( ('sme', 'nob'), u'girji'),
( ('sme', 'nob'), u'girjiide'),
( ('sme', 'nob'), u'girjjaid'),
( ('sme', 'nob'), u'girjjaide'),
( ('sme', 'nob'), u'girjjiide'),
( ('sme', 'nob'), u'guovdageaidnulaš'),
( ('sme', 'nob'), u'leaččan'),
( ('sme', 'nob'), u'leažžaba'),
( ('sme', 'nob'), u'manai'),
( ('sme', 'nob'), u'manan'),
( ('sme', 'nob'), u'mannat'),
( ('sme', 'nob'), u'moai'),
( ('sme', 'nob'), u'muinna'),
( ('sme', 'nob'), u'mun'),
( ('sme', 'nob'), u'munnje'),
( ('sme', 'nob'), u'munnos'),
( ('sme', 'nob'), u'munnuide'),
( ('sme', 'nob'), u'mánnageahčči'),
( ('sme', 'nob'), u'mánná'),
( ('sme', 'nob'), u'neahkameahttun'),
( ('sme', 'nob'), u'sihke'),
( ('sme', 'nob'), u'sihkestan'),
( ('sme', 'nob'), u'sihkestit'),
# random sampling from user activity log
( ('SoMe', 'nob'), u'duddet'),
( ('SoMe', 'nob'), u'etter'),
( ('SoMe', 'nob'), u'jeg'),
( ('fin', 'sme'), u'aika'),
( ('fin', 'sme'), u'asia'),
( ('fin', 'sme'), u'etsiä'),
( ('fin', 'sme'), u'hakea'),
( ('fin', 'sme'), u'huitaista'),
( ('fin', 'sme'), u'hänen kanssa'),
( ('fin', 'sme'), u'hänen kanssaan'),
( ('fin', 'sme'), u'johonkin'),
( ('fin', 'sme'), u'johtaja'),
( ('fin', 'sme'), u'joulu'),
( ('fin', 'sme'), u'järjestys'),
( ('fin', 'sme'), u'kanssa'),
( ('fin', 'sme'), u'kirjoittaa'),
( ('fin', 'sme'), u'laktása'),
( ('fin', 'sme'), u'laktásit'),
( ('fin', 'sme'), u'loma'),
( ('fin', 'sme'), u'lomalla'),
( ('fin', 'sme'), u'missä'),
( ('fin', 'sme'), u'ohjaaja'),
( ('fin', 'sme'), u'opetella'),
( ('fin', 'sme'), u'opiskella'),
( ('fin', 'sme'), u'oppia'),
( ('fin', 'sme'), u'pitäjä'),
( ('fin', 'sme'), u'poika'),
( ('fin', 'sme'), u'selvä (asiasta)'),
( ('fin', 'sme'), u'selvä'),
( ('fin', 'sme'), u'sitä'),
( ('fin', 'sme'), u'talo'),
( ('fin', 'sme'), u'varata'),
( ('fin', 'sme'), u'vetäjä'),
( ('fin', 'sme'), u'vetää'),
( ('fin', 'sme'), u'vetæjæ'),
( ('fin', 'sme'), u'yhdessä'),
( ('fin', 'sme'), u'ášši'),
( ('fin', 'sme'), u'ääni'),
( ('nob', 'sme'), u'Ferdig'),
( ('nob', 'sme'), u'Vil du spise'),
( ('nob', 'sme'), u'aktiviteter'),
( ('nob', 'sme'), u'amanu'),
( ('nob', 'sme'), u'andre'),
( ('nob', 'sme'), u'bare'),
( ('nob', 'sme'), u'barnehage'),
( ('nob', 'sme'), u'begynner'),
( ('nob', 'sme'), u'begynte'),
( ('nob', 'sme'), u'begŧnte'),
( ('nob', 'sme'), u'best'),
( ('nob', 'sme'), u'beste'),
( ('nob', 'sme'), u'bestemor'),
( ('nob', 'sme'), u'bestevenn'),
( ('nob', 'sme'), u'betydning'),
( ('nob', 'sme'), u'bibliotek'),
( ('nob', 'sme'), u'bok'),
( ('nob', 'sme'), u'bred'),
( ('nob', 'sme'), u'bruke tid'),
( ('nob', 'sme'), u'brus'),
( ('nob', 'sme'), u'buss'),
( ('nob', 'sme'), u'butikk'),
( ('nob', 'sme'), u'både'),
( ('nob', 'sme'), u'bøker'),
( ('nob', 'sme'), u'børste'),
( ('nob', 'sme'), u'car port'),
( ('nob', 'sme'), u'cirka'),
( ('nob', 'sme'), u'dag'),
( ('nob', 'sme'), u'danse'),
( ('nob', 'sme'), u'deksel'),
( ('nob', 'sme'), u'deltaker'),
( ('nob', 'sme'), u'der'),
( ('nob', 'sme'), u'dessert'),
( ('nob', 'sme'), u'dette'),
( ('nob', 'sme'), u'dette er'),
( ('nob', 'sme'), u'dette'),
( ('nob', 'sme'), u'dra'),
( ('nob', 'sme'), u'dra på tur'),
( ('nob', 'sme'), u'dåp'),
( ('nob', 'sme'), u'eller'),
( ('nob', 'sme'), u'elv'),
( ('nob', 'sme'), u'ennå'),
( ('nob', 'sme'), u'eple'),
( ('nob', 'sme'), u'erfaren'),
( ('nob', 'sme'), u'etter'),
( ('nob', 'sme'), u'fakta'),
( ('nob', 'sme'), u'far'),
( ('nob', 'sme'), u'favoritt'),
( ('nob', 'sme'), u'favorittmat'),
( ('nob', 'sme'), u'ferdig'),
( ('nob', 'sme'), u'ferdigđ'),
( ('nob', 'sme'), u'fin'),
( ('nob', 'sme'), u'finne'),
( ('nob', 'sme'), u'fint'),
( ('nob', 'sme'), u'fiske'),
( ('nob', 'sme'), u'fjortende'),
( ('nob', 'sme'), u'fjæra'),
( ('nob', 'sme'), u'fjæreområde'),
( ('nob', 'sme'), u'flokken'),
( ('nob', 'sme'), u'flytter'),
( ('nob', 'sme'), u'folk'),
( ('nob', 'sme'), u'forberede'),
( ('nob', 'sme'), u'forskaling'),
( ('nob', 'sme'), u'fotball'),
( ('nob', 'sme'), u'fysioterapeut'),
( ('nob', 'sme'), u'først'),
( ('nob', 'sme'), u'gang'),
( ('nob', 'sme'), u'garasje'),
( ('nob', 'sme'), u'grunn'),
( ('nob', 'sme'), u'grunnmur'),
( ('nob', 'sme'), u'grøt'),
( ('nob', 'sme'), u'gå'),
( ('nob', 'sme'), u'gård'),
( ('nob', 'sme'), u'ha'),
( ('nob', 'sme'), u'hakket'),
( ('nob', 'sme'), u'har'),
( ('nob', 'sme'), u'helligdag'),
( ('nob', 'sme'), u'hjelp'),
( ('nob', 'sme'), u'hobby'),
( ('nob', 'sme'), u'hobbyer'),
( ('nob', 'sme'), u'hun (har)'),
( ('nob', 'sme'), u'hun'),
( ('nob', 'sme'), u'hus'),
( ('nob', 'sme'), u'hvor'),
( ('nob', 'sme'), u'hytte'),
( ('nob', 'sme'), u'høne unge'),
( ('nob', 'sme'), u'høne'),
( ('nob', 'sme'), u'høneunge'),
( ('nob', 'sme'), u'i dag'),
( ('nob', 'sme'), u'ikke'),
( ('nob', 'sme'), u'informasjon om'),
( ('nob', 'sme'), u'informasjon'),
( ('nob', 'sme'), u'ingredienser'),
( ('nob', 'sme'), u'inngredienser'),
( ('nob', 'sme'), u'interesse'),
( ('nob', 'sme'), u'interesser'),
( ('nob', 'sme'), u'iskrem'),
( ('nob', 'sme'), u'jeg'),
( ('nob', 'sme'), u'jente'),
( ('nob', 'sme'), u'jobb'),
( ('nob', 'sme'), u'jobber'),
( ('nob', 'sme'), u'k'),
( ('nob', 'sme'), u'kake'),
( ('nob', 'sme'), u'kald vestavind'),
( ('nob', 'sme'), u'kald østavind'),
( ('nob', 'sme'), u'kald'),
( ('nob', 'sme'), u'kirke'),
( ('nob', 'sme'), u'kjæreste'),
( ('nob', 'sme'), u'kjøttdeig'),
( ('nob', 'sme'), u'klokken'),
( ('nob', 'sme'), u'kommende'),
( ('nob', 'sme'), u'kvittering'),
( ('nob', 'sme'), u'kylling salat'),
( ('nob', 'sme'), u'kylling'),
( ('nob', 'sme'), u'kyllingklubb'),
( ('nob', 'sme'), u'kyllingklubbe'),
( ('nob', 'sme'), u'kyllingsalat'),
( ('nob', 'sme'), u'kyllinh'),
( ('nob', 'sme'), u'lage'),
( ('nob', 'sme'), u'land'),
( ('nob', 'sme'), u'lasagne'),
( ('nob', 'sme'), u'le'),
( ('nob', 'sme'), u'leamaw'),
( ('nob', 'sme'), u'lege'),
( ('nob', 'sme'), u'leke'),
( ('nob', 'sme'), u'lese'),
( ('nob', 'sme'), u'ligge'),
( ('nob', 'sme'), u'ligger ved'),
( ('nob', 'sme'), u'liker ikke'),
( ('nob', 'sme'), u'liker'),
( ('nob', 'sme'), u'liten'),
( ('nob', 'sme'), u'liturgi'),
( ('nob', 'sme'), u'mandager'),
( ('nob', 'sme'), u'mat'),
( ('nob', 'sme'), u'men'),
( ('nob', 'sme'), u'menneske'),
( ('nob', 'sme'), u'mennesket'),
( ('nob', 'sme'), u'middag'),
( ('nob', 'sme'), u'mihkal sin mor heter'),
( ('nob', 'sme'), u'mis lea'),
( ('nob', 'sme'), u'multebær'),
( ('nob', 'sme'), u'multer'),
( ('nob', 'sme'), u'mye'),
( ('nob', 'sme'), u'måle'),
( ('nob', 'sme'), u'måned'),
( ('nob', 'sme'), u'måneder'),
( ('nob', 'sme'), u'møte verb'),
( ('nob', 'sme'), u'møte'),
( ('nob', 'sme'), u'natur'),
( ('nob', 'sme'), u'naturbruk'),
( ('nob', 'sme'), u'naturen'),
( ('nob', 'sme'), u'neste'),
( ('nob', 'sme'), u'nisse'),
( ('nob', 'sme'), u'noe'),
( ('nob', 'sme'), u'oeft'),
( ('nob', 'sme'), u'ofte'),
( ('nob', 'sme'), u'også'),
( ('nob', 'sme'), u'olje'),
( ('nob', 'sme'), u'om høsten'),
( ('nob', 'sme'), u'om sommeren'),
( ('nob', 'sme'), u'om vinteren'),
( ('nob', 'sme'), u'om'),
( ('nob', 'sme'), u'omsorgssenter'),
( ('nob', 'sme'), u'omtrent'),
( ('nob', 'sme'), u'onsdag'),
( ('nob', 'sme'), u'opp'),
( ('nob', 'sme'), u'opplegg'),
( ('nob', 'sme'), u'oppskrift'),
( ('nob', 'sme'), u'ost'),
( ('nob', 'sme'), u'ovdal'),
( ('nob', 'sme'), u'pappa'),
( ('nob', 'sme'), u'patent'),
( ('nob', 'sme'), u'pent'),
( ('nob', 'sme'), u'pepper'),
( ('nob', 'sme'), u'plass'),
( ('nob', 'sme'), u'plukke bær'),
( ('nob', 'sme'), u'postkontor'),
( ('nob', 'sme'), u'potte'),
( ('nob', 'sme'), u'purre'),
( ('nob', 'sme'), u'purreløk'),
( ('nob', 'sme'), u'på ordentlig'),
( ('nob', 'sme'), u'raring'),
( ('nob', 'sme'), u'regning'),
( ('nob', 'sme'), u'reise'),
( ('nob', 'sme'), u'renne'),
( ('nob', 'sme'), u'ri'),
( ('nob', 'sme'), u'riktig'),
( ('nob', 'sme'), u'rydde'),
( ('nob', 'sme'), u'sage'),
( ('nob', 'sme'), u'salat'),
( ('nob', 'sme'), u'salt'),
( ('nob', 'sme'), u'samboer'),
( ('nob', 'sme'), u'samisk'),
( ('nob', 'sme'), u'samtale'),
( ('nob', 'sme'), u'saus'),
( ('nob', 'sme'), u'sin'),
( ('nob', 'sme'), u'skatt'),
( ('nob', 'sme'), u'skatter'),
( ('nob', 'sme'), u'slutter'),
( ('nob', 'sme'), u'slå'),
( ('nob', 'sme'), u'som'),
( ('nob', 'sme'), u'sommer'),
( ('nob', 'sme'), u'spille'),
( ('nob', 'sme'), u'spilt'),
( ('nob', 'sme'), u'spise'),
( ('nob', 'sme'), u'stabble'),
( ('nob', 'sme'), u'stable'),
( ('nob', 'sme'), u'sted'),
( ('nob', 'sme'), u'sterk vind'),
( ('nob', 'sme'), u'stjele'),
( ('nob', 'sme'), u'stolt'),
( ('nob', 'sme'), u'stryk'),
( ('nob', 'sme'), u'sy'),
( ('nob', 'sme'), u'sytten'),
( ('nob', 'sme'), u'så'),
( ('nob', 'sme'), u'søster'),
( ('nob', 'sme'), u'ta'),
( ('nob', 'sme'), u'takstol'),
( ('nob', 'sme'), u'tar'),
( ('nob', 'sme'), u'tekst'),
( ('nob', 'sme'), u'telefonnummer'),
( ('nob', 'sme'), u'tidligere'),
( ('nob', 'sme'), u'tie'),
( ('nob', 'sme'), u'tilbe'),
( ('nob', 'sme'), u'tjuefjerde'),
( ('nob', 'sme'), u'tomat'),
( ('nob', 'sme'), u'tomatpure'),
( ('nob', 'sme'), u'trenge'),
( ('nob', 'sme'), u'trening'),
( ('nob', 'sme'), u'trivelig'),
( ('nob', 'sme'), u'tvinge'),
( ('nob', 'sme'), u'tysk'),
( ('nob', 'sme'), u'underholde'),
( ('nob', 'sme'), u'unge'),
( ('nob', 'sme'), u'vakker'),
( ('nob', 'sme'), u'vann'),
( ('nob', 'sme'), u'vant'),
( ('nob', 'sme'), u'vaske opp'),
( ('nob', 'sme'), u'vaske'),
( ('nob', 'sme'), u'ved siden av'),
( ('nob', 'sme'), u'vegg'),
( ('nob', 'sme'), u'veggeme'),
( ('nob', 'sme'), u'veggene'),
( ('nob', 'sme'), u'vegger'),
( ('nob', 'sme'), u'veidnes'),
( ('nob', 'sme'), u'veidnesklubben'),
( ('nob', 'sme'), u'veldig'),
( ('nob', 'sme'), u'venn'),
( ('nob', 'sme'), u'verden'),
( ('nob', 'sme'), u'vestavind'),
( ('nob', 'sme'), u'videregående skole'),
( ('nob', 'sme'), u'videregående'),
( ('nob', 'sme'), u'viessu'),
( ('nob', 'sme'), u'vind'),
( ('nob', 'sme'), u'vurdere'),
( ('nob', 'sme'), u'våkne'),
( ('nob', 'sme'), u'vår'),
( ('nob', 'sme'), u'å ha'),
( ('nob', 'sme'), u'å møte'),
( ('nob', 'sme'), u'økonomi'),
( ('sme', 'fin'), u'ahte'),
( ('sme', 'fin'), u'almmiguovlu'),
( ('sme', 'fin'), u'asia'),
( ('sme', 'fin'), u'bagadalli'),
( ('sme', 'fin'), u'bealljái'),
( ('sme', 'fin'), u'beasat'),
( ('sme', 'fin'), u'beassat'),
( ('sme', 'fin'), u'biegga'),
( ('sme', 'fin'), u'boagusta'),
( ('sme', 'fin'), u'boagustit'),
( ('sme', 'fin'), u'boahtin'),
( ('sme', 'fin'), u'botnje'),
( ('sme', 'fin'), u'buddáduvvat'),
( ('sme', 'fin'), u'buot'),
( ('sme', 'fin'), u'báhcit'),
( ('sme', 'fin'), u'coggat'),
( ('sme', 'fin'), u'dadjá'),
( ('sme', 'fin'), u'dalle'),
( ('sme', 'fin'), u'de'),
( ('sme', 'fin'), u'diibmu'),
( ('sme', 'fin'), u'doalli'),
( ('sme', 'fin'), u'dohpo'),
( ('sme', 'fin'), u'doppe'),
( ('sme', 'fin'), u'dovdat'),
( ('sme', 'fin'), u'dušše'),
( ('sme', 'fin'), u'dállu'),
( ('sme', 'fin'), u'dáppehan'),
( ('sme', 'fin'), u'ealli'),
( ('sme', 'fin'), u'eamidin'),
( ('sme', 'fin'), u'fadda'),
( ('sme', 'fin'), u'fas'),
( ('sme', 'fin'), u'fáippastit'),
( ('sme', 'fin'), u'gal'),
( ('sme', 'fin'), u'garra'),
( ('sme', 'fin'), u'geahčadit'),
( ('sme', 'fin'), u'giige'),
( ('sme', 'fin'), u'gitta'),
( ('sme', 'fin'), u'guovttos'),
( ('sme', 'fin'), u'gutna'),
( ('sme', 'fin'), u'gávdno'),
( ('sme', 'fin'), u'hutka'),
( ('sme', 'fin'), u'hutkat'),
( ('sme', 'fin'), u'hutkkálaš'),
( ('sme', 'fin'), u'háv'),
( ('sme', 'fin'), u'hávdádit'),
( ('sme', 'fin'), u'jienas'),
( ('sme', 'fin'), u'jietnadan'),
( ('sme', 'fin'), u'jođiheaddji'),
( ('sme', 'fin'), u'juo'),
( ('sme', 'fin'), u'juohke'),
( ('sme', 'fin'), u'juoidá'),
( ('sme', 'fin'), u'juos'),
( ('sme', 'fin'), u'juosat'),
( ('sme', 'fin'), u'kanssa'),
( ('sme', 'fin'), u'kirjoittaa'),
( ('sme', 'fin'), u'kirjottaa'),
( ('sme', 'fin'), u'lahkonit'),
( ('sme', 'fin'), u'leamaš'),
( ('sme', 'fin'), u'liegga'),
( ('sme', 'fin'), u'liikká'),
( ('sme', 'fin'), u'lomalla'),
( ('sme', 'fin'), u'mearkugohte'),
( ('sme', 'fin'), u'miessi'),
( ('sme', 'fin'), u'misiin'),
( ('sme', 'fin'), u'missä'),
( ('sme', 'fin'), u'mohkki'),
( ('sme', 'fin'), u'mojohallat'),
( ('sme', 'fin'), u'mot'),
( ('sme', 'fin'), u'muhto'),
( ('sme', 'fin'), u'muhtumis'),
( ('sme', 'fin'), u'máhta'),
( ('sme', 'fin'), u'máhttit'),
( ('sme', 'fin'), u'naba'),
( ('sme', 'fin'), u'nebe'),
( ('sme', 'fin'), u'njammat'),
( ('sme', 'fin'), u'nu'),
( ('sme', 'fin'), u'nuppis'),
( ('sme', 'fin'), u'oaidná'),
( ('sme', 'fin'), u'olbmot'),
( ('sme', 'fin'), u'olgeš'),
( ('sme', 'fin'), u'olu'),
( ('sme', 'fin'), u'orui'),
( ('sme', 'fin'), u'ovddabealde'),
( ('sme', 'fin'), u'ovddal'),
( ('sme', 'fin'), u'roava'),
( ('sme', 'fin'), u'ruovgat'),
( ('sme', 'fin'), u'ráfálaš'),
( ('sme', 'fin'), u'ráigánit'),
( ('sme', 'fin'), u'sevii'),
( ('sme', 'fin'), u'stivrejeaddji'),
( ('sme', 'fin'), u'suohkan'),
( ('sme', 'fin'), u'teapmi'),
( ('sme', 'fin'), u'vadjat'),
( ('sme', 'fin'), u'veahás'),
( ('sme', 'fin'), u'veaháš'),
( ('sme', 'fin'), u'viegahallat'),
( ('sme', 'fin'), u'vuollegis'),
( ('sme', 'fin'), u'vuollái'),
( ('sme', 'fin'), u'vuot'),
( ('sme', 'fin'), u'váldi'),
( ('sme', 'fin'), u'váldobargu'),
( ('sme', 'fin'), u'álddagas'),
( ('sme', 'fin'), u'álddu'),
( ('sme', 'fin'), u'áldu'),
( ('sme', 'fin'), u'čohka'),
( ('sme', 'fin'), u'čuhppe'),
( ('sme', 'fin'), u'čuččodit'),
( ('sme', 'fin'), u'čábbát'),
( ('sme', 'nob'), u'Eanet'),
( ('sme', 'nob'), u'algan'),
( ('sme', 'nob'), u'alggan'),
( ('sme', 'nob'), u'alggos'),
( ('sme', 'nob'), u'algit'),
( ('sme', 'nob'), u'almmuhangeasku'),
( ('sme', 'nob'), u'almmuhit'),
( ('sme', 'nob'), u'astat'),
( ('sme', 'nob'), u'astta'),
( ('sme', 'nob'), u'asttá'),
( ('sme', 'nob'), u'astá'),
( ('sme', 'nob'), u'beaivi'),
( ('sme', 'nob'), u'bearal'),
( ('sme', 'nob'), u'bearralat'),
( ('sme', 'nob'), u'bidjat'),
( ('sme', 'nob'), u'bihca'),
( ('sme', 'nob'), u'bihcabáhcahasaid'),
( ('sme', 'nob'), u'bija'),
( ('sme', 'nob'), u'boastakantuvra'),
( ('sme', 'nob'), u'bohccebiddji'),
( ('sme', 'nob'), u'bohttu'),
( ('sme', 'nob'), u'buozas'),
( ('sme', 'nob'), u'bágget'),
( ('sme', 'nob'), u'báhcahasaid'),
( ('sme', 'nob'), u'coggat'),
( ('sme', 'nob'), u'da lea'),
( ('sme', 'nob'), u'dat lea'),
( ('sme', 'nob'), u'deltaker'),
( ('sme', 'nob'), u'dette er'),
( ('sme', 'nob'), u'dette'),
( ('sme', 'nob'), u'diehttelas'),
( ('sme', 'nob'), u'dieva'),
( ('sme', 'nob'), u'diibmui'),
( ('sme', 'nob'), u'diibmuii'),
( ('sme', 'nob'), u'dine'),
( ('sme', 'nob'), u'dinet'),
( ('sme', 'nob'), u'dohkalaš'),
( ('sme', 'nob'), u'dohkkalaš'),
( ('sme', 'nob'), u'dohkket'),
( ('sme', 'nob'), u'dohkkálaš'),
( ('sme', 'nob'), u'dohkálaš'),
( ('sme', 'nob'), u'dolvo'),
( ('sme', 'nob'), u'duddjot'),
( ('sme', 'nob'), u'duhkoraddat'),
( ('sme', 'nob'), u'duhkordallat'),
( ('sme', 'nob'), u'dulka'),
( ('sme', 'nob'), u'duogábealde'),
( ('sme', 'nob'), u'duogáš'),
( ('sme', 'nob'), u'dáhpáhuvvat'),
( ('sme', 'nob'), u'dállu'),
( ('sme', 'nob'), u'eaibmi'),
( ('sme', 'nob'), u'favoriht'),
( ('sme', 'nob'), u'favorihtt'),
( ('sme', 'nob'), u'favorihtta'),
( ('sme', 'nob'), u'favorihttamusihkka'),
( ('sme', 'nob'), u'favoritt'),
( ('sme', 'nob'), u'feaskkir'),
( ('sme', 'nob'), u'ferdig'),
( ('sme', 'nob'), u'firon'),
( ('sme', 'nob'), u'fiskegrateng'),
( ('sme', 'nob'), u'fysioterapevta'),
( ('sme', 'nob'), u'garvodan'),
( ('sme', 'nob'), u'gaskabiebmu'),
( ('sme', 'nob'), u'gaskavahkku'),
( ('sme', 'nob'), u'gassada'),
( ('sme', 'nob'), u'geahpas'),
( ('sme', 'nob'), u'geahppa'),
( ('sme', 'nob'), u'geardi'),
( ('sme', 'nob'), u'girjerájus'),
( ('sme', 'nob'), u'goarrrut'),
( ('sme', 'nob'), u'goarrut'),
( ('sme', 'nob'), u'guite'),
( ('sme', 'nob'), u'gulaskuddan'),
( ('sme', 'nob'), u'gulaskuddat'),
( ('sme', 'nob'), u'guoibmi'),
( ('sme', 'nob'), u'guoika'),
( ('sme', 'nob'), u'gusta'),
( ('sme', 'nob'), u'guštá'),
( ('sme', 'nob'), u'gárggiideapmi'),
( ('sme', 'nob'), u'gárvodan'),
( ('sme', 'nob'), u'gárvodit'),
( ('sme', 'nob'), u'gávpi'),
( ('sme', 'nob'), u'heivemin'),
( ('sme', 'nob'), u'heivvemin'),
( ('sme', 'nob'), u'helmmot'),
( ('sme', 'nob'), u'hupmat'),
( ('sme', 'nob'), u'hálla'),
( ('sme', 'nob'), u'hállat'),
( ('sme', 'nob'), u'hápmá'),
( ('sme', 'nob'), u'hápmása'),
( ('sme', 'nob'), u'hápmásažžan'),
( ('sme', 'nob'), u'hárjánan'),
( ('sme', 'nob'), u'hárvenaš'),
( ('sme', 'nob'), u'i'),
( ('sme', 'nob'), u'idja'),
( ('sme', 'nob'), u'issorasat'),
( ('sme', 'nob'), u'iđitbiebmu'),
( ('sme', 'nob'), u'jaskkodit'),
( ('sme', 'nob'), u'jed'),
( ('sme', 'nob'), u'jeg'),
( ('sme', 'nob'), u'jente'),
( ('sme', 'nob'), u'juoga'),
( ('sme', 'nob'), u'juoidá'),
( ('sme', 'nob'), u'kirku'),
( ('sme', 'nob'), u'kylling'),
( ('sme', 'nob'), u'lahka'),
( ('sme', 'nob'), u'lahkai'),
( ('sme', 'nob'), u'laktása'),
( ('sme', 'nob'), u'laktásit'),
( ('sme', 'nob'), u'leamaš'),
( ('sme', 'nob'), u'leaš'),
( ('sme', 'nob'), u'lihkan'),
( ('sme', 'nob'), u'liibmet'),
( ('sme', 'nob'), u'lisster'),
( ('sme', 'nob'), u'logaldalli'),
( ('sme', 'nob'), u'luđiide'),
( ('sme', 'nob'), u'lágan'),
( ('sme', 'nob'), u'láhka'),
( ('sme', 'nob'), u'láhkai'),
( ('sme', 'nob'), u'mandager'),
( ('sme', 'nob'), u'maŋŋel'),
( ('sme', 'nob'), u'mohkki'),
( ('sme', 'nob'), u'mun'),
( ('sme', 'nob'), u'mánnodat'),
( ('sme', 'nob'), u'mánnu'),
( ('sme', 'nob'), u'mánáidgárdi'),
( ('sme', 'nob'), u'måle'),
( ('sme', 'nob'), u'målte'),
( ('sme', 'nob'), u'neaktit'),
( ('sme', 'nob'), u'nieida'),
( ('sme', 'nob'), u'nigát'),
( ('sme', 'nob'), u'niidii'),
( ('sme', 'nob'), u'nuollat'),
( ('sme', 'nob'), u'oadju'),
( ('sme', 'nob'), u'ohccis'),
( ('sme', 'nob'), u'ohcis'),
( ('sme', 'nob'), u'olggoš'),
( ('sme', 'nob'), u'olla'),
( ('sme', 'nob'), u'ollašuhttit'),
( ('sme', 'nob'), u'ollu'),
( ('sme', 'nob'), u'olmmoš'),
( ('sme', 'nob'), u'orbbeš'),
( ('sme', 'nob'), u'orda'),
( ('sme', 'nob'), u'ore'),
( ('sme', 'nob'), u'ovdal'),
( ('sme', 'nob'), u'ovdamus'),
( ('sme', 'nob'), u'rissegierragat'),
( ('sme', 'nob'), u'rivttes'),
( ('sme', 'nob'), u'ruhtaheađis'),
( ('sme', 'nob'), u'ruhtahoidu'),
( ('sme', 'nob'), u'ruhtahođis'),
( ('sme', 'nob'), u'sadji'),
( ('sme', 'nob'), u'sahet'),
( ('sme', 'nob'), u'salat'),
( ('sme', 'nob'), u'seaidni'),
( ('sme', 'nob'), u'seakka'),
( ('sme', 'nob'), u'skuohppu'),
( ('sme', 'nob'), u'smávis'),
( ('sme', 'nob'), u'spillet'),
( ('sme', 'nob'), u'spábbačiekčan'),
( ('sme', 'nob'), u'stoahkat'),
( ('sme', 'nob'), u'stresset'),
( ('sme', 'nob'), u'suoládit'),
( ('sme', 'nob'), u'sádjá'),
( ('sme', 'nob'), u'sádjái'),
( ('sme', 'nob'), u'sámegielgalba'),
( ('sme', 'nob'), u'sárgá'),
( ('sme', 'nob'), u'tienas'),
( ('sme', 'nob'), u'uhcci'),
( ('sme', 'nob'), u'ullu'),
( ('sme', 'nob'), u'unni'),
( ('sme', 'nob'), u'vahku'),
( ('sme', 'nob'), u'vai'),
( ('sme', 'nob'), u'valdit'),
( ('sme', 'nob'), u'vullojuvvon'),
( ('sme', 'nob'), u'vuortnuhit'),
( ('sme', 'nob'), u'vuovdnái'),
( ('sme', 'nob'), u'váibbas'),
( ('sme', 'nob'), u'válddahagas'),
( ('sme', 'nob'), u'váldit'),
( ('sme', 'nob'), u'Ávdnasat'),
( ('sme', 'nob'), u'Áđđestaddi'),
( ('sme', 'nob'), u'álgit'),
( ('sme', 'nob'), u'čeabetbáddi'),
( ('sme', 'nob'), u'čivga'),
( ('sme', 'nob'), u'čohkohallat'),
( ('sme', 'nob'), u'čohkun'),
( ('sme', 'nob'), u'čuohppat'),
( ('sme', 'nob'), u'čuojaha'),
( ('sme', 'nob'), u'čáppat'),
]
# TODO: testcase for null lookup-- is returning 500 but should not be,
# but also need to make sure this fix sticks around.
# /lookup/sme/nob/?callback=jQuery3094203984029384&lookup=&lemmatize=true
# TODO: use api lookups to determine that rule overrides are formatting
# things correctly
# TODO: tunealla+v1: tunealla vs. tunealla+v2: tunnealla
# TODO: vmax ruovttueana
# TODO: testcase for miniparadigms, both pregenerated:
paradigm_generation_tests = [
# source, target, lemma, error_msg, paradigm_test
### - http://localhost:5000/detail/sme/nob/iige.json
### - localhost:5000/detail/sme/nob/manne.json
# ... and automatically generated
### - Pregenerated forms from mini_paradigm
('sme', 'nob', u'mun',
"Not generating from mini_paradigm",
form_contains(set([u'munnje', u'mus', u'munin']))),
### - A:
### - http://localhost:5000/detail/sme/nob/ruoksat.json
### - test that context is found as well as paradigm
### - test that +Use/NGminip forms are not generated
('sme', 'nob', u'heittot',
"Dialectical forms present",
form_doesnt_contain(set([u"heittohat", u"heittohut", u"heittohit"]))),
### - A + context="bivttas": heittot
### - http://localhost:5000/detail/sme/nob/heittot.html
('sme', 'nob', u'heittot',
"Context missing",
form_contains(set([u"heittogis (bivttas)"]))),
### - A + context="báddi": guhkki
### - http://localhost:5000/detail/sme/nob/guhkki.html
('sme', 'nob', u'guhkki',
"Context missing",
form_contains(set([u"guhkes (báddi)"]))),
### - Num + context="gápmagat": guokte
### - http://localhost:5000/detail/sme/nob/guokte.html
('sme', 'nob', u'guokte',
"Context missing",
form_contains(set([u"guovttit (gápmagat)"]))),
### - N + illpl="no": eahketroađđi, sihkarvuohta, skuvlaáigi
('sme', 'nob', u'eahketroađđi',
"Illative plural present",
form_doesnt_contain(set([u'eahketrođiide']))),
### - N Prop Sg: Norga, Ruoŧŧa
### - http://localhost:5000/detail/sme/nob/Ruoŧŧa.html
('sme', 'nob', u'Ruoŧŧa',
"Forms not generated",
form_contains(set([u'Ruoŧa bokte', u'Ruŧŧii', u'Ruoŧas']))),
### - N Prop Pl: Iččát
### - Iččát
('sme', 'nob', u'Iččát',
"Forms not generated",
form_contains(set([u'Iččáid bokte', u'Iččáide', u'Iččáin']))),
('sme', 'nob', u'mannat',
"Forms not generated",
form_contains(set([u'manan']))),
('sme', 'nob', u'deaivvadit',
"Overgenerating forms",
form_doesnt_contain(set([u'deaivvadan']))),
('sme', 'nob', u'girji',
"Overgenerating forms. Possible tag filtration issue.",
form_doesnt_contain(set([u'girjje']))),
### - N
### - sámeášši
('sme', 'nob', u'sámeášši',
"Forms not generated",
form_contains(set([u'sámeášši', u'sámeáššái', u'sámeáššiiguin']))),
# u'Ráisa',
# u'dálkkádagat',
# u'deaivvadit' - check that Pl3 deaivvadedje and deaivvadit are
# generated
### - V: boahtit
### - check context, and paradigm:
### - http://localhost:5000/detail/sme/nob/boahtit.json
# TODO: this test
### - V + context="dat", v + context="sii"
### - check context, and that paradigm is not generated for 1st person
### - http://localhost:5000/detail/sme/nob/ciellat.html
### - http://localhost:5000/detail/sme/nob/deaivvadit.html
# TODO: this test
### - N
# TODO: find most common kinds of nouns
]
class WordLookupTests(WordLookupTests):
def test_single_word(self):
""" Test that the basic idea of testing will work.
If there's a problem here, this is a problem. ;)
"""
lang_pair, form = wordforms_that_shouldnt_fail[0]
base = '/%s/%s/' % lang_pair
rv = self.app.post(base, data={
'lookup': form,
})
assert 'sihke' in rv.data
assert u'både' in rv.data.decode('utf-8')
self.assertEqual(rv.status_code, 200)
class WordLookupDetailTests(WordLookupDetailTests):
wordforms_that_shouldnt_fail = wordforms_that_shouldnt_fail
class WordLookupAPITests(WordLookupAPITests):
wordforms_that_shouldnt_fail = wordforms_that_shouldnt_fail
class ParadigmGenerationTests(ParadigmGenerationTests):
paradigm_generation_tests = paradigm_generation_tests
vmax = [
# source, target, lemma, error_msg, paradigm_test
('sme', 'nob', u'ruovttueana',
"Not generating from mini_paradigm",
form_contains(set([u'ruovttueanan',]))),
]
class VMax(ParadigmGenerationTests):
paradigm_generation_tests = vmax
class ParadigmSelectionTest(WordLookupTests):
""" These are really only for testing specifics in the paradigm
directory structure the code, and don't need to be run as generation
as a whole is tested above.
"""
def test_misc_paradigms(self):
from configs.paradigms import ParadigmConfig
lookups = self.current_app.morpholexicon.lookup('mannat', source_lang='sme', target_lang='nob') \
+ self.current_app.morpholexicon.lookup(u'Ráisa', source_lang='sme', target_lang='nob') \
+ self.current_app.morpholexicon.lookup(u'dálkkádagat', source_lang='sme', target_lang='nob') \
+ self.current_app.morpholexicon.lookup(u'álgoálbmotášši', source_lang='sme', target_lang='nob') \
+ self.current_app.morpholexicon.lookup(u'Dálmmát', source_lang='sme', target_lang='nob') \
+ self.current_app.morpholexicon.lookup(u'Gállábártnit', source_lang='sme', target_lang='nob') \
+ self.current_app.morpholexicon.lookup(u'Iččát', source_lang='sme', target_lang='nob')
pc = self.current_app.morpholexicon.paradigms
# print self.current_app
pc = ParadigmConfig(app=None, debug=True)
for node, analyses in lookups:
print "Testing: ", node, analyses
# for a in analyses:
# print " - " + repr(a.tag.matching_tagsets())
print pc.get_paradigm('sme', node, analyses, debug=True)
print '--'