]> gitweb.fperrin.net Git - DictionaryPC.git/blob - src/com/hughes/android/dictionary/engine/LanguageTest.java
go
[DictionaryPC.git] / src / com / hughes / android / dictionary / engine / LanguageTest.java
1 package com.hughes.android.dictionary.engine;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.Collections;
6 import java.util.List;
7
8 import junit.framework.TestCase;
9
10 import com.ibm.icu.text.Transliterator;
11
12 public class LanguageTest extends TestCase {
13   
14   public void testGermanSort() {
15     final Transliterator normalizer = Transliterator.createFromRules("", Language.de.getDefaultNormalizerRules(), Transliterator.FORWARD);
16     assertEquals("aüääss", normalizer.transform("aueAeAEß"));
17     final List<String> words = Arrays.asList(
18         "er-ben",
19         "erben",
20         "Erben",
21         "Erbse",
22         "Erbsen",
23         "essen",
24         "Essen",
25         "Grosformat",
26         "Grosformats",
27         "Grossformat",
28         "Großformat",
29         "Grossformats",
30         "Großformats",
31         "Großpoo",
32         "Großpoos",
33         "Hörvermögen",
34         "Hörweite",
35         "hos",
36         "Höschen",
37         "Hostel",
38         "hulle",
39         "Hulle",
40         "huelle",
41         "Huelle",
42         "hülle",
43         "Hülle",
44         "Huellen",
45         "Hüllen",
46         "Hum"
47         );
48     final NormalizeComparator comparator = new NormalizeComparator(normalizer, Language.de.getCollator());
49     assertEquals(1, comparator.compare("hülle", "huelle"));
50     assertEquals(-1, comparator.compare("huelle", "hülle"));
51     
52     assertEquals(-1, comparator.compare("hülle", "Hülle"));
53     
54     assertEquals("hülle", normalizer.transform("Hülle"));
55     assertEquals("hulle", normalizer.transform("Hulle"));
56
57     
58     final List<String> sorted = new ArrayList<String>(words);
59 //    Collections.shuffle(shuffled, new Random(0));
60     Collections.sort(sorted, comparator);
61     System.out.println(sorted.toString());
62     for (int i = 0; i < words.size(); ++i) {
63       System.out.println(words.get(i) + "\t" + sorted.get(i));
64       assertEquals(words.get(i), sorted.get(i));
65     }
66   }
67
68   public void testEnglishSort() {
69     final Transliterator normalizer = Transliterator.createFromRules("", Language.en.getDefaultNormalizerRules(), Transliterator.FORWARD);
70
71     final List<String> words = Arrays.asList(
72         "pre-print", 
73         "preppie", 
74         "preppy",
75         "preprocess");
76     
77     final List<String> sorted = new ArrayList<String>(words);
78     final NormalizeComparator comparator = new NormalizeComparator(normalizer, Language.en.getCollator());
79     Collections.sort(sorted, comparator);
80     for (int i = 0; i < words.size(); ++i) {
81       if (i > 0) {
82         assertTrue(comparator.compare(words.get(i-1), words.get(i)) < 0);
83       }
84       System.out.println(words.get(i) + "\t" + sorted.get(i));
85       assertEquals(words.get(i), sorted.get(i));
86     }
87     
88     assertTrue(comparator.compare("pre-print", "preppy") < 0);
89
90   }
91   
92   public void testLanguage() {
93     assertEquals(Language.de, Language.lookup("de"));
94     assertEquals(Language.en, Language.lookup("en"));
95     assertEquals("es", Language.lookup("es").getSymbol());
96   }
97
98   public void testTextNorm() {
99     //final Transliterator transliterator = Transliterator.getInstance("Any-Latin; Upper; Lower; 'oe' > 'o'; NFD; [:Nonspacing Mark:] Remove; NFC", Transliterator.FORWARD);
100     final Transliterator transliterator = Transliterator.createFromRules("", ":: Any-Latin; :: Upper; :: Lower; 'oe' > 'o'; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;", Transliterator.FORWARD);
101     assertEquals("hoschen", transliterator.transliterate("Höschen"));
102     assertEquals("hoschen", transliterator.transliterate("Hoeschen"));
103     assertEquals("grosspoo", transliterator.transliterate("Großpoo"));
104
105     assertEquals("kyanpasu", transliterator.transliterate("キャンパス"));
106     assertEquals("alphabetikos katalogos", transliterator.transliterate("Αλφαβητικός Κατάλογος"));
107     assertEquals("biologiceskom", transliterator.transliterate("биологическом"));
108   }
109
110
111
112 }