]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/DictionaryActivityTest.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryActivityTest.java
1 package com.hughes.android.dictionary;\r
2 \r
3 import com.hughes.android.dictionary.engine.Language;\r
4 \r
5 import android.test.ActivityInstrumentationTestCase2;\r
6 \r
7 public class DictionaryActivityTest extends ActivityInstrumentationTestCase2<DictionaryActivity> {\r
8 \r
9   public DictionaryActivityTest() {\r
10     super(DictionaryActivity.class.getPackage().getName(), DictionaryActivity.class);\r
11   }\r
12   \r
13   public void testRunAndFinish() {\r
14     final DictionaryActivity dict = getActivity();\r
15     dict.finish();\r
16   }\r
17   \r
18   abstract class NotifyRunnable implements Runnable {\r
19     boolean finished = false;\r
20     public final void run() {\r
21       assertEquals(false, finished);\r
22       run2();\r
23       synchronized (this) {\r
24         finished = true;\r
25         this.notifyAll();\r
26       }\r
27     }\r
28     public void waitForFinish() throws InterruptedException {\r
29       synchronized (this) {\r
30         while (!finished) {\r
31           this.wait();\r
32         }\r
33         finished = false;\r
34       }\r
35       getActivity().waitForSearchEnd();\r
36     }\r
37     protected abstract void run2();\r
38   }\r
39 \r
40   private void postAndWait(final NotifyRunnable notifyRunnable) throws Exception {\r
41     getActivity().uiHandler.post(notifyRunnable);\r
42     notifyRunnable.waitForFinish();\r
43   }\r
44 \r
45   public void resetDictionary() throws Exception {\r
46     final DictionaryActivity dict = getActivity();\r
47     \r
48     if (dict.languageList.languageData.language == Language.en) {\r
49       postAndWait(switchLangRunnable());\r
50     }\r
51     assertEquals(Language.de, dict.languageList.languageData.language);\r
52 \r
53     postAndWait(new NotifyRunnable() {\r
54       protected void run2() {\r
55         dict.searchText.setText("");\r
56         dict.onSearchTextChange("");\r
57       }\r
58     });\r
59   }\r
60 \r
61   public void testSwitchLanguage() throws Exception {\r
62     final DictionaryActivity dict = getActivity();\r
63     resetDictionary();\r
64 \r
65     final NotifyRunnable switchLang = switchLangRunnable();\r
66 \r
67     postAndWait(switchLang);\r
68     assertEquals(Language.en, dict.languageList.languageData.language);\r
69     assertEquals("EN", dict.langButton.getText().toString());\r
70 \r
71     postAndWait(switchLang);\r
72     assertEquals(Language.de, dict.languageList.languageData.language);\r
73     assertEquals("DE", dict.langButton.getText().toString());\r
74     \r
75     dict.finish();\r
76   }\r
77 \r
78   public void testUpDownArrows() throws Exception {\r
79     final DictionaryActivity dict = getActivity();\r
80     resetDictionary();\r
81     assertEquals(0, dict.getSelectedItemPosition());\r
82     \r
83     final NotifyRunnable upButton = new NotifyRunnable() {\r
84       protected void run2() {\r
85         dict.onUpButton();\r
86       }\r
87     };\r
88     final NotifyRunnable downButton = new NotifyRunnable() {\r
89       protected void run2() {\r
90         dict.onDownButton();\r
91       }\r
92     };\r
93     \r
94     dict.getListView().requestFocus();\r
95     assertTrue(dict.getListView().isFocused());\r
96     \r
97     String word1 = "-1";\r
98     String word2 = "-14";\r
99     String word3 = "-15";\r
100 \r
101     postAndWait(upButton);\r
102     assertEquals(0, dict.getSelectedItemPosition());\r
103     assertEquals(word1, dict.searchText.getText().toString());\r
104 \r
105     postAndWait(downButton);\r
106     assertEquals(2, dict.getSelectedItemPosition());\r
107     assertEquals(word2, dict.searchText.getText().toString());\r
108     \r
109     postAndWait(downButton);\r
110     assertEquals(4, dict.getSelectedItemPosition());\r
111     assertEquals(word3, dict.searchText.getText().toString());\r
112 \r
113     postAndWait(upButton);\r
114     assertEquals(2, dict.getSelectedItemPosition());\r
115     assertEquals(word2, dict.searchText.getText().toString());\r
116     \r
117     postAndWait(upButton);\r
118     assertEquals(0, dict.getSelectedItemPosition());\r
119     assertEquals(word1, dict.searchText.getText().toString());\r
120     \r
121     postAndWait(upButton);\r
122     assertEquals(0, dict.getSelectedItemPosition());\r
123 \r
124     postAndWait(downButton);\r
125     assertEquals(2, dict.getSelectedItemPosition());\r
126 \r
127     dict.finish();\r
128   }\r
129 \r
130   private NotifyRunnable switchLangRunnable() {\r
131     final NotifyRunnable switchLang = new NotifyRunnable() {\r
132       public void run2() {\r
133         getActivity().onLanguageButton();\r
134       }};\r
135     return switchLang;\r
136   }\r
137 \r
138 }\r