blob: e7559527d8563f89caeed0c31b862fe2e945fa1d [file] [log] [blame]
// Copyright 2010-2014, 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.preference;
import org.mozc.android.inputmethod.japanese.ViewManagerInterface.LayoutAdjustment;
import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.InputStyle;
import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.KeyboardLayout;
import org.mozc.android.inputmethod.japanese.resources.R;
import org.mozc.android.inputmethod.japanese.testing.MozcPreferenceUtil;
import org.mozc.android.inputmethod.japanese.testing.Parameter;
import org.mozc.android.inputmethod.japanese.view.SkinType;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
/**
*/
public class ClientSidePreferenceTest extends InstrumentationTestCase {
// Use different values for portrait and landscape.
private static final KeyboardLayout PORTRAIT_KEYBOARD_LAYOUT = KeyboardLayout.TWELVE_KEYS;
private static final KeyboardLayout LANDSCAPE_KEYBOARD_LAYOUT = KeyboardLayout.QWERTY;
private static final InputStyle PORTRAIT_INPUT_STYLE = InputStyle.FLICK;
private static final InputStyle LANDSCAPE_INPUT_STYLE = InputStyle.TOGGLE_FLICK;
private static final boolean PORTRAIT_QWERTY_LAYOUT_FOR_ALPHABET = true;
private static final boolean LANDSCAPE_QWERTY_LAYOUT_FOR_ALPHABET = false;
private static final int PORTRAIT_FLICK_SENSITIVITY = 10;
private static final int LANDSCAPE_FLICK_SENSITIVITY = -10;
private static final boolean PORTRAIT_FULLSCREEN_MODE = true;
private static final boolean LANDSCAPE_FULLSCREEN_MODE = false;
private static final LayoutAdjustment PORTRAIT_LAYOUT_ADJUSTMENT = LayoutAdjustment.RIGHT;
private static final LayoutAdjustment LANDSCAPE_LAYOUT_ADJUSTMENT = LayoutAdjustment.LEFT;
@SmallTest
public void testClientSidePreferenceSharedPreferencesConfiguration() {
SharedPreferences sharedPreferences = MozcPreferenceUtil.getSharedPreferences(
getInstrumentation().getContext(), "CLIENT_SIDE_PREF");
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_PORTRAIT_KEYBOARD_LAYOUT_KEY,
PORTRAIT_KEYBOARD_LAYOUT.name());
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_PORTRAIT_INPUT_STYLE_KEY,
PORTRAIT_INPUT_STYLE.name());
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_PORTRAIT_QWERTY_LAYOUT_FOR_ALPHABET_KEY,
PORTRAIT_QWERTY_LAYOUT_FOR_ALPHABET);
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_PORTRAIT_FLICK_SENSITIVITY_KEY,
PORTRAIT_FLICK_SENSITIVITY);
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_LANDSCAPE_KEYBOARD_LAYOUT_KEY,
LANDSCAPE_KEYBOARD_LAYOUT.name());
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_LANDSCAPE_INPUT_STYLE_KEY,
LANDSCAPE_INPUT_STYLE.name());
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_LANDSCAPE_QWERTY_LAYOUT_FOR_ALPHABET_KEY,
LANDSCAPE_QWERTY_LAYOUT_FOR_ALPHABET);
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_LANDSCAPE_FLICK_SENSITIVITY_KEY,
LANDSCAPE_FLICK_SENSITIVITY);
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_PORTRAIT_FULLSCREEN_KEY,
PORTRAIT_FULLSCREEN_MODE);
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_LANDSCAPE_FULLSCREEN_KEY,
LANDSCAPE_FULLSCREEN_MODE);
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_PORTRAIT_LAYOUT_ADJUSTMENT_KEY,
PORTRAIT_LAYOUT_ADJUSTMENT.name());
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences, PreferenceUtil.PREF_LANDSCAPE_LAYOUT_ADJUSTMENT_KEY,
LANDSCAPE_LAYOUT_ADJUSTMENT.name());
Resources resources = getInstrumentation().getTargetContext().getResources();
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences,
resources.getString(R.string.pref_skin_type_key),
SkinType.BLUE_LIGHTGRAY.name());
class TestData extends Parameter {
final int orientation;
final boolean usePortraitKeyboardSettingsForLandscape;
final KeyboardLayout expectedKeyboardLayout;
final InputStyle expectedInputStyle;
final boolean expectedQwertyLayoutForAlphabet;
final int expectedFlickSensitivity;
final boolean expectedFullscreenMode;
final LayoutAdjustment expectedLayoutAdjustment;
final SkinType expectedSkinType;
TestData(int orientation,
boolean usePortraitKeyboardSettingsForLandscape,
KeyboardLayout expectedKeyboardLayout,
InputStyle expectedInputStyle,
boolean expectedQwertyLayoutForAlphabet,
int expectedFlickSensitivity,
LayoutAdjustment expectedLayoutAdjustment,
boolean expectedFullscreenMode,
SkinType expectedSkinType) {
this.orientation = orientation;
this.usePortraitKeyboardSettingsForLandscape = usePortraitKeyboardSettingsForLandscape;
this.expectedKeyboardLayout = expectedKeyboardLayout;
this.expectedInputStyle = expectedInputStyle;
this.expectedQwertyLayoutForAlphabet = expectedQwertyLayoutForAlphabet;
this.expectedFlickSensitivity = expectedFlickSensitivity;
this.expectedLayoutAdjustment = expectedLayoutAdjustment;
this.expectedFullscreenMode = expectedFullscreenMode;
this.expectedSkinType = expectedSkinType;
}
}
TestData[] testDataList = {
new TestData(Configuration.ORIENTATION_PORTRAIT,
false,
PORTRAIT_KEYBOARD_LAYOUT,
PORTRAIT_INPUT_STYLE,
PORTRAIT_QWERTY_LAYOUT_FOR_ALPHABET,
PORTRAIT_FLICK_SENSITIVITY,
PORTRAIT_LAYOUT_ADJUSTMENT,
PORTRAIT_FULLSCREEN_MODE,
SkinType.BLUE_LIGHTGRAY
),
new TestData(Configuration.ORIENTATION_LANDSCAPE,
false,
LANDSCAPE_KEYBOARD_LAYOUT,
LANDSCAPE_INPUT_STYLE,
LANDSCAPE_QWERTY_LAYOUT_FOR_ALPHABET,
LANDSCAPE_FLICK_SENSITIVITY,
LANDSCAPE_LAYOUT_ADJUSTMENT,
LANDSCAPE_FULLSCREEN_MODE,
SkinType.BLUE_LIGHTGRAY),
new TestData(Configuration.ORIENTATION_PORTRAIT,
true,
PORTRAIT_KEYBOARD_LAYOUT,
PORTRAIT_INPUT_STYLE,
PORTRAIT_QWERTY_LAYOUT_FOR_ALPHABET,
PORTRAIT_FLICK_SENSITIVITY,
PORTRAIT_LAYOUT_ADJUSTMENT,
PORTRAIT_FULLSCREEN_MODE,
SkinType.BLUE_LIGHTGRAY),
new TestData(Configuration.ORIENTATION_LANDSCAPE,
true,
PORTRAIT_KEYBOARD_LAYOUT,
PORTRAIT_INPUT_STYLE,
PORTRAIT_QWERTY_LAYOUT_FOR_ALPHABET,
PORTRAIT_FLICK_SENSITIVITY,
PORTRAIT_LAYOUT_ADJUSTMENT,
LANDSCAPE_FULLSCREEN_MODE,
SkinType.BLUE_LIGHTGRAY),
};
for (TestData testData : testDataList) {
MozcPreferenceUtil.updateSharedPreference(
sharedPreferences,
PreferenceUtil.PREF_USE_PORTRAIT_KEYBOARD_SETTINGS_FOR_LANDSCAPE_KEY,
testData.usePortraitKeyboardSettingsForLandscape);
Configuration configuration = new Configuration();
configuration.orientation = testData.orientation;
ClientSidePreference preference =
new ClientSidePreference(sharedPreferences, resources, configuration.orientation);
assertEquals(testData.toString(),
testData.expectedKeyboardLayout, preference.getKeyboardLayout());
assertEquals(testData.toString(),
testData.expectedInputStyle, preference.getInputStyle());
assertEquals(testData.toString(),
testData.expectedQwertyLayoutForAlphabet,
preference.isQwertyLayoutForAlphabet());
assertEquals(testData.toString(),
testData.expectedFlickSensitivity, preference.getFlickSensitivity());
assertEquals(testData.toString(),
testData.expectedLayoutAdjustment, preference.getLayoutAdjustment());
assertEquals(testData.toString(),
testData.expectedFullscreenMode, preference.isFullscreenMode());
assertEquals(testData.toString(),
testData.expectedSkinType, preference.getSkinType());
}
}
static enum TestGetEnum {
BETA,
GAMMA,
DELTA,
}
@SmallTest
public void testGetEnum() {
SharedPreferences sharedPreferences = MozcPreferenceUtil.getSharedPreferences(
getInstrumentation().getContext(), "CLIENT_SIDE_PREF");
SharedPreferences.Editor editor = sharedPreferences.edit();
String key1 = "key1";
editor.putString(key1, "ALPHA");
String key2 = "key2";
editor.putString(key2, "DELTA");
editor.commit();
assertEquals(TestGetEnum.BETA,
PreferenceUtil.getEnum(sharedPreferences, key1, TestGetEnum.class,
TestGetEnum.GAMMA, TestGetEnum.BETA));
assertEquals(TestGetEnum.GAMMA,
PreferenceUtil.getEnum(sharedPreferences, key1, TestGetEnum.class,
TestGetEnum.GAMMA));
assertEquals(TestGetEnum.DELTA,
PreferenceUtil.getEnum(sharedPreferences, key2, TestGetEnum.class,
TestGetEnum.GAMMA));
}
}