@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 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 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 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 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"); }
// 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 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"); }
// 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"); }
@Test public void testVoicingOptional() { Tester tester = new Tester("yok [A:VoicingOpt]"); tester.assertHasParses("yok", "yoka", "yoğa", "yoktan"); tester.assertUnParseable("yoğta", "yokku"); }
@Test public void nounVowelDrop() { Tester tester = new Tester("ağız [A:LastVowelDrop]"); tester.assertHasParses("ağız", "ağzı", "ağızlar", "ağza"); tester.assertUnParseable("ağızı", "ağzlar"); }
@Test public void testVoicing() { Tester tester = new Tester("armut"); tester.assertHasParses("armut", "armuda", "armutlar", "armutlara"); tester.assertUnParseable("armud", "armuta", "armudlar", "armutlarlar", "armutalar"); }