@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));
 }
  @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());

    MozcPreferenceUtil.updateSharedPreference(
        sharedPreferences, PreferenceUtil.PREF_SKIN_TYPE, 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, configuration);
      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());
    }
  }