]> gitweb.fperrin.net Git - DictionaryPC.git/blob - src/com/hughes/android/dictionary/DictionaryTest.java
go
[DictionaryPC.git] / src / com / hughes / android / dictionary / DictionaryTest.java
1 package com.hughes.android.dictionary;\r
2 \r
3 import java.io.File;\r
4 import java.io.IOException;\r
5 import java.io.RandomAccessFile;\r
6 import java.util.Arrays;\r
7 import java.util.List;\r
8 import java.util.concurrent.atomic.AtomicBoolean;\r
9 \r
10 import junit.framework.TestCase;\r
11 \r
12 import com.hughes.android.dictionary.Dictionary.IndexEntry;\r
13 import com.hughes.android.dictionary.Dictionary.LanguageData;\r
14 import com.hughes.android.dictionary.Dictionary.Row;\r
15 \r
16 public class DictionaryTest extends TestCase {\r
17 \r
18   public void testDictionary() throws IOException {\r
19     final File file = File.createTempFile("asdf", "asdf");\r
20     file.deleteOnExit();\r
21 \r
22 //    final Dictionary goldenDict;\r
23     final List<Entry> entries = Arrays.asList(\r
24         Entry.parseFromLine("der Hund :: the dog", false),\r
25         Entry.parseFromLine("Die grosse Katze :: The big cat", false), \r
26         Entry.parseFromLine("die Katze :: the cat", false),\r
27         Entry.parseFromLine("gross :: big", false),\r
28         Entry.parseFromLine("Dieb :: thief", false),\r
29         Entry.parseFromLine("rennen :: run", false));\r
30 \r
31     {\r
32       final Dictionary dict = new Dictionary(Language.DE, Language.EN);\r
33       dict.entries.addAll(entries);\r
34       DictionaryBuilder.createIndex(dict, Entry.LANG1);\r
35       DictionaryBuilder.createIndex(dict, Entry.LANG2);\r
36       final RandomAccessFile raf = new RandomAccessFile(file, "rw");\r
37       dict.write(raf);\r
38       raf.close();\r
39       \r
40 //      goldenDict = dict;\r
41     }\r
42 \r
43     final RandomAccessFile raf = new RandomAccessFile(file, "r");\r
44     final Dictionary dict = new Dictionary(raf);\r
45     \r
46     assertEquals(entries, dict.entries);\r
47     \r
48     assertEquals("der", dict.languageDatas[0].sortedIndex.get(0).word);\r
49     assertEquals("Die", dict.languageDatas[0].sortedIndex.get(1).word);\r
50     \r
51     for (final IndexEntry indexEntry : dict.languageDatas[0].sortedIndex) {\r
52       System.out.println(indexEntry);\r
53     }\r
54 \r
55     int rowCount = 0;\r
56     for (final Row row : dict.languageDatas[0].rows) {\r
57       if (row.index >= 0) {\r
58         System.out.println("  " + rowCount + ":" + dict.entries.get(row.index));\r
59       } else {\r
60         System.out.println(rowCount + ":" + dict.languageDatas[0].sortedIndex.get(-row.index - 1));\r
61       }\r
62       ++rowCount;\r
63     }\r
64 \r
65     for (int l = 0; l <= 1; l++) {\r
66       final LanguageData languageData = dict.languageDatas[l];\r
67       for (int i = 0; i < languageData.sortedIndex.size(); i++) {\r
68         final IndexEntry indexEntry = languageData.sortedIndex.get(i);\r
69         if (indexEntry.word.toLowerCase().equals("dieb"))\r
70           System.out.println();\r
71         final IndexEntry lookedUpEntry = languageData.sortedIndex.get(languageData.lookup(indexEntry.word, new AtomicBoolean(false)));\r
72         if (!indexEntry.word.toLowerCase().equals(lookedUpEntry.word.toLowerCase()))\r
73           System.out.println();\r
74         assertEquals(indexEntry.word.toLowerCase(), lookedUpEntry.word.toLowerCase());\r
75       }\r
76     }\r
77     \r
78     assertEquals("Die", dict.languageDatas[0].sortedIndex.get(dict.languageDatas[0].lookup("die", new AtomicBoolean())).word);\r
79 \r
80   }\r
81   \r
82   public void testTextNorm() throws IOException {\r
83     final List<Entry> entries = Arrays.asList(\r
84         Entry.parseFromLine("Hund {m} :: dog", true),\r
85         Entry.parseFromLine("\"Pick-up\"-Presse {f} :: baler", true),\r
86         Entry.parseFromLine("(Ach was), echt? [auch ironisch] :: No shit! [also ironic]", true),\r
87         Entry.parseFromLine("(akuter) Myokardinfarkt {m} <AMI / MI> :: (acute) myocardial infarction <AMI / MI>", true),\r
88         Entry.parseFromLine("(reine) Vermutung {f} :: guesswork", true),\r
89         Entry.parseFromLine("(mit) 6:1 vorne liegen :: to be 6-1 up [football]", true),\r
90         Entry.parseFromLine("(auf) den Knopf drücken [auch fig.: auslösen] :: to push the button [also fig.: initiate]", false),\r
91         Entry.parseFromLine("Adjektiv {n} /Adj./; Eigenschaftswort {n} [gramm.] | Adjektive {pl}; Eigenschaftswörter {pl} :: adjective /adj./ | adjectives", true),\r
92         Entry.parseFromLine("Älteste {m,f}; Ältester :: oldest; eldest", true),\r
93         Entry.parseFromLine("\"...\", schloss er an. :: '...,' he added.", true),\r
94         Entry.parseFromLine("besonderer | besondere | besonderes :: extra", false),\r
95         Entry.parseFromLine("| zu Pferde; zu Pferd | reiten :: horseback | on horseback | go on horseback", true),\r
96         Entry.parseFromLine("Hauptaugenmerk {m} | sein Hauptaugenmerk richten auf ::  | to focus (one's) attention on", true)\r
97         );\r
98 \r
99     assertFalse(entries.contains(null));\r
100 \r
101     // Hyphenated words get put both multiple listings.\r
102 \r
103     final Dictionary dict = new Dictionary(Language.DE, Language.EN);\r
104     dict.entries.addAll(entries);\r
105     DictionaryBuilder.createIndex(dict, Entry.LANG1);\r
106     DictionaryBuilder.createIndex(dict, Entry.LANG2);\r
107     \r
108     for (int l = 0; l <= 1; l++) {\r
109       final LanguageData languageData = dict.languageDatas[l];\r
110       System.out.println("\n" + languageData.language);\r
111       for (int i = 0; i < languageData.sortedIndex.size(); i++) {\r
112         final IndexEntry indexEntry = languageData.sortedIndex.get(i);\r
113         System.out.println(indexEntry);\r
114       }\r
115     }\r
116 \r
117   }\r
118 \r
119 \r
120 }\r