add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / analyzers / common / src / test / org / apache / lucene / analysis / el / TestGreekStemmer.java
1 package org.apache.lucene.analysis.el;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import org.apache.lucene.analysis.Analyzer;
21 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
22
23 public class TestGreekStemmer extends BaseTokenStreamTestCase {
24   Analyzer a = new GreekAnalyzer(TEST_VERSION_CURRENT);
25
26   public void testMasculineNouns() throws Exception {
27     // -ος
28     checkOneTerm(a, "άνθρωπος", "ανθρωπ");
29     checkOneTerm(a, "ανθρώπου", "ανθρωπ");
30     checkOneTerm(a, "άνθρωπο", "ανθρωπ");
31     checkOneTerm(a, "άνθρωπε", "ανθρωπ");
32     checkOneTerm(a, "άνθρωποι", "ανθρωπ");
33     checkOneTerm(a, "ανθρώπων", "ανθρωπ");
34     checkOneTerm(a, "ανθρώπους", "ανθρωπ");
35     checkOneTerm(a, "άνθρωποι", "ανθρωπ");
36     
37     // -ης
38     checkOneTerm(a, "πελάτης", "πελατ");
39     checkOneTerm(a, "πελάτη", "πελατ");
40     checkOneTerm(a, "πελάτες", "πελατ");
41     checkOneTerm(a, "πελατών", "πελατ");
42     
43     // -ας/-ες
44     checkOneTerm(a, "ελέφαντας", "ελεφαντ");
45     checkOneTerm(a, "ελέφαντα", "ελεφαντ");
46     checkOneTerm(a, "ελέφαντες", "ελεφαντ");
47     checkOneTerm(a, "ελεφάντων", "ελεφαντ");
48     
49     // -ας/-αδες
50     checkOneTerm(a, "μπαμπάς", "μπαμπ");
51     checkOneTerm(a, "μπαμπά", "μπαμπ");
52     checkOneTerm(a, "μπαμπάδες", "μπαμπ");
53     checkOneTerm(a, "μπαμπάδων", "μπαμπ");
54     
55     // -ης/-ηδες
56     checkOneTerm(a, "μπακάλης", "μπακαλ");
57     checkOneTerm(a, "μπακάλη", "μπακαλ");
58     checkOneTerm(a, "μπακάληδες", "μπακαλ");
59     checkOneTerm(a, "μπακάληδων", "μπακαλ");
60     
61     // -ες
62     checkOneTerm(a, "καφές", "καφ");
63     checkOneTerm(a, "καφέ", "καφ");
64     checkOneTerm(a, "καφέδες", "καφ");
65     checkOneTerm(a, "καφέδων", "καφ");
66     
67     // -έας/είς
68     checkOneTerm(a, "γραμματέας", "γραμματε");
69     checkOneTerm(a, "γραμματέα", "γραμματε");
70     // plural forms conflate w/ each other, not w/ the sing forms
71     checkOneTerm(a, "γραμματείς", "γραμματ");
72     checkOneTerm(a, "γραμματέων", "γραμματ");
73     
74     // -ους/οι
75     checkOneTerm(a, "απόπλους", "αποπλ");
76     checkOneTerm(a, "απόπλου", "αποπλ");
77     checkOneTerm(a, "απόπλοι", "αποπλ");
78     checkOneTerm(a, "απόπλων", "αποπλ");
79     
80     // -ους/-ουδες
81     checkOneTerm(a, "παππούς", "παππ");
82     checkOneTerm(a, "παππού", "παππ");
83     checkOneTerm(a, "παππούδες", "παππ");
84     checkOneTerm(a, "παππούδων", "παππ");
85     
86     // -ης/-εις
87     checkOneTerm(a, "λάτρης", "λατρ");
88     checkOneTerm(a, "λάτρη", "λατρ");
89     checkOneTerm(a, "λάτρεις", "λατρ");
90     checkOneTerm(a, "λάτρεων", "λατρ");
91     
92     // -υς
93     checkOneTerm(a, "πέλεκυς", "πελεκ");
94     checkOneTerm(a, "πέλεκυ", "πελεκ");
95     checkOneTerm(a, "πελέκεις", "πελεκ");
96     checkOneTerm(a, "πελέκεων", "πελεκ");
97     
98     // -ωρ
99     // note: nom./voc. doesn't conflate w/ the rest
100     checkOneTerm(a, "μέντωρ", "μεντωρ");
101     checkOneTerm(a, "μέντορος", "μεντορ");
102     checkOneTerm(a, "μέντορα", "μεντορ");
103     checkOneTerm(a, "μέντορες", "μεντορ");
104     checkOneTerm(a, "μεντόρων", "μεντορ");
105     
106     // -ων
107     checkOneTerm(a, "αγώνας", "αγων");
108     checkOneTerm(a, "αγώνος", "αγων");
109     checkOneTerm(a, "αγώνα", "αγων");
110     checkOneTerm(a, "αγώνα", "αγων");
111     checkOneTerm(a, "αγώνες", "αγων");
112     checkOneTerm(a, "αγώνων", "αγων");
113     
114     // -ας/-ηδες
115     checkOneTerm(a, "αέρας", "αερ");
116     checkOneTerm(a, "αέρα", "αερ");
117     checkOneTerm(a, "αέρηδες", "αερ");
118     checkOneTerm(a, "αέρηδων", "αερ");
119     
120     // -ης/-ητες
121     checkOneTerm(a, "γόης", "γο");
122     checkOneTerm(a, "γόη", "γοη"); // too short
123     // the two plural forms conflate
124     checkOneTerm(a, "γόητες", "γοητ");
125     checkOneTerm(a, "γοήτων", "γοητ");
126   }
127   
128   public void testFeminineNouns() throws Exception {
129     // -α/-ες,-ών
130     checkOneTerm(a, "φορά", "φορ");
131     checkOneTerm(a, "φοράς", "φορ");
132     checkOneTerm(a, "φορές", "φορ");
133     checkOneTerm(a, "φορών", "φορ");
134     
135     // -α/-ες,-ων
136     checkOneTerm(a, "αγελάδα", "αγελαδ");
137     checkOneTerm(a, "αγελάδας", "αγελαδ");
138     checkOneTerm(a, "αγελάδες", "αγελαδ");
139     checkOneTerm(a, "αγελάδων", "αγελαδ");
140     
141     // -η/-ες
142     checkOneTerm(a, "ζάχαρη", "ζαχαρ");
143     checkOneTerm(a, "ζάχαρης", "ζαχαρ");
144     checkOneTerm(a, "ζάχαρες", "ζαχαρ");
145     checkOneTerm(a, "ζαχάρεων", "ζαχαρ");
146     
147     // -η/-εις
148     checkOneTerm(a, "τηλεόραση", "τηλεορασ");
149     checkOneTerm(a, "τηλεόρασης", "τηλεορασ");
150     checkOneTerm(a, "τηλεοράσεις", "τηλεορασ");
151     checkOneTerm(a, "τηλεοράσεων", "τηλεορασ");
152     
153     // -α/-αδες
154     checkOneTerm(a, "μαμά", "μαμ");
155     checkOneTerm(a, "μαμάς", "μαμ");
156     checkOneTerm(a, "μαμάδες", "μαμ");
157     checkOneTerm(a, "μαμάδων", "μαμ");
158     
159     // -ος
160     checkOneTerm(a, "λεωφόρος", "λεωφορ");
161     checkOneTerm(a, "λεωφόρου", "λεωφορ");
162     checkOneTerm(a, "λεωφόρο", "λεωφορ");
163     checkOneTerm(a, "λεωφόρε", "λεωφορ");
164     checkOneTerm(a, "λεωφόροι", "λεωφορ");
165     checkOneTerm(a, "λεωφόρων", "λεωφορ");
166     checkOneTerm(a, "λεωφόρους", "λεωφορ");
167     
168     // -ου
169     checkOneTerm(a, "αλεπού", "αλεπ");
170     checkOneTerm(a, "αλεπούς", "αλεπ");
171     checkOneTerm(a, "αλεπούδες", "αλεπ");
172     checkOneTerm(a, "αλεπούδων", "αλεπ");
173     
174     // -έας/είς
175     // note: not all forms conflate
176     checkOneTerm(a, "γραμματέας", "γραμματε");
177     checkOneTerm(a, "γραμματέως", "γραμματ");
178     checkOneTerm(a, "γραμματέα", "γραμματε");
179     checkOneTerm(a, "γραμματείς", "γραμματ");
180     checkOneTerm(a, "γραμματέων", "γραμματ");
181   }
182   
183   public void testNeuterNouns() throws Exception {
184     // ending with -ο
185     // note: nom doesnt conflate
186     checkOneTerm(a, "βιβλίο", "βιβλι");
187     checkOneTerm(a, "βιβλίου", "βιβλ");
188     checkOneTerm(a, "βιβλία", "βιβλ");
189     checkOneTerm(a, "βιβλίων", "βιβλ");
190     
191     // ending with -ι
192     checkOneTerm(a, "πουλί", "πουλ");
193     checkOneTerm(a, "πουλιού", "πουλ");
194     checkOneTerm(a, "πουλιά", "πουλ");
195     checkOneTerm(a, "πουλιών", "πουλ");
196     
197     // ending with -α
198     // note: nom. doesnt conflate
199     checkOneTerm(a, "πρόβλημα", "προβλημ");
200     checkOneTerm(a, "προβλήματος", "προβλημα");
201     checkOneTerm(a, "προβλήματα", "προβλημα");
202     checkOneTerm(a, "προβλημάτων", "προβλημα");
203     
204     // ending with -ος/-ους
205     checkOneTerm(a, "πέλαγος", "πελαγ");
206     checkOneTerm(a, "πελάγους", "πελαγ");
207     checkOneTerm(a, "πελάγη", "πελαγ");
208     checkOneTerm(a, "πελάγων", "πελαγ");
209     
210     // ending with -ός/-ότος
211     checkOneTerm(a, "γεγονός", "γεγον");
212     checkOneTerm(a, "γεγονότος", "γεγον");
213     checkOneTerm(a, "γεγονότα", "γεγον");
214     checkOneTerm(a, "γεγονότων", "γεγον");
215     
216     // ending with -υ/-ιου
217     checkOneTerm(a, "βράδυ", "βραδ");
218     checkOneTerm(a, "βράδι", "βραδ");
219     checkOneTerm(a, "βραδιού", "βραδ");
220     checkOneTerm(a, "βράδια", "βραδ");
221     checkOneTerm(a, "βραδιών", "βραδ");
222     
223     // ending with -υ/-ατος
224     // note: nom. doesnt conflate
225     checkOneTerm(a, "δόρυ", "δορ");
226     checkOneTerm(a, "δόρατος", "δορατ");
227     checkOneTerm(a, "δόρατα", "δορατ");
228     checkOneTerm(a, "δοράτων", "δορατ");
229     
230     // ending with -ας
231     checkOneTerm(a, "κρέας", "κρε");
232     checkOneTerm(a, "κρέατος", "κρε");
233     checkOneTerm(a, "κρέατα", "κρε");
234     checkOneTerm(a, "κρεάτων", "κρε");
235     
236     // ending with -ως
237     checkOneTerm(a, "λυκόφως", "λυκοφω");
238     checkOneTerm(a, "λυκόφωτος", "λυκοφω");
239     checkOneTerm(a, "λυκόφωτα", "λυκοφω");
240     checkOneTerm(a, "λυκοφώτων", "λυκοφω");
241     
242     // ending with -ον/-ου
243     // note: nom. doesnt conflate
244     checkOneTerm(a, "μέσον", "μεσον");
245     checkOneTerm(a, "μέσου", "μεσ");
246     checkOneTerm(a, "μέσα", "μεσ");
247     checkOneTerm(a, "μέσων", "μεσ");
248     
249     // ending in -ον/-οντος
250     // note: nom. doesnt conflate
251     checkOneTerm(a, "ενδιαφέρον", "ενδιαφερον");
252     checkOneTerm(a, "ενδιαφέροντος", "ενδιαφεροντ");
253     checkOneTerm(a, "ενδιαφέροντα", "ενδιαφεροντ");
254     checkOneTerm(a, "ενδιαφερόντων", "ενδιαφεροντ");
255     
256     // ending with -εν/-εντος
257     checkOneTerm(a, "ανακοινωθέν", "ανακοινωθεν");
258     checkOneTerm(a, "ανακοινωθέντος", "ανακοινωθεντ");
259     checkOneTerm(a, "ανακοινωθέντα", "ανακοινωθεντ");
260     checkOneTerm(a, "ανακοινωθέντων", "ανακοινωθεντ");
261     
262     // ending with -αν/-αντος
263     checkOneTerm(a, "σύμπαν", "συμπ");
264     checkOneTerm(a, "σύμπαντος", "συμπαντ");
265     checkOneTerm(a, "σύμπαντα", "συμπαντ");
266     checkOneTerm(a, "συμπάντων", "συμπαντ");
267     
268     // ending with  -α/-ακτος
269     checkOneTerm(a, "γάλα", "γαλ");
270     checkOneTerm(a, "γάλακτος", "γαλακτ");
271     checkOneTerm(a, "γάλατα", "γαλατ");
272     checkOneTerm(a, "γαλάκτων", "γαλακτ");
273   }
274   
275   public void testAdjectives() throws Exception {
276     // ending with -ής, -ές/-είς, -ή
277     checkOneTerm(a, "συνεχής", "συνεχ");
278     checkOneTerm(a, "συνεχούς", "συνεχ");
279     checkOneTerm(a, "συνεχή", "συνεχ");
280     checkOneTerm(a, "συνεχών", "συνεχ");
281     checkOneTerm(a, "συνεχείς", "συνεχ");
282     checkOneTerm(a, "συνεχές", "συνεχ");
283     
284     // ending with -ης, -ες/-εις, -η
285     checkOneTerm(a, "συνήθης", "συνηθ");
286     checkOneTerm(a, "συνήθους", "συνηθ");
287     checkOneTerm(a, "συνήθη", "συνηθ");
288     // note: doesn't conflate
289     checkOneTerm(a, "συνήθεις", "συν");
290     checkOneTerm(a, "συνήθων", "συνηθ");
291     checkOneTerm(a, "σύνηθες", "συνηθ");
292     
293     // ending with -υς, -υ/-εις, -ια
294     checkOneTerm(a, "βαθύς", "βαθ");
295     checkOneTerm(a, "βαθέος", "βαθε");
296     checkOneTerm(a, "βαθύ", "βαθ");
297     checkOneTerm(a, "βαθείς", "βαθ");
298     checkOneTerm(a, "βαθέων", "βαθ");
299     
300     checkOneTerm(a, "βαθιά", "βαθ");
301     checkOneTerm(a, "βαθιάς", "βαθι");
302     checkOneTerm(a, "βαθιές", "βαθι");
303     checkOneTerm(a, "βαθιών", "βαθ");
304     
305     checkOneTerm(a, "βαθέα", "βαθε");
306     
307     // comparative/superlative
308     checkOneTerm(a, "ψηλός", "ψηλ");
309     checkOneTerm(a, "ψηλότερος", "ψηλ");
310     checkOneTerm(a, "ψηλότατος", "ψηλ");
311     
312     checkOneTerm(a, "ωραίος", "ωραι");
313     checkOneTerm(a, "ωραιότερος", "ωραι");
314     checkOneTerm(a, "ωραιότατος", "ωραι");
315     
316     checkOneTerm(a, "επιεικής", "επιεικ");
317     checkOneTerm(a, "επιεικέστερος", "επιεικ");
318     checkOneTerm(a, "επιεικέστατος", "επιεικ");
319   }
320   
321
322   public void testVerbs() throws Exception {
323     // note, past/present verb stems will not conflate (from the paper)
324     //-ω,-α/-.ω,-.α
325     checkOneTerm(a, "ορίζω", "οριζ");
326     checkOneTerm(a, "όριζα", "οριζ");
327     checkOneTerm(a, "όριζε", "οριζ");
328     checkOneTerm(a, "ορίζοντας", "οριζ");
329     checkOneTerm(a, "ορίζομαι", "οριζ");
330     checkOneTerm(a, "οριζόμουν", "οριζ");
331     checkOneTerm(a, "ορίζεσαι", "οριζ");
332     
333     checkOneTerm(a, "όρισα", "ορισ");
334     checkOneTerm(a, "ορίσω", "ορισ");
335     checkOneTerm(a, "όρισε", "ορισ");
336     checkOneTerm(a, "ορίσει", "ορισ");
337     
338     checkOneTerm(a, "ορίστηκα", "οριστ");
339     checkOneTerm(a, "οριστώ", "οριστ");
340     checkOneTerm(a, "οριστείς", "οριστ");
341     checkOneTerm(a, "οριστεί", "οριστ");
342     
343     checkOneTerm(a, "ορισμένο", "ορισμεν");
344     checkOneTerm(a, "ορισμένη", "ορισμεν");
345     checkOneTerm(a, "ορισμένος", "ορισμεν");
346     
347     // -ω,-α/-ξω,-ξα
348     checkOneTerm(a, "ανοίγω", "ανοιγ");
349     checkOneTerm(a, "άνοιγα", "ανοιγ");
350     checkOneTerm(a, "άνοιγε", "ανοιγ");
351     checkOneTerm(a, "ανοίγοντας", "ανοιγ");
352     checkOneTerm(a, "ανοίγομαι", "ανοιγ");
353     checkOneTerm(a, "ανοιγόμουν", "ανοιγ");
354     
355     checkOneTerm(a, "άνοιξα", "ανοιξ");
356     checkOneTerm(a, "ανοίξω", "ανοιξ");
357     checkOneTerm(a, "άνοιξε", "ανοιξ");
358     checkOneTerm(a, "ανοίξει", "ανοιξ");
359     
360     checkOneTerm(a, "ανοίχτηκα", "ανοιχτ");
361     checkOneTerm(a, "ανοιχτώ", "ανοιχτ");
362     checkOneTerm(a, "ανοίχτηκα", "ανοιχτ");
363     checkOneTerm(a, "ανοιχτείς", "ανοιχτ");
364     checkOneTerm(a, "ανοιχτεί", "ανοιχτ");
365     
366     checkOneTerm(a, "ανοίξου", "ανοιξ");
367     
368     //-ώ/-άω,-ούσα/-άσω,-ασα
369     checkOneTerm(a, "περνώ", "περν");
370     checkOneTerm(a, "περνάω", "περν");
371     checkOneTerm(a, "περνούσα", "περν");
372     checkOneTerm(a, "πέρναγα", "περν");
373     checkOneTerm(a, "πέρνα", "περν");
374     checkOneTerm(a, "περνώντας", "περν");
375     
376     checkOneTerm(a, "πέρασα", "περασ");
377     checkOneTerm(a, "περάσω", "περασ");
378     checkOneTerm(a, "πέρασε", "περασ");
379     checkOneTerm(a, "περάσει", "περασ");
380     
381     checkOneTerm(a, "περνιέμαι", "περν");
382     checkOneTerm(a, "περνιόμουν", "περν");
383    
384     checkOneTerm(a, "περάστηκα", "περαστ");
385     checkOneTerm(a, "περαστώ", "περαστ");
386     checkOneTerm(a, "περαστείς", "περαστ");
387     checkOneTerm(a, "περαστεί", "περαστ");
388
389     checkOneTerm(a, "περασμένο", "περασμεν");
390     checkOneTerm(a, "περασμένη", "περασμεν");
391     checkOneTerm(a, "περασμένος", "περασμεν");
392     
393     // -ώ/-άω,-ούσα/-άξω,-αξα
394     checkOneTerm(a, "πετώ", "πετ");
395     checkOneTerm(a, "πετάω", "πετ");
396     checkOneTerm(a, "πετούσα", "πετ");
397     checkOneTerm(a, "πέταγα", "πετ");
398     checkOneTerm(a, "πέτα", "πετ");
399     checkOneTerm(a, "πετώντας", "πετ");
400     checkOneTerm(a, "πετιέμαι", "πετ");
401     checkOneTerm(a, "πετιόμουν", "πετ");
402     
403     checkOneTerm(a, "πέταξα", "πεταξ");
404     checkOneTerm(a, "πετάξω", "πεταξ");
405     checkOneTerm(a, "πέταξε", "πεταξ");
406     checkOneTerm(a, "πετάξει", "πεταξ");
407
408     checkOneTerm(a, "πετάχτηκα", "πεταχτ");
409     checkOneTerm(a, "πεταχτώ", "πεταχτ");
410     checkOneTerm(a, "πεταχτείς", "πεταχτ");
411     checkOneTerm(a, "πεταχτεί", "πεταχτ");
412     
413     checkOneTerm(a, "πεταμένο", "πεταμεν");
414     checkOneTerm(a, "πεταμένη", "πεταμεν");
415     checkOneTerm(a, "πεταμένος", "πεταμεν");
416     
417     // -ώ/-άω,-ούσα / -έσω,-εσα
418     checkOneTerm(a, "καλώ", "καλ");
419     checkOneTerm(a, "καλούσα", "καλ");
420     checkOneTerm(a, "καλείς", "καλ");
421     checkOneTerm(a, "καλώντας", "καλ");
422     
423     checkOneTerm(a, "καλούμαι", "καλ");
424     // pass. imperfect /imp. progressive doesnt conflate
425     checkOneTerm(a, "καλούμουν", "καλουμ");
426     checkOneTerm(a, "καλείσαι", "καλεισα");
427     
428     checkOneTerm(a, "καλέστηκα", "καλεστ");
429     checkOneTerm(a, "καλεστώ", "καλεστ");
430     checkOneTerm(a, "καλεστείς", "καλεστ");
431     checkOneTerm(a, "καλεστεί", "καλεστ");
432     
433     checkOneTerm(a, "καλεσμένο", "καλεσμεν");
434     checkOneTerm(a, "καλεσμένη", "καλεσμεν");
435     checkOneTerm(a, "καλεσμένος", "καλεσμεν");
436     
437     checkOneTerm(a, "φορώ", "φορ");
438     checkOneTerm(a, "φοράω", "φορ");
439     checkOneTerm(a, "φορούσα", "φορ");
440     checkOneTerm(a, "φόραγα", "φορ");
441     checkOneTerm(a, "φόρα", "φορ");
442     checkOneTerm(a, "φορώντας", "φορ");
443     checkOneTerm(a, "φοριέμαι", "φορ");
444     checkOneTerm(a, "φοριόμουν", "φορ");
445     checkOneTerm(a, "φοριέσαι", "φορ");
446     
447     checkOneTerm(a, "φόρεσα", "φορεσ");
448     checkOneTerm(a, "φορέσω", "φορεσ");
449     checkOneTerm(a, "φόρεσε", "φορεσ");
450     checkOneTerm(a, "φορέσει", "φορεσ");
451     
452     checkOneTerm(a, "φορέθηκα", "φορεθ");
453     checkOneTerm(a, "φορεθώ", "φορεθ");
454     checkOneTerm(a, "φορεθείς", "φορεθ");
455     checkOneTerm(a, "φορεθεί", "φορεθ");
456     
457     checkOneTerm(a, "φορεμένο", "φορεμεν");
458     checkOneTerm(a, "φορεμένη", "φορεμεν");
459     checkOneTerm(a, "φορεμένος", "φορεμεν");
460     
461     // -ώ/-άω,-ούσα / -ήσω,-ησα
462     checkOneTerm(a, "κρατώ", "κρατ");
463     checkOneTerm(a, "κρατάω", "κρατ");
464     checkOneTerm(a, "κρατούσα", "κρατ");
465     checkOneTerm(a, "κράταγα", "κρατ");
466     checkOneTerm(a, "κράτα", "κρατ");
467     checkOneTerm(a, "κρατώντας", "κρατ");
468     
469     checkOneTerm(a, "κράτησα", "κρατ");
470     checkOneTerm(a, "κρατήσω", "κρατ");
471     checkOneTerm(a, "κράτησε", "κρατ");
472     checkOneTerm(a, "κρατήσει", "κρατ");
473     
474     checkOneTerm(a, "κρατούμαι", "κρατ");
475     checkOneTerm(a, "κρατιέμαι", "κρατ");
476     // this imperfect form doesnt conflate 
477     checkOneTerm(a, "κρατούμουν", "κρατουμ");
478     checkOneTerm(a, "κρατιόμουν", "κρατ");
479     // this imp. prog form doesnt conflate
480     checkOneTerm(a, "κρατείσαι", "κρατεισα");
481
482     checkOneTerm(a, "κρατήθηκα", "κρατ");
483     checkOneTerm(a, "κρατηθώ", "κρατ");
484     checkOneTerm(a, "κρατηθείς", "κρατ");
485     checkOneTerm(a, "κρατηθεί", "κρατ");
486     checkOneTerm(a, "κρατήσου", "κρατ");
487     
488     checkOneTerm(a, "κρατημένο", "κρατημεν");
489     checkOneTerm(a, "κρατημένη", "κρατημεν");
490     checkOneTerm(a, "κρατημένος", "κρατημεν");
491     
492     // -.μαι,-.μουν / -.ώ,-.ηκα
493     checkOneTerm(a, "κοιμάμαι", "κοιμ");
494     checkOneTerm(a, "κοιμόμουν", "κοιμ");
495     checkOneTerm(a, "κοιμάσαι", "κοιμ");
496     
497     checkOneTerm(a, "κοιμήθηκα", "κοιμ");
498     checkOneTerm(a, "κοιμηθώ", "κοιμ");
499     checkOneTerm(a, "κοιμήσου", "κοιμ");
500     checkOneTerm(a, "κοιμηθεί", "κοιμ");
501     
502     checkOneTerm(a, "κοιμισμένο", "κοιμισμεν");
503     checkOneTerm(a, "κοιμισμένη", "κοιμισμεν");
504     checkOneTerm(a, "κοιμισμένος", "κοιμισμεν");
505   }
506   
507   public void testExceptions() throws Exception {
508     checkOneTerm(a, "καθεστώτα", "καθεστ");
509     checkOneTerm(a, "καθεστώτος", "καθεστ");
510     checkOneTerm(a, "καθεστώς", "καθεστ");
511     checkOneTerm(a, "καθεστώτων", "καθεστ");
512     
513     checkOneTerm(a, "χουμε", "χουμ");
514     checkOneTerm(a, "χουμ", "χουμ");
515     
516     checkOneTerm(a, "υποταγεσ", "υποταγ");
517     checkOneTerm(a, "υποταγ", "υποταγ");
518     
519     checkOneTerm(a, "εμετε", "εμετ");
520     checkOneTerm(a, "εμετ", "εμετ");
521     
522     checkOneTerm(a, "αρχοντασ", "αρχοντ");
523     checkOneTerm(a, "αρχοντων", "αρχοντ");
524   }
525 }