diff options
Diffstat (limited to 'tests/src')
5 files changed, 274 insertions, 137 deletions
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java index 19912c4e4..fa067f4c8 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java @@ -206,15 +206,11 @@ public class KeySpecParserCsvTests extends AndroidTestCase { public void testParseCsvResourceZero() { assertTextArray("Empty string", "!text/empty_string"); - assertTextArray("EMPTY STRING", - "!TEXT/EMPTY_STRING"); } public void testParseCsvResourceSingle() { assertTextArray("Single char", "!text/single_char", "a"); - assertTextArray("SINGLE CHAR", - "!TEXT/SINGLE_CHAR", "a"); assertTextArray("Space", "!text/space", " "); assertTextArray("Single label", @@ -232,8 +228,6 @@ public class KeySpecParserCsvTests extends AndroidTestCase { assertTextArray("Escape and single char", "\\\\!text/single_char", "\\\\a"); - assertTextArray("Escape and SINGLE CHAR", - "\\\\!TEXT/SINGLE_CHAR", "\\\\a"); } public void testParseCsvResourceSingleEscaped() { @@ -266,8 +260,6 @@ public class KeySpecParserCsvTests extends AndroidTestCase { public void testParseCsvResourceMulti() { assertTextArray("Multiple chars", "!text/multiple_chars", "a", "b", "c"); - assertTextArray("MULTIPLE CHARS", - "!TEXT/MULTIPLE_CHARS", "a", "b", "c"); assertTextArray("Multiple chars surrounded by spaces", "!text/multiple_chars_surrounded_by_spaces", " a ", " b ", " c "); @@ -301,8 +293,6 @@ public class KeySpecParserCsvTests extends AndroidTestCase { public void testParseMultipleResources() { assertTextArray("Literals and resources", "1,!text/multiple_chars,z", "1", "a", "b", "c", "z"); - assertTextArray("Literals and RESOURCES", - "1,!TEXT/MULTIPLE_CHARS,z", "1", "a", "b", "c", "z"); assertTextArray("Literals and resources and escape at end", "\\1,!text/multiple_chars,z\\", "\\1", "a", "b", "c", "z\\"); assertTextArray("Multiple single resource chars and labels", @@ -311,9 +301,6 @@ public class KeySpecParserCsvTests extends AndroidTestCase { assertTextArray("Multiple single resource chars and labels 2", "!text/single_char,!text/single_label,!text/escaped_comma_escape", "a", "abc", "a\\,\\"); - assertTextArray("Multiple single RESOURCE chars and LABELS 2", - "!TEXT/SINGLE_CHAR,!TEXT/SINGLE_LABEL,!TEXT/ESCAPED_COMMA_ESCAPE", - "a", "abc", "a\\,\\"); assertTextArray("Multiple multiple resource chars and labels", "!text/multiple_chars,!text/multiple_labels,!text/multiple_chars_with_comma", "a", "b", "c", "abc", "def", "ghi", "a", "\\,", "c"); @@ -332,66 +319,88 @@ public class KeySpecParserCsvTests extends AndroidTestCase { "1,!text/indirect_string_with_literal,2", "1", "x", "a", "b", "c", "y", "2"); assertTextArray("Indirect2", "!text/indirect2_string", "a", "b", "c"); - - assertTextArray("INDIRECT", - "!TEXT/INDIRECT_STRING", "a", "b", "c"); - assertTextArray("INDIRECT with literal", - "1,!TEXT/INDIRECT_STRING_WITH_LITERAL,2", "1", "x", "a", "b", "c", "y", "2"); - assertTextArray("INDIRECT2", - "!TEXT/INDIRECT2_STRING", "a", "b", "c"); - - assertTextArray("Upper indirect", - "!text/upper_indirect_string", "a", "b", "c"); - assertTextArray("Upper indirect with literal", - "1,!text/upper_indirect_string_with_literal,2", "1", "x", "a", "b", "c", "y", "2"); - assertTextArray("Upper indirect2", - "!text/upper_indirect2_string", "a", "b", "c"); - - assertTextArray("UPPER INDIRECT", - "!TEXT/upper_INDIRECT_STRING", "a", "b", "c"); - assertTextArray("Upper INDIRECT with literal", - "1,!TEXT/upper_INDIRECT_STRING_WITH_LITERAL,2", "1", "x", "a", "b", "c", "y", "2"); - assertTextArray("Upper INDIRECT2", - "!TEXT/upper_INDIRECT2_STRING", "a", "b", "c"); } public void testParseInfiniteIndirectReference() { assertError("Infinite indirection", "1,!text/infinite_indirection,2", "1", "infinite", "<infinite>", "loop", "2"); - assertError("INFINITE INDIRECTION", - "1,!TEXT/INFINITE_INDIRECTION,2", "1", "infinite", "<infinite>", "loop", "2"); - - assertError("Upper infinite indirection", - "1,!text/upper_infinite_indirection,2", - "1", "infinite", "<infinite>", "loop", "2"); - assertError("Upper INFINITE INDIRECTION", - "1,!TEXT/UPPER_INFINITE_INDIRECTION,2", - "1", "infinite", "<infinite>", "loop", "2"); } public void testLabelReferece() { assertTextArray("Label time am", "!text/label_time_am", "AM"); - assertTextArray("LABEL TIME AM", "!TEXT/LABEL_TIME_AM", "AM"); assertTextArray("More keys for am pm", "!text/more_keys_for_am_pm", "!fixedColumnOrder!2", "!hasLabels!", "AM", "PM"); - assertTextArray("MORE KEYS FOR AM OM", "!TEXT/MORE_KEYS_FOR_AM_PM", - "!fixedColumnOrder!2", "!hasLabels!", "AM", "PM"); assertTextArray("Settings as more key", "!text/settings_as_more_key", "!icon/settings_key|!code/key_settings"); - assertTextArray("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY", - "!icon/settings_key|!code/key_settings"); assertTextArray("Indirect naviagte actions as more key", "!text/indirect_navigate_actions_as_more_key", "!fixedColumnOrder!2", "!hasLabels!", "Prev|!code/key_action_previous", "!hasLabels!", "Next|!code/key_action_next"); + } + + public void testUselessUpperCaseSpecifier() { + assertTextArray("EMPTY STRING", + "!TEXT/EMPTY_STRING", "!TEXT/EMPTY_STRING"); + + assertTextArray("SINGLE CHAR", + "!TEXT/SINGLE_CHAR", "!TEXT/SINGLE_CHAR"); + assertTextArray("Escape and SINGLE CHAR", + "\\\\!TEXT/SINGLE_CHAR", "\\\\!TEXT/SINGLE_CHAR"); + + assertTextArray("MULTIPLE CHARS", + "!TEXT/MULTIPLE_CHARS", "!TEXT/MULTIPLE_CHARS"); + + assertTextArray("Literals and RESOURCES", + "1,!TEXT/MULTIPLE_CHARS,z", "1", "!TEXT/MULTIPLE_CHARS", "z"); + assertTextArray("Multiple single RESOURCE chars and LABELS 2", + "!TEXT/SINGLE_CHAR,!TEXT/SINGLE_LABEL,!TEXT/ESCAPED_COMMA_ESCAPE", + "!TEXT/SINGLE_CHAR", "!TEXT/SINGLE_LABEL", "!TEXT/ESCAPED_COMMA_ESCAPE"); + + assertTextArray("INDIRECT", + "!TEXT/INDIRECT_STRING", "!TEXT/INDIRECT_STRING"); + assertTextArray("INDIRECT with literal", + "1,!TEXT/INDIRECT_STRING_WITH_LITERAL,2", + "1", "!TEXT/INDIRECT_STRING_WITH_LITERAL", "2"); + assertTextArray("INDIRECT2", + "!TEXT/INDIRECT2_STRING", "!TEXT/INDIRECT2_STRING"); + + assertTextArray("Upper indirect", + "!text/upper_indirect_string", "!TEXT/MULTIPLE_CHARS"); + assertTextArray("Upper indirect with literal", + "1,!text/upper_indirect_string_with_literal,2", + "1", "x", "!TEXT/MULTIPLE_CHARS", "y", "2"); + assertTextArray("Upper indirect2", + "!text/upper_indirect2_string", "!TEXT/UPPER_INDIRECT_STRING"); + + assertTextArray("UPPER INDIRECT", + "!TEXT/upper_INDIRECT_STRING", "!TEXT/upper_INDIRECT_STRING"); + assertTextArray("Upper INDIRECT with literal", + "1,!TEXT/upper_INDIRECT_STRING_WITH_LITERAL,2", + "1", "!TEXT/upper_INDIRECT_STRING_WITH_LITERAL", "2"); + assertTextArray("Upper INDIRECT2", + "!TEXT/upper_INDIRECT2_STRING", "!TEXT/upper_INDIRECT2_STRING"); + + assertTextArray("INFINITE INDIRECTION", + "1,!TEXT/INFINITE_INDIRECTION,2", "1", "!TEXT/INFINITE_INDIRECTION", "2"); + + assertTextArray("Upper infinite indirection", + "1,!text/upper_infinite_indirection,2", + "1", "infinite", "!TEXT/INFINITE_INDIRECTION", "loop", "2"); + assertTextArray("Upper INFINITE INDIRECTION", + "1,!TEXT/UPPER_INFINITE_INDIRECTION,2", + "1", "!TEXT/UPPER_INFINITE_INDIRECTION", "2"); + + assertTextArray("LABEL TIME AM", "!TEXT/LABEL_TIME_AM", "!TEXT/LABEL_TIME_AM"); + assertTextArray("MORE KEYS FOR AM OM", "!TEXT/MORE_KEYS_FOR_AM_PM", + "!TEXT/MORE_KEYS_FOR_AM_PM"); + assertTextArray("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY", + "!TEXT/SETTINGS_AS_MORE_KEY"); assertTextArray("INDIRECT NAVIGATE ACTIONS AS MORE KEY", "!TEXT/INDIRECT_NAVIGATE_ACTIONS_AS_MORE_KEY", - "!fixedColumnOrder!2", - "!hasLabels!", "Prev|!code/key_action_previous", - "!hasLabels!", "Next|!code/key_action_next"); - } + "!TEXT/INDIRECT_NAVIGATE_ACTIONS_AS_MORE_KEY"); + } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java index f2a165678..0b174a7e6 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java @@ -62,7 +62,8 @@ public class KeySpecParserTests extends AndroidTestCase { private void assertParser(String message, String moreKeySpec, String expectedLabel, String expectedOutputText, int expectedIcon, int expectedCode) { final String labelResolved = KeySpecParser.resolveTextReference(moreKeySpec, mTextsSet); - final MoreKeySpec spec = new MoreKeySpec(labelResolved, mCodesSet); + final MoreKeySpec spec = new MoreKeySpec(labelResolved, false /* needsToUpperCase */, + Locale.US, mCodesSet); assertEquals(message + " [label]", expectedLabel, spec.mLabel); assertEquals(message + " [ouptputText]", expectedOutputText, spec.mOutputText); assertEquals(message + " [icon]", @@ -149,8 +150,6 @@ public class KeySpecParserTests extends AndroidTestCase { "|", null, ICON_UNDEFINED, '|'); assertParser("Single letter with code", "a|" + CODE_SETTINGS, "a", null, ICON_UNDEFINED, mCodeSettings); - assertParser("Single letter with CODE", "a|" + CODE_SETTINGS_UPPERCASE, - "a", null, ICON_UNDEFINED, mCodeSettings); } public void testLabel() { @@ -213,66 +212,39 @@ public class KeySpecParserTests extends AndroidTestCase { "a|c", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT); assertParser("Label with code", "abc|" + CODE_SETTINGS, "abc", null, ICON_UNDEFINED, mCodeSettings); - assertParser("Label with CODE", "abc|" + CODE_SETTINGS_UPPERCASE, - "abc", null, ICON_UNDEFINED, mCodeSettings); assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS, "a|c", null, ICON_UNDEFINED, mCodeSettings); - assertParser("Escaped label with CODE", "a\\|c|" + CODE_SETTINGS_UPPERCASE, - "a|c", null, ICON_UNDEFINED, mCodeSettings); } public void testIconAndCode() { assertParser("Icon with outputText", ICON_SETTINGS + "|abc", null, "abc", mSettingsIconId, CODE_OUTPUT_TEXT); - assertParser("ICON with outputText", ICON_SETTINGS_UPPERCASE + "|abc", - null, "abc", mSettingsIconId, CODE_OUTPUT_TEXT); assertParser("Icon with outputText starts with bang", ICON_SETTINGS + "|!bc", null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT); - assertParser("ICON with outputText starts with bang", ICON_SETTINGS_UPPERCASE + "|!bc", - null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT); assertParser("Icon with outputText contains bang", ICON_SETTINGS + "|a!c", null, "a!c", mSettingsIconId, CODE_OUTPUT_TEXT); - assertParser("ICON with outputText contains bang", ICON_SETTINGS_UPPERCASE + "|a!c", - null, "a!c", mSettingsIconId, CODE_OUTPUT_TEXT); assertParser("Icon with escaped bang outputText", ICON_SETTINGS + "|\\!bc", null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT); - assertParser("ICON with escaped bang outputText", ICON_SETTINGS_UPPERCASE + "|\\!bc", - null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT); assertParser("Label starts with bang and code", "!bc|" + CODE_SETTINGS, "!bc", null, ICON_UNDEFINED, mCodeSettings); - assertParser("Label starts with bang and CODE", "!bc|" + CODE_SETTINGS_UPPERCASE, - "!bc", null, ICON_UNDEFINED, mCodeSettings); assertParser("Label contains bang and code", "a!c|" + CODE_SETTINGS, "a!c", null, ICON_UNDEFINED, mCodeSettings); - assertParser("Label contains bang and CODE", "a!c|" + CODE_SETTINGS_UPPERCASE, - "a!c", null, ICON_UNDEFINED, mCodeSettings); assertParser("Escaped bang label with code", "\\!bc|" + CODE_SETTINGS, "!bc", null, ICON_UNDEFINED, mCodeSettings); - assertParser("Escaped bang label with CODE", "\\!bc|" + CODE_SETTINGS_UPPERCASE, - "!bc", null, ICON_UNDEFINED, mCodeSettings); assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS, null, null, mSettingsIconId, mCodeSettings); - assertParser("ICON with CODE", ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE, - null, null, mSettingsIconId, mCodeSettings); } public void testResourceReference() { assertParser("Settings as more key", "!text/settings_as_more_key", null, null, mSettingsIconId, mCodeSettings); - assertParser("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY", - null, null, mSettingsIconId, mCodeSettings); assertParser("Action next as more key", "!text/label_next_key|!code/key_action_next", "Next", null, ICON_UNDEFINED, mCodeActionNext); - assertParser("ACTION NEXT AS MORE KEY", "!TEXT/LABEL_NEXT_KEY|!CODE/KEY_ACTION_NEXT", - "Next", null, ICON_UNDEFINED, mCodeActionNext); assertParser("Popular domain", "!text/keylabel_for_popular_domain|!text/keylabel_for_popular_domain ", ".com", ".com ", ICON_UNDEFINED, CODE_OUTPUT_TEXT); - assertParser("POPULAR DOMAIN", - "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN|!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ", - ".com", ".com ", ICON_UNDEFINED, CODE_OUTPUT_TEXT); } public void testFormatError() { @@ -282,20 +254,14 @@ public class KeySpecParserTests extends AndroidTestCase { null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED); assertParserError("Empty label with code", "|" + CODE_SETTINGS, null, null, ICON_UNDEFINED, mCodeSettings); - assertParserError("Empty label with CODE", "|" + CODE_SETTINGS_UPPERCASE, - null, null, ICON_UNDEFINED, mCodeSettings); assertParserError("Empty outputText with label", "a|", "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED); assertParserError("Empty outputText with icon", ICON_SETTINGS + "|", null, null, mSettingsIconId, CODE_UNSPECIFIED); - assertParserError("Empty outputText with ICON", ICON_SETTINGS_UPPERCASE + "|", - null, null, mSettingsIconId, CODE_UNSPECIFIED); assertParserError("Empty icon and code", "|", null, null, ICON_UNDEFINED, CODE_UNSPECIFIED); assertParserError("Icon without code", ICON_SETTINGS, null, null, mSettingsIconId, CODE_UNSPECIFIED); - assertParserError("ICON without code", ICON_SETTINGS_UPPERCASE, - null, null, mSettingsIconId, CODE_UNSPECIFIED); assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc", null, "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT); assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING, @@ -306,15 +272,56 @@ public class KeySpecParserTests extends AndroidTestCase { "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED); assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c", "a", null, ICON_UNDEFINED, mCodeSettings); - assertParserError("Multiple bar with label and CODE", "a|" + CODE_SETTINGS_UPPERCASE + "|c", - "a", null, ICON_UNDEFINED, mCodeSettings); assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c", null, null, mSettingsIconId, CODE_UNSPECIFIED); - assertParserError("Multiple bar with ICON and outputText", ICON_SETTINGS_UPPERCASE + "|b|c", - null, null, mSettingsIconId, CODE_UNSPECIFIED); assertParserError("Multiple bar with icon and code", ICON_SETTINGS + "|" + CODE_SETTINGS + "|c", null, null, mSettingsIconId, mCodeSettings); + } + + public void testUselessUpperCaseSpecifier() { + assertParser("Single letter with CODE", "a|" + CODE_SETTINGS_UPPERCASE, + "a", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("Label with CODE", "abc|" + CODE_SETTINGS_UPPERCASE, + "abc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("Escaped label with CODE", "a\\|c|" + CODE_SETTINGS_UPPERCASE, + "a|c", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("ICON with outputText", ICON_SETTINGS_UPPERCASE + "|abc", + "!ICON/SETTINGS_KEY", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("ICON with outputText starts with bang", ICON_SETTINGS_UPPERCASE + "|!bc", + "!ICON/SETTINGS_KEY", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("ICON with outputText contains bang", ICON_SETTINGS_UPPERCASE + "|a!c", + "!ICON/SETTINGS_KEY", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("ICON with escaped bang outputText", ICON_SETTINGS_UPPERCASE + "|\\!bc", + "!ICON/SETTINGS_KEY", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("Label starts with bang and CODE", "!bc|" + CODE_SETTINGS_UPPERCASE, + "!bc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("Label contains bang and CODE", "a!c|" + CODE_SETTINGS_UPPERCASE, + "a!c", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("Escaped bang label with CODE", "\\!bc|" + CODE_SETTINGS_UPPERCASE, + "!bc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("ICON with CODE", ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE, + "!ICON/SETTINGS_KEY", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParser("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY", + "!TEXT/SETTINGS_AS_MORE_KEY", "!TEXT/SETTINGS_AS_MORE_KEY", ICON_UNDEFINED, + CODE_OUTPUT_TEXT); + assertParser("ACTION NEXT AS MORE KEY", "!TEXT/LABEL_NEXT_KEY|!CODE/KEY_ACTION_NEXT", + "!TEXT/LABEL_NEXT_KEY", "!CODE/KEY_ACTION_NEXT", ICON_UNDEFINED, + CODE_OUTPUT_TEXT); + assertParser("POPULAR DOMAIN", + "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN|!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ", + "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN", "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ", + ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParserError("Empty label with CODE", "|" + CODE_SETTINGS_UPPERCASE, + null, null, ICON_UNDEFINED, mCodeSettings); + assertParserError("Empty outputText with ICON", ICON_SETTINGS_UPPERCASE + "|", + null, null, mSettingsIconId, CODE_UNSPECIFIED); + assertParser("ICON without code", ICON_SETTINGS_UPPERCASE, + "!ICON/SETTINGS_KEY", "!ICON/SETTINGS_KEY", ICON_UNDEFINED, CODE_OUTPUT_TEXT); + assertParserError("Multiple bar with label and CODE", "a|" + CODE_SETTINGS_UPPERCASE + "|c", + "a", null, ICON_UNDEFINED, mCodeSettings); + assertParserError("Multiple bar with ICON and outputText", ICON_SETTINGS_UPPERCASE + "|b|c", + null, null, mSettingsIconId, CODE_UNSPECIFIED); assertParserError("Multiple bar with ICON and CODE", ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE + "|c", null, null, mSettingsIconId, mCodeSettings); @@ -577,9 +584,10 @@ public class KeySpecParserTests extends AndroidTestCase { assertGetBooleanValue("Has label", HAS_LABEL, new String[] { HAS_LABEL, "a", "b", "c" }, new String[] { null, "a", "b", "c" }, true); + // Upper case specification will not work. assertGetBooleanValue("HAS LABEL", HAS_LABEL, new String[] { HAS_LABEL.toUpperCase(), "a", "b", "c" }, - new String[] { null, "a", "b", "c" }, true); + new String[] { "!HASLABEL!", "a", "b", "c" }, false); assertGetBooleanValue("No has label", HAS_LABEL, new String[] { "a", "b", "c" }, @@ -588,16 +596,18 @@ public class KeySpecParserTests extends AndroidTestCase { new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" }, new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" }, false); + // Upper case specification will not work. assertGetBooleanValue("Multiple has label", HAS_LABEL, new String[] { "a", HAS_LABEL.toUpperCase(), "b", "c", HAS_LABEL, "d" }, new String[] { - "a", null, "b", "c", null, "d" }, true); + "a", "!HASLABEL!", "b", "c", null, "d" }, true); + // Upper case specification will not work. assertGetBooleanValue("Multiple has label with needs dividers", HAS_LABEL, new String[] { "a", HAS_LABEL, "b", NEEDS_DIVIDER, HAS_LABEL.toUpperCase(), "d" }, new String[] { - "a", null, "b", NEEDS_DIVIDER, null, "d" }, true); + "a", null, "b", NEEDS_DIVIDER, "!HASLABEL!", "d" }, true); } private static void assertGetIntValue(String message, String key, int defaultValue, @@ -612,9 +622,10 @@ public class KeySpecParserTests extends AndroidTestCase { assertGetIntValue("Fixed column order 3", FIXED_COLUMN_ORDER, -1, new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" }, new String[] { null, "a", "b", "c" }, 3); + // Upper case specification will not work. assertGetIntValue("FIXED COLUMN ORDER 3", FIXED_COLUMN_ORDER, -1, new String[] { FIXED_COLUMN_ORDER.toUpperCase() + "3", "a", "b", "c" }, - new String[] { null, "a", "b", "c" }, 3); + new String[] { "!FIXEDCOLUMNORDER!3", "a", "b", "c" }, -1); assertGetIntValue("No fixed column order", FIXED_COLUMN_ORDER, -1, new String[] { "a", "b", "c" }, @@ -626,10 +637,11 @@ public class KeySpecParserTests extends AndroidTestCase { assertGetIntValue("Multiple fixed column order 3,5", FIXED_COLUMN_ORDER, -1, new String[] { FIXED_COLUMN_ORDER + "3", "a", FIXED_COLUMN_ORDER + "5", "b" }, new String[] { null, "a", null, "b" }, 3); + // Upper case specification will not work. assertGetIntValue("Multiple fixed column order 5,3 with has label", FIXED_COLUMN_ORDER, -1, new String[] { FIXED_COLUMN_ORDER.toUpperCase() + "5", HAS_LABEL, "a", FIXED_COLUMN_ORDER + "3", "b" }, - new String[] { null, HAS_LABEL, "a", null, "b" }, 5); + new String[] { "!FIXEDCOLUMNORDER!5", HAS_LABEL, "a", null, "b" }, 3); } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java index dc098db1e..64cf7a61b 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateMultiTouchTests.java @@ -57,7 +57,8 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Chording input in shift locked. public void testChordingShiftLocked() { // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press shift key and hold, enter into choring shift state. pressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED); @@ -115,7 +116,8 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press "ABC" key, enter into chording alphabet shift locked. @@ -132,7 +134,8 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press "=\<" key, enter into symbols shifted chording state. @@ -190,7 +193,8 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press/release "=\<" key, enter symbols shifted. @@ -209,7 +213,8 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press/release "=\<" key, enter symbols shifted. @@ -370,4 +375,83 @@ public class KeyboardStateMultiTouchTests extends KeyboardStateTestsBase { // Release shift key. releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); } + + public void testLongPressShiftAndChording() { + // Long press shift key, enter maybe shift locked. + longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + + // Long press shift key, enter alphabet shift locked. + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); + // Long press shift key, enter maybe alphabet. + longPressKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED); + // Release shift key, back to shift locked (not alphabet). + releaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCKED); + // Long press shift key, enter alphabet + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, + ALPHABET_UNSHIFTED); + + // Press/release shift key, enter alphabet shifted. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Long press shift key, enter maybe alphabet. + longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet shifted (not alphabet). + releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + + // Set capitalize the first character of all words mode. + setAutoCapsMode(CAP_MODE_WORDS); + // Load keyboard, should be in automatic shifted. + loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); + // Long press shift key, enter maybe shift locked. + longPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + } + + public void testDoubleTapShiftAndChording() { + // TODO: The following tests fail due to bug. Temporarily commented. + // First shift key tap. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Second shift key tap, maybe shift locked. + secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet shifted (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + + // Long press shift key, enter alphabet shift locked. + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); + // First shift key tap. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); + // Second shift key tap, maybe shift unlocked. + secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + + // Set capitalize the first character of all words mode. + setAutoCapsMode(CAP_MODE_WORDS); + // Load keyboard, should be in automatic shifted. + loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); + // First shift key tap. + pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); + // Second shift key tap, maybe shift locked. + secondPressKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED); + // Press/release letter key, remain in manual shifted. + chordingPressAndReleaseKey('A', ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); + // Release shift key, back to alphabet (not shift locked). + releaseKey(CODE_SHIFT, ALPHABET_UNSHIFTED); + } } diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java index b9f53184a..a1ceb8e2e 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateSingleTouchTests.java @@ -88,7 +88,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Switching between alphabet shift locked and symbols. public void testAlphabetShiftLockedAndSymbols() { // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); @@ -129,7 +130,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Automatic switch back to alphabet shift locked test by space key. public void testSwitchBackBySpaceShiftLocked() { // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); @@ -181,7 +183,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { setLayoutSwitchBackSymbols(switchBackSymbols); loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); @@ -243,12 +246,14 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Load keyboard, should be in alphabet. loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release shift key, back to alphabet. pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release letter key, remain in shift locked. pressAndReleaseKey('A', ALPHABET_SHIFT_LOCKED, ALPHABET_SHIFT_LOCKED); // Press/release word separator, remain in shift locked. @@ -257,14 +262,17 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Long press shift key, back to alphabet. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, + ALPHABET_UNSHIFTED); // Press/release shift key, enter alphabet shifted. pressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release shift key, back to alphabet. pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); @@ -273,7 +281,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Load keyboard, should be in automatic shifted. loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release shift key, back to alphabet. pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); } @@ -334,11 +343,13 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { updateShiftState(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Update shift state, remained in alphabet shift locked. updateShiftState(ALPHABET_SHIFT_LOCKED); // Long press shift key, back to alphabet. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, + ALPHABET_UNSHIFTED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); @@ -365,11 +376,13 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { updateShiftState(ALPHABET_AUTOMATIC_SHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Update shift state, remained in alphabet shift locked (not automatic shifted). updateShiftState(ALPHABET_SHIFT_LOCKED); // Long press shift key, back to alphabet. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_SHIFT_LOCK_SHIFTED, + ALPHABET_UNSHIFTED); // Load keyboard, should be in automatic shifted. loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); @@ -416,7 +429,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Alphabet shift locked -> shift key + letter -> alphabet shift locked. // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press and slide from "123?" key, enter symbols. pressAndSlideFromKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Enter/release into symbol letter key, switch back to alphabet shift locked. @@ -467,7 +481,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press and slide from "ABC" key, enter alphabet shift locked. @@ -482,7 +497,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press and slide from "=\<" key, enter symbols shifted. @@ -535,7 +551,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press/release "=\<" key, enter into symbols shifted. @@ -552,7 +569,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Load keyboard loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release "?123" key, enter into symbols. pressAndReleaseKey(CODE_SYMBOL, SYMBOLS_UNSHIFTED, SYMBOLS_UNSHIFTED); // Press/release "=\<" key, enter into symbols shifted. @@ -573,7 +591,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { loadKeyboard(ALPHABET_UNSHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Change focus to new text field. loadKeyboard(ALPHABET_UNSHIFTED); @@ -603,7 +622,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Change focus to new text field. loadKeyboard(ALPHABET_AUTOMATIC_SHIFTED); @@ -635,7 +655,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { // Alphabet shift locked -> rotate -> alphabet shift locked. // Long press shift key, enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Rotate device, remain in alphabet shift locked. rotateDevice(ALPHABET_SHIFT_LOCKED); @@ -718,7 +739,8 @@ public class KeyboardStateSingleTouchTests extends KeyboardStateTestsBase { secondPressAndReleaseKey('J', ALPHABET_MANUAL_SHIFTED, ALPHABET_UNSHIFTED); // Long press shift key to enter alphabet shift locked. - longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_SHIFT_LOCKED); + longPressAndReleaseKey(CODE_SHIFT, ALPHABET_MANUAL_SHIFTED, ALPHABET_MANUAL_SHIFTED, + ALPHABET_SHIFT_LOCKED); // Press/release shift key pressAndReleaseKey(CODE_SHIFT, ALPHABET_SHIFT_LOCK_SHIFTED, ALPHABET_UNSHIFTED); // Rapidly press/release letter key. diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java index 9472a1fe5..2770ed54a 100644 --- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java +++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTestsBase.java @@ -42,31 +42,32 @@ public class KeyboardStateTestsBase extends AndroidTestCase mLayoutSwitchBackSymbols = switchBackSymbols; } - private static void assertLayout(int expected, int actual) { - assertTrue("expected=" + MockKeyboardSwitcher.getLayoutName(expected) + private static void assertLayout(String message, int expected, int actual) { + assertTrue(message + ": expected=" + MockKeyboardSwitcher.getLayoutName(expected) + " actual=" + MockKeyboardSwitcher.getLayoutName(actual), expected == actual); } public void updateShiftState(int afterUpdate) { mSwitcher.updateShiftState(); - assertLayout(afterUpdate, mSwitcher.getLayoutId()); + assertLayout("afterUpdate", afterUpdate, mSwitcher.getLayoutId()); } public void loadKeyboard(int afterLoad) { mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols); - updateShiftState(afterLoad); + mSwitcher.updateShiftState(); + assertLayout("afterLoad", afterLoad, mSwitcher.getLayoutId()); } public void rotateDevice(int afterRotate) { mSwitcher.saveKeyboardState(); mSwitcher.loadKeyboard(mLayoutSwitchBackSymbols); - assertLayout(afterRotate, mSwitcher.getLayoutId()); + assertLayout("afterRotate", afterRotate, mSwitcher.getLayoutId()); } private void pressKeyWithoutTimerExpire(int code, boolean isSinglePointer, int afterPress) { mSwitcher.onPressKey(code, isSinglePointer); - assertLayout(afterPress, mSwitcher.getLayoutId()); + assertLayout("afterPress", afterPress, mSwitcher.getLayoutId()); } public void pressKey(int code, int afterPress) { @@ -77,7 +78,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase public void releaseKey(int code, int afterRelease) { mSwitcher.onCodeInput(code, SINGLE); mSwitcher.onReleaseKey(code, NOT_SLIDING); - assertLayout(afterRelease, mSwitcher.getLayoutId()); + assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId()); } public void pressAndReleaseKey(int code, int afterPress, int afterRelease) { @@ -93,7 +94,7 @@ public class KeyboardStateTestsBase extends AndroidTestCase public void chordingReleaseKey(int code, int afterRelease) { mSwitcher.onCodeInput(code, MULTI); mSwitcher.onReleaseKey(code, NOT_SLIDING); - assertLayout(afterRelease, mSwitcher.getLayoutId()); + assertLayout("afterRelease", afterRelease, mSwitcher.getLayoutId()); } public void chordingPressAndReleaseKey(int code, int afterPress, int afterRelease) { @@ -104,18 +105,27 @@ public class KeyboardStateTestsBase extends AndroidTestCase public void pressAndSlideFromKey(int code, int afterPress, int afterSlide) { pressKey(code, afterPress); mSwitcher.onReleaseKey(code, SLIDING); - assertLayout(afterSlide, mSwitcher.getLayoutId()); + assertLayout("afterSlide", afterSlide, mSwitcher.getLayoutId()); } - public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress) { + public void longPressKey(int code, int afterPress, int afterLongPress) { pressKey(code, afterPress); mSwitcher.onLongPressTimeout(code); - assertLayout(afterLongPress, mSwitcher.getLayoutId()); - releaseKey(code, afterLongPress); + assertLayout("afterLongPress", afterLongPress, mSwitcher.getLayoutId()); } - public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) { + public void longPressAndReleaseKey(int code, int afterPress, int afterLongPress, + int afterRelease) { + longPressKey(code, afterPress, afterLongPress); + releaseKey(code, afterRelease); + } + + public void secondPressKey(int code, int afterPress) { pressKeyWithoutTimerExpire(code, true, afterPress); + } + + public void secondPressAndReleaseKey(int code, int afterPress, int afterRelease) { + secondPressKey(code, afterPress); releaseKey(code, afterRelease); } } |