]> gitweb.fperrin.net Git - DictionaryPC.git/blobdiff - src/com/hughes/android/dictionary/engine/DictionaryTest.java
go
[DictionaryPC.git] / src / com / hughes / android / dictionary / engine / DictionaryTest.java
index 59bb031b4ec67a4c9113eca8f3c9dc946ef2cba7..d4ca69f00f6ddbf73ec5e93e76c04c6c1054b2d5 100644 (file)
@@ -2,10 +2,15 @@ package com.hughes.android.dictionary.engine;
 
 import java.io.IOException;
 import java.io.RandomAccessFile;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import junit.framework.TestCase;
 
+
 public class DictionaryTest extends TestCase {
   
   RandomAccessFile raf;
@@ -47,10 +52,23 @@ public class DictionaryTest extends TestCase {
       assertEquals(indexEntry.token.toLowerCase(), row.getToken().toLowerCase());
     }
 
+    // TODO: maybe if user types capitalization, use it.
     assertEquals("aaac", deIndex.find("AAAC", new AtomicBoolean(false)).getToken());
     assertEquals("aaac", deIndex.find("aaac", new AtomicBoolean(false)).getToken());
     assertEquals("aaac", deIndex.find("AAAc", new AtomicBoolean(false)).getToken());
     assertEquals("aaac", deIndex.find("aaac", new AtomicBoolean(false)).getToken());
+    
+    // Before the beginning.
+    assertEquals("40", deIndex.find("__", new AtomicBoolean(false)).getToken());
+    
+    // After the end.
+    assertEquals("Zweckorientiertheit", deIndex.find("ZZZZZ", new AtomicBoolean(false)).getToken());
+
+    assertEquals("aaac", deIndex.find("aaaca", new AtomicBoolean(false)).getToken());
+    
+    assertEquals("überprüfe", deIndex.find("ueberprüfe", new AtomicBoolean(false)).getToken());
+    assertEquals("überprüfe", deIndex.find("ueberpruefe", new AtomicBoolean(false)).getToken());
+
   }
   
   public void testGermanTokenRows() {
@@ -76,7 +94,83 @@ public class DictionaryTest extends TestCase {
       // This will break if the Row cache isn't big enough.
       assertEquals(lastTokenRow, row.getTokenRow(false));
     }
+  }
+  
+  @SuppressWarnings("unchecked")
+  public void testGermanSort() {
+    assertEquals("aüÄÄ", Language.de.textNorm("aueAeAE", false));
+    final List<String> words = Arrays.asList(
+        "er-ben",
+        "erben",
+        "Erben",
+        "Erbse",
+        "Erbsen",
+        "essen",
+        "Essen",
+        "Grosformat",
+        "Grosformats",
+        "Grossformat",
+        "Großformat",
+        "Grossformats",
+        "Großformats",
+        "Großpoo",
+        "Großpoos",
+        "hulle",
+        "Hulle",
+        "hülle",
+        "huelle",
+        "Hülle",
+        "Huelle",
+        "Hum"
+        );
+    assertEquals(0, Language.de.sortComparator.compare("hülle", "huelle"));
+    assertEquals(0, Language.de.sortComparator.compare("huelle", "hülle"));
+    
+    assertEquals(-1, Language.de.sortComparator.compare("hülle", "Hülle"));
+    assertEquals(0, Language.de.findComparator.compare("hülle", "Hülle"));
+    assertEquals(-1, Language.de.findComparator.compare("hulle", "Hülle"));
+
+    
+    for (final String s : words) {
+      System.out.println(s + "\t" + Language.de.textNorm(s, false));
+    }
+    final List<String> sorted = new ArrayList<String>(words);
+//    Collections.shuffle(shuffled, new Random(0));
+    Collections.sort(sorted, Language.de.sortComparator);
+    System.out.println(sorted.toString());
+    for (int i = 0; i < words.size(); ++i) {
+      System.out.println(words.get(i) + "\t" + sorted.get(i));
+      assertEquals(words.get(i), sorted.get(i));
+    }
+  }
 
+  @SuppressWarnings("unchecked")
+  public void testEnglishSort() {
+
+    final List<String> words = Arrays.asList(
+        "pre-print", 
+        "preppie", 
+        "preppy",
+        "preprocess");
+    
+    final List<String> sorted = new ArrayList<String>(words);
+    Collections.sort(sorted, Language.en.getSortCollator());
+    for (int i = 0; i < words.size(); ++i) {
+      if (i > 0) {
+        assertTrue(Language.en.getSortCollator().compare(words.get(i-1), words.get(i)) < 0);
+      }
+      System.out.println(words.get(i) + "\t" + sorted.get(i));
+      assertEquals(words.get(i), sorted.get(i));
+    }
+    
+    assertTrue(Language.en.getSortCollator().compare("pre-print", "preppy") < 0);
+
+  }
+  
+  public void testLanguage() {
+    assertEquals(Language.de, Language.lookup("de"));
+    assertEquals(Language.en, Language.lookup("en"));
+    assertEquals("es", Language.lookup("es").getSymbol());
   }