aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java22
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java32
-rw-r--r--tests/src/com/android/inputmethod/latin/InputLogicTests.java17
3 files changed, 51 insertions, 20 deletions
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java
index 721c801e1..e090031e4 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserCsvTests.java
@@ -42,7 +42,8 @@ public class KeySpecParserCsvTests extends AndroidTestCase {
final String actual[] = KeySpecParser.parseCsvString(value, mTestResources,
R.string.empty_string);
if (expected.length == 0) {
- assertNull(message, actual);
+ assertNull(message + ": expected=null actual=" + Arrays.toString(actual),
+ actual);
return;
}
assertEquals(message + ": expected=" + Arrays.toString(expected)
@@ -74,6 +75,11 @@ public class KeySpecParserCsvTests extends AndroidTestCase {
public void testParseCsvTextZero() {
assertTextArray("Empty string", "");
+ assertTextArray("Empty entry", ",");
+ assertTextArray("Empty entry at beginning", ",a", "a");
+ assertTextArray("Empty entry at end", "a,", "a");
+ assertTextArray("Empty entry at middle", "a,,b", "a", "b");
+ assertTextArray("Empty entries with escape", ",a,b\\,c,,d,", "a", "b\\,c", "d");
}
public void testParseCsvTextSingle() {
@@ -82,7 +88,7 @@ public class KeySpecParserCsvTests extends AndroidTestCase {
assertTextArray("Single escape", "\\", "\\");
assertTextArray("Space", " ", " ");
assertTextArray("Single label", "abc", "abc");
- assertTextArray("Single srrogate pairs label", SURROGATE2, SURROGATE2);
+ assertTextArray("Single surrogate pairs label", SURROGATE2, SURROGATE2);
assertTextArray("Spaces", " ", " ");
assertTextArray("Spaces in label", "a b c", "a b c");
assertTextArray("Spaces at beginning of label", " abc", " abc");
@@ -282,4 +288,16 @@ public class KeySpecParserCsvTests extends AndroidTestCase {
"abc@string/multiple_labels",
"abcabc", "def", "ghi");
}
+
+ public void testParseIndirectReference() {
+ assertTextArray("Indirect",
+ "@string/indirect_string", "a", "b", "c");
+ assertTextArray("Indirect with literal",
+ "1,@string/indirect_string_with_literal,2", "1", "x", "a", "b", "c", "y", "2");
+ }
+
+ public void testParseInfiniteIndirectReference() {
+ assertError("Infinite indirection",
+ "1,@string/infinite_indirection,2", "1", "infinite", "<infinite>", "loop", "2");
+ }
}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
index d27c55cdd..429e16d5f 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
@@ -27,15 +27,18 @@ import java.util.Arrays;
public class KeySpecParserTests extends AndroidTestCase {
private Resources mRes;
- private static final int ICON_SETTINGS_KEY = R.styleable.Keyboard_iconSettingsKey;
private static final int ICON_UNDEFINED = KeyboardIconsSet.ICON_UNDEFINED;
- private static final String CODE_SETTINGS = "@integer/key_settings";
- private static final String ICON_SETTINGS = "@icon/settingsKey";
+ private static final String CODE_SETTINGS_RES = "integer/key_settings";
+ private static final String ICON_SETTINGS_NAME = "settingsKey";
+
+ private static final String CODE_SETTINGS = "@" + CODE_SETTINGS_RES;
+ private static final String ICON_SETTINGS = "@icon/" + ICON_SETTINGS_NAME;
private static final String CODE_NON_EXISTING = "@integer/non_existing";
private static final String ICON_NON_EXISTING = "@icon/non_existing";
private int mCodeSettings;
+ private int mSettingsIconId;
@Override
protected void setUp() {
@@ -43,8 +46,9 @@ public class KeySpecParserTests extends AndroidTestCase {
mRes = res;
final String packageName = res.getResourcePackageName(R.string.english_ime_name);
- final int codeId = res.getIdentifier(CODE_SETTINGS.substring(1), null, packageName);
+ final int codeId = res.getIdentifier(CODE_SETTINGS_RES, null, packageName);
mCodeSettings = res.getInteger(codeId);
+ mSettingsIconId = KeyboardIconsSet.getIconId(ICON_SETTINGS_NAME);
}
private void assertParser(String message, String moreKeySpec, String expectedLabel,
@@ -55,7 +59,7 @@ public class KeySpecParserTests extends AndroidTestCase {
String actualOutputText = KeySpecParser.getOutputText(moreKeySpec);
assertEquals(message + ": ouptputText:", expectedOutputText, actualOutputText);
- int actualIcon = KeySpecParser.getIconAttrId(moreKeySpec);
+ int actualIcon = KeySpecParser.getIconId(moreKeySpec);
assertEquals(message + ": icon:", expectedIcon, actualIcon);
int actualCode = KeySpecParser.getCode(mRes, moreKeySpec);
@@ -202,13 +206,13 @@ public class KeySpecParserTests extends AndroidTestCase {
public void testIconAndCode() {
assertParser("Icon with outputText", ICON_SETTINGS + "|abc",
- null, "abc", ICON_SETTINGS_KEY, Keyboard.CODE_OUTPUT_TEXT);
+ null, "abc", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
assertParser("Icon with outputText starts with at", ICON_SETTINGS + "|@bc",
- null, "@bc", ICON_SETTINGS_KEY, Keyboard.CODE_OUTPUT_TEXT);
+ null, "@bc", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
assertParser("Icon with outputText contains at", ICON_SETTINGS + "|a@c",
- null, "a@c", ICON_SETTINGS_KEY, Keyboard.CODE_OUTPUT_TEXT);
+ null, "a@c", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
assertParser("Icon with escaped at outputText", ICON_SETTINGS + "|\\@bc",
- null, "@bc", ICON_SETTINGS_KEY, Keyboard.CODE_OUTPUT_TEXT);
+ null, "@bc", mSettingsIconId, Keyboard.CODE_OUTPUT_TEXT);
assertParser("Label starts with at and code", "@bc|" + CODE_SETTINGS,
"@bc", null, ICON_UNDEFINED, mCodeSettings);
assertParser("Label contains at and code", "a@c|" + CODE_SETTINGS,
@@ -216,7 +220,7 @@ public class KeySpecParserTests extends AndroidTestCase {
assertParser("Escaped at label with code", "\\@bc|" + CODE_SETTINGS,
"@bc", null, ICON_UNDEFINED, mCodeSettings);
assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS,
- null, null, ICON_SETTINGS_KEY, mCodeSettings);
+ null, null, mSettingsIconId, mCodeSettings);
}
public void testFormatError() {
@@ -229,11 +233,11 @@ public class KeySpecParserTests extends AndroidTestCase {
assertParserError("Empty outputText with label", "a|",
"a", null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
- null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED);
+ null, null, mSettingsIconId, Keyboard.CODE_UNSPECIFIED);
assertParserError("Empty icon and code", "|",
null, null, ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED);
assertParserError("Icon without code", ICON_SETTINGS,
- null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED);
+ null, null, mSettingsIconId, Keyboard.CODE_UNSPECIFIED);
assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc",
null, "abc", ICON_UNDEFINED, Keyboard.CODE_OUTPUT_TEXT);
assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING,
@@ -245,10 +249,10 @@ public class KeySpecParserTests extends AndroidTestCase {
assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c",
"a", null, ICON_UNDEFINED, mCodeSettings);
assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c",
- null, null, ICON_SETTINGS_KEY, Keyboard.CODE_UNSPECIFIED);
+ null, null, mSettingsIconId, Keyboard.CODE_UNSPECIFIED);
assertParserError("Multiple bar with icon and code",
ICON_SETTINGS + "|" + CODE_SETTINGS + "|c",
- null, null, ICON_SETTINGS_KEY, mCodeSettings);
+ null, null, mSettingsIconId, mCodeSettings);
}
private static void assertMoreKeys(String message, String[] moreKeys,
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
index 8c0ccd40b..693352c85 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTests.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
@@ -133,7 +133,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
}
private void type(final String stringToType) {
- for (int i = 0; i < stringToType.length(); ++i) {
+ for (int i = 0; i < stringToType.length(); i = stringToType.offsetByCodePoints(i, 1)) {
type(stringToType.codePointAt(i));
}
}
@@ -186,7 +186,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
}
public void testCancelDoubleSpace() {
- final String STRING_TO_TYPE = "tgis ";
+ final String STRING_TO_TYPE = "this ";
final String EXPECTED_RESULT = "this ";
type(STRING_TO_TYPE);
type(Keyboard.CODE_DELETE);
@@ -202,7 +202,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
type(Keyboard.CODE_DELETE);
- assertEquals("auto correct then move curor to start of line then backspace",
+ assertEquals("auto correct then move cursor to start of line then backspace",
EXPECTED_RESULT, mTextView.getText().toString());
}
@@ -215,7 +215,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
type(Keyboard.CODE_DELETE);
- assertEquals("auto correct then move curor then backspace",
+ assertEquals("auto correct then move cursor then backspace",
EXPECTED_RESULT, mTextView.getText().toString());
}
@@ -291,4 +291,13 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> {
assertEquals("manual pick then space then type", WORD1_TO_TYPE + WORD2_TO_TYPE,
mTextView.getText().toString());
}
+
+ public void testDeleteWholeComposingWord() {
+ final String WORD_TO_TYPE = "this";
+ type(WORD_TO_TYPE);
+ for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
+ type(Keyboard.CODE_DELETE);
+ }
+ assertEquals("delete whole composing word", "", mTextView.getText().toString());
+ }
}