blob: 0ab24269c254cd588d0db2811976ae873386f635 [file] [log] [blame]
// Copyright 2010-2015, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package org.mozc.android.inputmethod.japanese.model;
import org.mozc.android.inputmethod.japanese.keyboard.Keyboard.KeyboardSpecification;
import org.mozc.android.inputmethod.japanese.model.JapaneseSoftwareKeyboardModel.KeyboardMode;
import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.InputStyle;
import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.KeyboardLayout;
import org.mozc.android.inputmethod.japanese.testing.Parameter;
import android.text.InputType;
import junit.framework.TestCase;
/**
*/
public class JapaneseSoftwareKeyboardModelTest extends TestCase {
public void testGetKeyboardSpecification() {
class TestData extends Parameter {
final KeyboardLayout keyboardLayout;
final KeyboardMode keyboardMode;
final InputStyle inputStyle;
final boolean qwertyLayoutForAlphabet;
final KeyboardSpecification expectedKeyboardSpecification;
TestData(KeyboardLayout keyboardLayout, KeyboardMode keyboardMode,
InputStyle inputStyle, boolean qwertyLayoutForAlphabet,
KeyboardSpecification expectedKeyboardSpecification) {
this.keyboardLayout = keyboardLayout;
this.keyboardMode = keyboardMode;
this.inputStyle = inputStyle;
this.qwertyLayoutForAlphabet = qwertyLayoutForAlphabet;
this.expectedKeyboardSpecification = expectedKeyboardSpecification;
}
}
TestData[] testDataList = {
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.KANA,
InputStyle.TOGGLE, false,
KeyboardSpecification.TWELVE_KEY_TOGGLE_KANA),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.KANA,
InputStyle.TOGGLE, true,
KeyboardSpecification.TWELVE_KEY_TOGGLE_KANA),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.KANA,
InputStyle.FLICK, false,
KeyboardSpecification.TWELVE_KEY_FLICK_KANA),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.KANA,
InputStyle.FLICK, true,
KeyboardSpecification.TWELVE_KEY_FLICK_KANA),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.KANA,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.TWELVE_KEY_TOGGLE_FLICK_KANA),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.KANA,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.TWELVE_KEY_TOGGLE_FLICK_KANA),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.ALPHABET,
InputStyle.TOGGLE, false,
KeyboardSpecification.TWELVE_KEY_TOGGLE_ALPHABET),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.ALPHABET,
InputStyle.TOGGLE, true,
KeyboardSpecification.TWELVE_KEY_TOGGLE_QWERTY_ALPHABET),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.ALPHABET,
InputStyle.FLICK, false,
KeyboardSpecification.TWELVE_KEY_FLICK_ALPHABET),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.ALPHABET,
InputStyle.FLICK, true,
KeyboardSpecification.TWELVE_KEY_TOGGLE_QWERTY_ALPHABET),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.ALPHABET,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.TWELVE_KEY_TOGGLE_FLICK_ALPHABET),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.ALPHABET,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.TWELVE_KEY_TOGGLE_QWERTY_ALPHABET),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.KANA,
InputStyle.TOGGLE, false,
KeyboardSpecification.QWERTY_KANA),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.KANA,
InputStyle.TOGGLE, true,
KeyboardSpecification.QWERTY_KANA),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.KANA,
InputStyle.FLICK, false,
KeyboardSpecification.QWERTY_KANA),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.KANA,
InputStyle.FLICK, true,
KeyboardSpecification.QWERTY_KANA),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.KANA,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.QWERTY_KANA),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.KANA,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.QWERTY_KANA),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.ALPHABET,
InputStyle.TOGGLE, false,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.ALPHABET,
InputStyle.TOGGLE, true,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.ALPHABET,
InputStyle.FLICK, false,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.ALPHABET,
InputStyle.FLICK, true,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.ALPHABET,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.QWERTY, KeyboardMode.ALPHABET,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.GODAN, KeyboardMode.KANA,
InputStyle.TOGGLE, false,
KeyboardSpecification.GODAN_KANA),
new TestData(KeyboardLayout.GODAN, KeyboardMode.KANA,
InputStyle.TOGGLE, true,
KeyboardSpecification.GODAN_KANA),
new TestData(KeyboardLayout.GODAN, KeyboardMode.KANA,
InputStyle.FLICK, false,
KeyboardSpecification.GODAN_KANA),
new TestData(KeyboardLayout.GODAN, KeyboardMode.KANA,
InputStyle.FLICK, true,
KeyboardSpecification.GODAN_KANA),
new TestData(KeyboardLayout.GODAN, KeyboardMode.KANA,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.GODAN_KANA),
new TestData(KeyboardLayout.GODAN, KeyboardMode.KANA,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.GODAN_KANA),
new TestData(KeyboardLayout.GODAN, KeyboardMode.ALPHABET,
InputStyle.TOGGLE, false,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.GODAN, KeyboardMode.ALPHABET,
InputStyle.TOGGLE, true,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.GODAN, KeyboardMode.ALPHABET,
InputStyle.FLICK, false,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.GODAN, KeyboardMode.ALPHABET,
InputStyle.FLICK, true,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.GODAN, KeyboardMode.ALPHABET,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.GODAN, KeyboardMode.ALPHABET,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.QWERTY_ALPHABET),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE, false,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE, true,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.FLICK, false,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.FLICK, true,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE, false,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE, true,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.FLICK, false,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.FLICK, true,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.NUMBER,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE, false,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE, true,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.FLICK, false,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.FLICK, true,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE, false,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE, true,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.FLICK, false,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.FLICK, true,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE_FLICK, false,
KeyboardSpecification.SYMBOL_NUMBER),
new TestData(KeyboardLayout.TWELVE_KEYS, KeyboardMode.SYMBOL_NUMBER,
InputStyle.TOGGLE_FLICK, true,
KeyboardSpecification.SYMBOL_NUMBER),
};
JapaneseSoftwareKeyboardModel model = new JapaneseSoftwareKeyboardModel();
for (TestData parameter : testDataList) {
model.setKeyboardLayout(parameter.keyboardLayout);
model.setKeyboardMode(parameter.keyboardMode);
model.setInputStyle(parameter.inputStyle);
model.setQwertyLayoutForAlphabet(parameter.qwertyLayoutForAlphabet);
assertEquals(parameter.toString(),
parameter.expectedKeyboardSpecification,
model.getKeyboardSpecification());
}
}
public void testInputType() {
class TestData extends Parameter {
final int inputType;
final KeyboardMode expectedKeyboardMode;
TestData(int inputType, KeyboardMode expectedKeyboardMode) {
this.inputType = inputType;
this.expectedKeyboardMode = expectedKeyboardMode;
}
}
TestData[] testDataListForTwelveKeys = {
new TestData(InputType.TYPE_CLASS_DATETIME, KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE,
KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL,
KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME,
KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_NUMBER, KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_PHONE, KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD,
KeyboardMode.ALPHABET),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS,
null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD,
KeyboardMode.ALPHABET),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS,
KeyboardMode.ALPHABET),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD,
KeyboardMode.ALPHABET),
};
JapaneseSoftwareKeyboardModel model = new JapaneseSoftwareKeyboardModel();
model.setKeyboardLayout(KeyboardLayout.TWELVE_KEYS);
model.setKeyboardMode(KeyboardMode.KANA);
// Test for setting input type.
for (TestData test : testDataListForTwelveKeys) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
model.setInputType(test.inputType);
if (test.expectedKeyboardMode == null) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
} else {
assertEquals(test.toString(), test.expectedKeyboardMode, model.getKeyboardMode());
}
model.setInputType(InputType.TYPE_NULL);
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
}
// Test for setting keyboard layout.
for (TestData test : testDataListForTwelveKeys) {
model.setInputType(test.inputType);
// Flips keyboard layout.
model.setKeyboardLayout(KeyboardLayout.QWERTY);
model.setKeyboardLayout(KeyboardLayout.TWELVE_KEYS);
if (test.expectedKeyboardMode == null) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
} else {
assertEquals(test.toString(), test.expectedKeyboardMode, model.getKeyboardMode());
}
}
TestData[] testDataListForQwertyAndGodan = {
new TestData(InputType.TYPE_CLASS_DATETIME, KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE,
KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL,
KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME,
KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_NUMBER, KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_PHONE, KeyboardMode.NUMBER),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD,
KeyboardMode.ALPHABET),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS,
null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD,
KeyboardMode.ALPHABET),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT, null),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS,
KeyboardMode.ALPHABET),
new TestData(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD,
KeyboardMode.ALPHABET),
};
// Reset to qwerty.
model.setInputType(InputType.TYPE_NULL);
model.setKeyboardLayout(KeyboardLayout.QWERTY);
model.setKeyboardMode(KeyboardMode.KANA);
// Test for setting input type.
for (TestData test : testDataListForQwertyAndGodan) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
model.setInputType(test.inputType);
if (test.expectedKeyboardMode == null) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
} else {
assertEquals(test.toString(), test.expectedKeyboardMode, model.getKeyboardMode());
}
model.setInputType(InputType.TYPE_NULL);
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
}
// Test for setting keyboard layout.
for (TestData test : testDataListForQwertyAndGodan) {
model.setInputType(test.inputType);
// Flips keyboard layout.
model.setKeyboardLayout(KeyboardLayout.TWELVE_KEYS);
model.setKeyboardLayout(KeyboardLayout.QWERTY);
if (test.expectedKeyboardMode == null) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
} else {
assertEquals(test.toString(), test.expectedKeyboardMode, model.getKeyboardMode());
}
}
// Reset to Godan.
model.setInputType(InputType.TYPE_NULL);
model.setKeyboardLayout(KeyboardLayout.GODAN);
model.setKeyboardMode(KeyboardMode.KANA);
// Test for setting input type.
for (TestData test : testDataListForQwertyAndGodan) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
model.setInputType(test.inputType);
if (test.expectedKeyboardMode == null) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
} else {
assertEquals(test.toString(), test.expectedKeyboardMode, model.getKeyboardMode());
}
model.setInputType(InputType.TYPE_NULL);
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
}
// Test for setting keyboard layout.
for (TestData test : testDataListForQwertyAndGodan) {
model.setInputType(test.inputType);
// Flips keyboard layout.
model.setKeyboardLayout(KeyboardLayout.TWELVE_KEYS);
model.setKeyboardLayout(KeyboardLayout.GODAN);
if (test.expectedKeyboardMode == null) {
assertEquals(test.toString(), KeyboardMode.KANA, model.getKeyboardMode());
} else {
assertEquals(test.toString(), test.expectedKeyboardMode, model.getKeyboardMode());
}
}
}
public void testInputTypeScenario() {
JapaneseSoftwareKeyboardModel model = new JapaneseSoftwareKeyboardModel();
model.setKeyboardLayout(KeyboardLayout.TWELVE_KEYS);
model.setKeyboardMode(KeyboardMode.KANA);
model.setInputType(InputType.TYPE_CLASS_NUMBER);
assertEquals(KeyboardMode.NUMBER, model.getKeyboardMode());
model.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
assertEquals(KeyboardMode.ALPHABET, model.getKeyboardMode());
model.setInputType(InputType.TYPE_NULL);
// The initial state should be remembered.
assertEquals(KeyboardMode.KANA, model.getKeyboardMode());
model.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
assertEquals(KeyboardMode.ALPHABET, model.getKeyboardMode());
model.setKeyboardMode(KeyboardMode.SYMBOL_NUMBER);
assertEquals(KeyboardMode.SYMBOL_NUMBER, model.getKeyboardMode());
// Even after the keyboard mode overwriting, the keyboard mode should be revereted before
// input-type-setting.
model.setInputType(InputType.TYPE_NULL);
assertEquals(KeyboardMode.KANA, model.getKeyboardMode());
}
}