]> gitweb.fperrin.net Git - DictionaryPC.git/commitdiff
go
authorthadh <thadh@THADH-MTV.ad.corp.google.com>
Fri, 29 May 2009 21:57:56 +0000 (14:57 -0700)
committerthadh <thadh@THADH-MTV.ad.corp.google.com>
Fri, 29 May 2009 21:57:56 +0000 (14:57 -0700)
src/com/hughes/android/dictionary/DictionaryBuilder.java
src/com/hughes/android/dictionary/DictionaryTest.java

index 820298ebc4bd3a4fee09399293e79fd1ae179b60..8ff741e6f05053de707ad150a28aede1200cdaf4 100755 (executable)
@@ -29,7 +29,7 @@ public class DictionaryBuilder {
     final String dictOutFilename = args[0];\r
 \r
     final Dictionary dict = new Dictionary("de-en.txt - a German-English dictionary\n" +\r
-               "Version: 1.6, 2009-04-16\n" +\r
+               "Version: devel, 2009-04-17\n" +\r
                "Source: http://dict.tu-chemnitz.de/\n" +\r
                "Thanks to Frank Richter.", Language.DE, Language.EN);\r
     System.out.println(Charset.forName("Cp1252"));\r
@@ -108,7 +108,7 @@ public class DictionaryBuilder {
     Collections.sort(sortedIndex, new Comparator<TokenData>() {\r
       @Override\r
       public int compare(TokenData tokenData0, TokenData tokenData1) {\r
-        return dict.languageDatas[lang].language.tokenComparator.compare(tokenData0.token, tokenData1.token);\r
+        return dict.languageDatas[lang].language.sortComparator.compare(tokenData0.token, tokenData1.token);\r
       }});\r
 \r
     System.out.println("Sorting entries within each TokenData...");\r
index c09338a2b5425fe0a8035c81c7b4ed97ea9db9d2..1578fd2b19553ba2f55af0f28e67c54260d560e7 100755 (executable)
@@ -6,8 +6,9 @@ import java.io.RandomAccessFile;
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.Collections;\r
+import java.util.LinkedHashSet;\r
 import java.util.List;\r
-import java.util.Random;\r
+import java.util.Set;\r
 import java.util.concurrent.atomic.AtomicBoolean;\r
 \r
 import junit.framework.TestCase;\r
@@ -84,16 +85,18 @@ public class DictionaryTest extends TestCase {
   }\r
   \r
   public void testTextNorm() throws IOException {\r
+    System.out.println("\n\ntestTextNorm");\r
     final List<Entry> entries = Arrays.asList(\r
         Entry.parseFromLine("Hund {m} :: dog", true),\r
+        Entry.parseFromLine("'CHRISTOS' :: doh", true),\r
         Entry.parseFromLine("\"Pick-up\"-Presse {f} :: baler", true),\r
         Entry.parseFromLine("(Ach was), echt? [auch ironisch] :: No shit! [also ironic]", true),\r
         Entry.parseFromLine("(akuter) Myokardinfarkt {m} <AMI / MI> :: (acute) myocardial infarction <AMI / MI>", true),\r
         Entry.parseFromLine("(reine) Vermutung {f} :: guesswork", true),\r
         Entry.parseFromLine("(mit) 6:1 vorne liegen :: to be 6-1 up [football]", true),\r
         Entry.parseFromLine("(auf) den Knopf drücken [auch fig.: auslösen] :: to push the button [also fig.: initiate]", false),\r
-        Entry.parseFromLine("Adjektiv {n} /Adj./; Eigenschaftswort {n} [gramm.] | Adjektive {pl}; Eigenschaftswörter {pl} :: adjective /adj./ | adjectives", true),\r
-        Entry.parseFromLine("Älteste {m,f}; Ältester :: oldest; eldest", true),\r
+        Entry.parseFromLine("Adjektiv {n} /Adj./; Eigenschaftswort {n} [gramm.] | Adjektive {pl}; Eigenschaftswoerter {pl} :: adjective /adj./ | adjectives", true),\r
+        Entry.parseFromLine("Älteste {m,f}; Ältester :: oldest; eldest", true),\r
         Entry.parseFromLine("\"...\", schloss er an. :: '...,' he added.", true),\r
         Entry.parseFromLine("besonderer | besondere | besonderes :: extra", false),\r
         Entry.parseFromLine("| zu Pferde; zu Pferd | reiten :: horseback | on horseback | go on horseback", true),\r
@@ -101,7 +104,7 @@ public class DictionaryTest extends TestCase {
         );\r
 \r
     assertFalse(entries.contains(null));\r
-\r
+    \r
     // Hyphenated words get put both multiple listings.\r
 \r
     final Dictionary dict = new Dictionary("test", Language.DE, Language.EN);\r
@@ -109,23 +112,31 @@ public class DictionaryTest extends TestCase {
     DictionaryBuilder.createIndex(dict, Entry.LANG1);\r
     DictionaryBuilder.createIndex(dict, Entry.LANG2);\r
     \r
-    for (int l = 0; l <= 1; l++) {\r
-      final LanguageData languageData = dict.languageDatas[l];\r
+    for (int lang = 0; lang <= 1; lang++) {\r
+      final LanguageData languageData = dict.languageDatas[lang];\r
       System.out.println("\n" + languageData.language);\r
+      final Set<String> words = new LinkedHashSet<String>();\r
       for (int i = 0; i < languageData.sortedIndex.size(); i++) {\r
         final IndexEntry indexEntry = languageData.sortedIndex.get(i);\r
         System.out.println(indexEntry);\r
+        words.add(indexEntry.word);\r
+      }\r
+      if (lang == 0) {\r
+        assertTrue(words.contains("CHRISTOS"));\r
+        assertTrue(words.contains("akuter"));\r
+      } else {\r
+        assertTrue(words.contains("6-1"));\r
       }\r
     }\r
 \r
   }\r
   \r
   public void testGermanSort() {\r
-    assertEquals("grosformat", Language.DE.normalizeTokenForSort("Grosformat"));\r
+    assertEquals("aüÄ", Language.DE.textNorm("aueAe"));\r
     final List<String> words = Arrays.asList(\r
-        "er-ben",\r
         "erben",\r
         "Erben",\r
+        "er-ben",\r
         "Erbse",\r
         "Erbsen",\r
         "essen",\r
@@ -140,23 +151,31 @@ public class DictionaryTest extends TestCase {
         "Großpoos",\r
         "hulle",\r
         "Hulle",\r
-        "Hum",\r
+        "hülle",\r
         "huelle",\r
+        "Hülle",\r
         "Huelle",\r
-        "hülle",\r
-        "Hülle"\r
+        "Hum"\r
         );\r
+    assertEquals(0, Language.DE.sortComparator.compare("hülle", "huelle"));\r
+    assertEquals(0, Language.DE.sortComparator.compare("huelle", "hülle"));\r
+    \r
+    assertEquals(-1, Language.DE.sortComparator.compare("hülle", "Hülle"));\r
+    assertEquals(0, Language.DE.findComparator.compare("hülle", "Hülle"));\r
+    assertEquals(-1, Language.DE.findComparator.compare("hulle", "Hülle"));\r
+\r
+    \r
     for (final String s : words) {\r
-      System.out.println(s + "\t" + Language.DE.normalizeTokenForSort(s));\r
+      System.out.println(s + "\t" + Language.DE.textNorm(s));\r
     }\r
-    final List<String> shuffled = new ArrayList<String>(words);\r
-    Collections.shuffle(shuffled, new Random(0));\r
-    Collections.sort(shuffled, Language.DE.tokenComparator);\r
-    System.out.println(shuffled.toString());\r
+    final List<String> sorted = new ArrayList<String>(words);\r
+//    Collections.shuffle(shuffled, new Random(0));\r
+    Collections.sort(sorted, Language.DE.sortComparator);\r
+    System.out.println(sorted.toString());\r
     for (int i = 0; i < words.size(); ++i) {\r
-      assertEquals(words.get(i), shuffled.get(i));\r
+      System.out.println(words.get(i) + "\t" + sorted.get(i));\r
+      assertEquals(words.get(i), sorted.get(i));\r
     }\r
   }\r
 \r
-\r
 }\r