@Test public void testA3pl() { Tester tester = new Tester("elma", "mavi [P:Adj]"); tester.assertHasParses("elmalar", "elmalara", "elmalarda", "elmalardaki", "elmalardakilerdeki"); tester.assertHasParses("elmalardı", "elmalaraydı", "elmalardır", "elmalardandır", "elmalarsa"); tester.assertHasParses("maviler", "mavilere", "mavilerim", "mavilerdendir", "mavilerdeymiş"); }
@Test public void testCausative() { Tester tester = new Tester("yapmak", "aramak"); tester.assertHasParses("yaptırttır", "yaptır", "yaptırt", "arat", "arattır", "arattırt"); tester.assertHasParses("yaptırarak", "yaptırtarak", "yaptırtmayacak"); tester.assertUnParseable("yapt", "aratt"); }
@Test public void testFuture() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); tester.assertHasParses( "arayacak", "arayacağız", "aramayacak", "aratacak", "arayacaklar", "arayacaktık"); tester.assertHasParses("gidecek", "gideceğiz", "gitmeyecek", "gidecekler", "gidecektik"); }
@Test public void testAorist() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]", "gelmek [A:NonTransitive, Aorist_I]"); tester.assertHasParses("arar", "ararsa", "gider", "gelir", "aramaz"); tester.assertHasParses("ararlar", "ararlarsa", "ararsalar"); tester.assertUnParseable("geler", "gidir"); }
@Test public void testAcquire() { // noun Tester tester = new Tester("elma", "mavi [P:Adj]"); tester.assertHasParses("elmalan", "elmalanıyor", "elmalandırmak"); // adj tester.assertHasParses("mavilendirilebileceğinden"); }
@Test public void testBecome() { // noun Tester tester = new Tester("elma", "mavi [P:Adj]"); tester.assertHasParses("elmalaş"); // adj tester.assertHasParses("mavileş"); }
@Test public void testProgressive() { // Noun-Noun Tester tester = new Tester("aramak", "gelmek"); tester.assertHasParses( "arıyor", "aramıyor", "geliyor", "gelmiyor", "arıyordu", "arıyorlardı", "gelmiyorlarsa"); tester.assertHasParses("arıyormuş", "aramıyorsak", "geliyormuşuz"); tester.assertHasParses("aramakta", "aramamakta", "gelmekte", "gelmemekte"); }
@Test public void testRelated() { // Noun-Adj Tester tester = new Tester("elma"); tester.assertHasParses("elmadaki", "elmadakini"); tester.assertHasParses("elmanınki", "elmanınkinde", "elmanınkinden"); tester.assertUnParseable("elmaki", "elmayaki", "elmadakiki"); // TODO: add akşamki etc. uses Rel_kI instead of Rel_ki }
@Test public void testPassive() { // Noun-Noun Tester tester = new Tester("yapmak", "aramak", "gelmek"); tester.assertHasParses("aranıl", "yapıl", "aran", "gelin", "gelinil"); tester.assertUnParseable("aral", "gelil", "kavurul", "kavurunul"); // causative and passive tester.assertHasParses( "yaptırıl", "yaptırtıl", "yaptırttırıl", "aratıl", "arattırıl", "arattırtıl"); }
@Test public void possession() { Tester tester = new Tester("elma", "mavi [P:Adj]"); tester.assertHasParses("elmam", "elman", "elması", "elmamız", "elmaları"); tester.assertHasParses("elmamı", "elmanda", "elmasında", "elmamızdan", "elmalarıyla"); tester.assertHasParses("mavim", "mavin", "mavisi", "mavimiz", "mavileri"); tester.assertHasParses("mavimi", "mavinde", "mavisinden", "mavimizde", "mavileriyle"); tester.assertHasParses("elmamdı", "elmammış", "elmamızsa", "elmamızdır"); tester.assertHasParses("mavimdi", "mavinmiş", "mavisiyse", "mavimizdir"); }
@Test public void PresPart_yAn() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); // tester.assertHasParses( "gidene", "arayandan", "gitmeyenden", "aramayanı", "aratmayanı", "aranmayanı"); }
@Test public void stemChange() { Tester tester = new Tester("demek [A:StemChange]", "yemek [A:StemChange]"); tester.assertHasParses( "ye", "de", "yeme", "deme", "yiyor", "diyor", "yemiyor", "demiyor", "yedi", "dedi"); tester.assertUnParseable("yi", "di", "yime", "dime", "yeyor", "deyor", "yemeyor"); }
@Test public void testPast() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); tester.assertHasParses( "aradı", "gitti", "gittik", "gittiyse", "gittim", "gittiniz", "gittiydim"); tester.assertUnParseable("gittiz", "gittimiş"); }
@Test public void testDim() { // Noun-Noun Tester tester = new Tester("armut"); tester.assertHasParses("armutçuk", "armutçuğu", "armutcağız", "armutcağızı"); tester.assertUnParseable("armutçuğ", "armutçukcuk", "armutçukcağız", "armutcağızcık"); // TODO: check oflazer parse "babacım = baba+Noun+A3sg+Pnon+Nom^DB+Noun+Dim+A3sg+P1sg+Nom }
@Test public void ability() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); // abil tester.assertHasParses( "arayabil", "arayabilir", "arayabilecek", "gidebil", "gidebilecek", "gidebiliyor"); // a tester.assertHasParses("arayamıyorum", "arayamaya", "arayamasın", "arayamamaktan", "gidemese"); tester.assertHasParses( "arayamam", "arayamazsın", "arayamayız", "arayama", "arayamayabilir", "gideme", "gidemeyebilir"); }
@Test public void asif() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); tester.assertHasParses( "ararcasına", "aramazcasına", "arıyormuşçasına", "aranılmışçasına", "gidebilirmişsinizcesine"); }
@Test public void testImp() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]", "hapsetmek [A:Voicing]"); tester.assertHasParses( "ara", "arayın", "git", "gitme", "gidiniz", "gitsene", "gitsenize", "aramayacak", "aramasın", "gitmesin", "arasınlar", "gitmesinler"); tester.assertHasParses("aramasanıza", "aramayın", "gitmeyin"); tester.assertUnParseable(suffixProvider.Pass, "hapsedin"); }
@Test public void FutPart_yAcAK() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); // WithoutDoing_mAdAn tester.assertHasParses( "gidecekleri", "gitmeyeceklere", "arayacaklardan", "aramayacaklardan", "arayamayacaklardan"); }
@Test public void Des() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); tester.assertHasParses( "arasa", "arasak", "arasalar", "aramasalar", "aransalar", "aratsalar", "arattırsak", "arattırmasanız"); }
// TODO: "zeytinyağlılarım" gives two identical parse result. @Test public void testCompounds() { Tester tester = new Tester("zeytinyağı [A:CompoundP3sg ;R:zeytinyağ]"); tester.assertHasParses( "zeytinyağcık", "zeytinyağım", "zeytinyağına", "zeytinyağlılar", "zeytinyağlılarım", "zeytinyağı", "zeytinyağcığa", "zeytinyağlarım"); tester.assertUnParseable("zeytinyağılar", "zeytinyağıcık"); }
@Test public void testNess() { Tester tester = new Tester("elma", "mavi [P:Adj]"); tester.assertHasParses( "elmacıktı", "elmalık", "elmalığı", "elmalıktı", "elmalığa", "mavilik", "maviliği", "mavilikti"); tester.assertUnParseable("elmalıka", "maviliki"); }
@Test public void verbVowelDrop() { Tester tester = new Tester("kavurmak [A:LastVowelDrop]"); tester.assertHasParses( "kavurdu", "kavuracağız", "kavurur", "kavuruyor", "kavur", "kavrul", "kavrulma", "kavurma", "kavrulacağız", "kavrulmayıver", "kavurtacağız"); tester.assertUnParseable("kavurul", "kavracağız", "kavruyor", "kavrar", "kavrar"); }
@Test public void Verb2Adverb() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); // WithoutDoing_mAdAn tester.assertHasParses("aramadan", "arayamadan", "gitmeden", "gidemeden"); // When_yIncA, , UnableToDo_yAmAdAn, ByDoing_yArAk, WithoutDoing_mAdAn, WithoutDoing2_mAksIzIn) // .add(InsteadOfDoing_mAktAnsA, AsLongAs_dIkcA, AfterDoing_yIp // SinceDoing_yAlI tester.assertHasParses("arayalı", "aramayalı", "gideli", "gitmeyeli"); // ByDoing_yArAk tester.assertHasParses("arayarak", "aramayarak", "giderek", "gitmeyerek"); // WithoutDoing_mAdAn. tester.assertHasParses("aramadan", "gitmeden", "aranmadan", "aratmadan"); // WithoutDoing2_mAksIzIn tester.assertHasParses("aramaksızın", "gitmeksizin", "aranmaksızın"); // InsteadOfDoing_mAktAnsA tester.assertHasParses( "aramaktansa", "aramamaktansa", "aranmaktansa", "aratmaktansa", "aranmamaktansa"); // AsLongAs_dIkcA tester.assertHasParses("aradıkça", "aramadıkça", "aranmadıkça", "aratmadıkça", "arayamadıkça"); // AfterDoing_yIp tester.assertHasParses("arayıp", "aramayıp"); }
@Test public void fitFor() { Tester tester = new Tester("elma"); tester.assertHasParses("elmalık", "elmalığa"); }
@Test public void testAdj2Verb() { Tester tester = new Tester("mavi [P:Adj]"); tester.assertHasParses("mavileşti", "mavileşmiş", "maviydi", "maviyim"); tester.assertHasParses("mavilendi", "mavilendir"); }
@Test public void testNounToVerbCopular() { Tester tester = new Tester("elma"); tester.assertHasParses("elmaydı", "elmaymış", "elmaydık", "elmayım", "elmadır"); }
@Test public void Agt() { Tester tester = new Tester("aramak", "gitmek [A:Voicing, Aorist_A]"); tester.assertHasParses("arayıcı", "gidici"); }
@Test public void AgtNoun() { Tester tester = new Tester("elma", "armut"); tester.assertHasParses( "elmacı", "armutçu", "elmacılar", "elmacısın", "elmacısınız", "elmacıyız", "elmacılık"); }
// TODO elmalidir should have single parse @Test public void testWithAndWithout() { Tester tester = new Tester("elma", "kitap"); tester.assertHasParses("elmalı", "elmasız", "kitaplı", "kitapsız", "elmalıydı", "elmalıdır"); tester.assertUnParseable("elmayalı", "elmalarlı", "elmadasız", "elmalarsız"); }
@Test public void testCompoundsVoicing() { Tester tester = new Tester("atkuyruğu [A:CompoundP3sg, Voicing ; R:atkuyruk]"); tester.assertHasParses("atkuyrukçuk", "atkuyruğu", "atkuyruklarım"); tester.assertUnParseable("atkuyruğlarım", "atkuyruk"); }