package com.hughes.android.dictionary;\r
\r
+import com.hughes.android.dictionary.engine.Language;\r
+\r
import android.test.ActivityInstrumentationTestCase2;\r
\r
public class DictionaryActivityTest extends ActivityInstrumentationTestCase2<DictionaryActivity> {\r
final DictionaryActivity dict = getActivity();\r
dict.finish();\r
}\r
+ \r
+ abstract class NotifyRunnable implements Runnable {\r
+ boolean finished = false;\r
+ public final void run() {\r
+ assertEquals(false, finished);\r
+ run2();\r
+ synchronized (this) {\r
+ finished = true;\r
+ this.notifyAll();\r
+ }\r
+ }\r
+ public void waitForFinish() throws InterruptedException {\r
+ synchronized (this) {\r
+ while (!finished) {\r
+ this.wait();\r
+ }\r
+ finished = false;\r
+ }\r
+ getActivity().waitForSearchEnd();\r
+ }\r
+ protected abstract void run2();\r
+ }\r
+\r
+ private void postAndWait(final NotifyRunnable notifyRunnable) throws Exception {\r
+ getActivity().uiHandler.post(notifyRunnable);\r
+ notifyRunnable.waitForFinish();\r
+ }\r
+\r
+ public void resetDictionary() throws Exception {\r
+ final DictionaryActivity dict = getActivity();\r
+ \r
+ if (dict.languageList.languageData.language == Language.en) {\r
+ postAndWait(switchLangRunnable());\r
+ }\r
+ assertEquals(Language.de, dict.languageList.languageData.language);\r
+\r
+ postAndWait(new NotifyRunnable() {\r
+ protected void run2() {\r
+ dict.searchText.setText("");\r
+ dict.onSearchTextChange("");\r
+ }\r
+ });\r
+ }\r
\r
public void testSwitchLanguage() throws Exception {\r
+ final DictionaryActivity dict = getActivity();\r
+ resetDictionary();\r
+\r
+ final NotifyRunnable switchLang = switchLangRunnable();\r
\r
+ postAndWait(switchLang);\r
+ assertEquals(Language.en, dict.languageList.languageData.language);\r
+ assertEquals("EN", dict.langButton.getText().toString());\r
+\r
+ postAndWait(switchLang);\r
+ assertEquals(Language.de, dict.languageList.languageData.language);\r
+ assertEquals("DE", dict.langButton.getText().toString());\r
+ \r
+ dict.finish();\r
+ }\r
+\r
+ public void testUpDownArrows() throws Exception {\r
final DictionaryActivity dict = getActivity();\r
+ resetDictionary();\r
+ assertEquals(0, dict.getSelectedItemPosition());\r
+ \r
+ final NotifyRunnable upButton = new NotifyRunnable() {\r
+ protected void run2() {\r
+ dict.onUpButton();\r
+ }\r
+ };\r
+ final NotifyRunnable downButton = new NotifyRunnable() {\r
+ protected void run2() {\r
+ dict.onDownButton();\r
+ }\r
+ };\r
+ \r
+ dict.getListView().requestFocus();\r
+ assertTrue(dict.getListView().isFocused());\r
+ \r
+ String word1 = "-1";\r
+ String word2 = "-14";\r
+ String word3 = "-15";\r
\r
- final Runnable switchLang = new Runnable() {\r
- public void run() {\r
- getActivity().onLanguageButton();\r
- }};\r
+ postAndWait(upButton);\r
+ assertEquals(0, dict.getSelectedItemPosition());\r
+ assertEquals(word1, dict.searchText.getText().toString());\r
\r
- if (dict.languageList.languageData.language == Language.EN) {\r
- dict.uiHandler.post(switchLang);\r
- Thread.sleep(100);\r
- }\r
+ postAndWait(downButton);\r
+ assertEquals(2, dict.getSelectedItemPosition());\r
+ assertEquals(word2, dict.searchText.getText().toString());\r
\r
- assertEquals(Language.DE, dict.languageList.languageData.language);\r
- \r
- dict.uiHandler.post(switchLang);\r
- Thread.sleep(100);\r
- assertEquals(Language.EN, dict.languageList.languageData.language);\r
+ postAndWait(downButton);\r
+ assertEquals(4, dict.getSelectedItemPosition());\r
+ assertEquals(word3, dict.searchText.getText().toString());\r
\r
- dict.uiHandler.post(switchLang);\r
- Thread.sleep(100);\r
- assertEquals(Language.DE, dict.languageList.languageData.language);\r
+ postAndWait(upButton);\r
+ assertEquals(2, dict.getSelectedItemPosition());\r
+ assertEquals(word2, dict.searchText.getText().toString());\r
+ \r
+ postAndWait(upButton);\r
+ assertEquals(0, dict.getSelectedItemPosition());\r
+ assertEquals(word1, dict.searchText.getText().toString());\r
\r
+ postAndWait(upButton);\r
+ assertEquals(0, dict.getSelectedItemPosition());\r
+\r
+ postAndWait(downButton);\r
+ assertEquals(2, dict.getSelectedItemPosition());\r
+\r
dict.finish();\r
}\r
\r
+ private NotifyRunnable switchLangRunnable() {\r
+ final NotifyRunnable switchLang = new NotifyRunnable() {\r
+ public void run2() {\r
+ getActivity().onLanguageButton();\r
+ }};\r
+ return switchLang;\r
+ }\r
+\r
}\r