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