diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTests.java
index 1f6141e..9dc1fac 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardStateTests.java
@@ -29,9 +29,13 @@
     private static final int SYMBOLS_UNSHIFTED = 4;
     private static final int SYMBOLS_SHIFTED = 5;
 
-    static class KeyboardSwitcher implements KeyboardState.SwitchActions {
+    static class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
         public int mLayout = ALPHABET_UNSHIFTED;
 
+        public boolean mAutoCaps = NO_AUTO_CAPS;
+
+        final KeyboardState mState = new KeyboardState(this);
+
         @Override
         public void setAlphabetKeyboard() {
             mLayout = ALPHABET_UNSHIFTED;
@@ -66,22 +70,62 @@
         public void setSymbolsShiftedKeyboard() {
             mLayout = SYMBOLS_SHIFTED;
         }
+
+        public void toggleCapsLock() {
+            mState.onToggleCapsLock();
+        }
+
+        public void updateShiftState() {
+            mState.onUpdateShiftState(mAutoCaps);
+        }
+
+        public void loadKeyboard(String layoutSwitchBackSymbols,
+                boolean hasDistinctMultitouch) {
+            mState.onLoadKeyboard(layoutSwitchBackSymbols, hasDistinctMultitouch);
+        }
+
+        public void onPressShift(boolean withSliding) {
+            mState.onPressShift(withSliding);
+        }
+
+        public void onReleaseShift(boolean withSliding) {
+            mState.onReleaseShift(withSliding);
+        }
+
+        public void onPressSymbol() {
+            mState.onPressSymbol();
+        }
+
+        public void onReleaseSymbol() {
+            mState.onReleaseSymbol();
+        }
+
+        public void onOtherKeyPressed() {
+            mState.onOtherKeyPressed();
+        }
+
+        public void onCodeInput(int code, boolean isSinglePointer) {
+            mState.onCodeInput(code, isSinglePointer, mAutoCaps);
+        }
+
+        public void onCancelInput(boolean isSinglePointer) {
+            mState.onCancelInput(isSinglePointer);
+        }
+
     }
 
-    private KeyboardSwitcher mSwitcher;
-    private KeyboardState mState;
+    private MockKeyboardSwitcher mSwitcher;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
-        mSwitcher = new KeyboardSwitcher();
-        mState = new KeyboardState(mSwitcher);
+        mSwitcher = new MockKeyboardSwitcher();
 
-        final String layoutSwitchBackCharacter = "";
+        final String layoutSwitchBackSymbols = "";
         // TODO: Unit tests for non-distinct multi touch device.
         final boolean hasDistinctMultitouch = true;
-        mState.onLoadKeyboard(layoutSwitchBackCharacter, hasDistinctMultitouch);
+        mSwitcher.loadKeyboard(layoutSwitchBackSymbols, hasDistinctMultitouch);
     }
 
     // Argument for KeyboardState.onPressShift and onReleaseShift.
@@ -125,15 +169,15 @@
     // Shift key in alphabet mode.
     public void testShift() {
         // Press/release shift key.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetManualShifted();
 
         // Press/release shift key.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetNormal();
 
         // TODO: Sliding test
@@ -142,15 +186,15 @@
     // Switching between alphabet and symbols.
     public void testAlphabetAndSymbols() {
         // Press/release "?123" key.
-        mState.onPressSymbol();
+        mSwitcher.onPressSymbol();
         assertSymbolsNormal();
-        mState.onReleaseSymbol();
+        mSwitcher.onReleaseSymbol();
         assertSymbolsNormal();
 
         // Press/release "ABC" key.
-        mState.onPressSymbol();
+        mSwitcher.onPressSymbol();
         assertAlphabetNormal();
-        mState.onReleaseSymbol();
+        mSwitcher.onReleaseSymbol();
         assertAlphabetNormal();
 
         // TODO: Sliding test
@@ -160,21 +204,21 @@
     // Switching between symbols and symbols shifted.
     public void testSymbolsAndSymbolsShifted() {
         // Press/release "?123" key.
-        mState.onPressSymbol();
+        mSwitcher.onPressSymbol();
         assertSymbolsNormal();
-        mState.onReleaseSymbol();
+        mSwitcher.onReleaseSymbol();
         assertSymbolsNormal();
 
         // Press/release "=\<" key.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertSymbolsShifted();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertSymbolsShifted();
 
         // Press/release "ABC" key.
-        mState.onPressSymbol();
+        mSwitcher.onPressSymbol();
         assertAlphabetNormal();
-        mState.onReleaseSymbol();
+        mSwitcher.onReleaseSymbol();
         assertAlphabetNormal();
 
         // TODO: Sliding test
@@ -183,15 +227,16 @@
 
     // Automatic upper case test
     public void testAutomaticUpperCase() {
+        mSwitcher.mAutoCaps = AUTO_CAPS;
         // Update shift state with auto caps enabled.
-        mState.onUpdateShiftState(true);
+        mSwitcher.updateShiftState();
         assertAlphabetAutomaticShifted();
 
         // Press shift key.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
         // Release shift key.
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetNormal();
 
         // TODO: Chording test.
@@ -209,25 +254,25 @@
     // TODO: Move long press recognizing timer/logic into KeyboardState.
     public void testLongPressShift() {
         // Long press shift key
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
         // Long press recognized in LatinKeyboardView.KeyTimerHandler.
-        mState.onToggleCapsLock();
+        mSwitcher.toggleCapsLock();
         assertAlphabetShiftLocked();
-        mState.onCodeInput(Keyboard.CODE_CAPSLOCK, SINGLE, NO_AUTO_CAPS);
+        mSwitcher.onCodeInput(Keyboard.CODE_CAPSLOCK, SINGLE);
         assertAlphabetShiftLocked();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetShiftLocked();
 
         // Long press shift key.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
         // Long press recognized in LatinKeyboardView.KeyTimerHandler.
-        mState.onToggleCapsLock();
+        mSwitcher.toggleCapsLock();
         assertAlphabetNormal();
-        mState.onCodeInput(Keyboard.CODE_CAPSLOCK, SINGLE, NO_AUTO_CAPS);
+        mSwitcher.onCodeInput(Keyboard.CODE_CAPSLOCK, SINGLE);
         assertAlphabetNormal();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetNormal();
     }
 
@@ -235,25 +280,25 @@
     // TODO: Move double tap recognizing timer/logic into KeyboardState.
     public void testDoubleTapShift() {
         // First shift key tap.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
-        mState.onCodeInput(Keyboard.CODE_SHIFT, SINGLE, NO_AUTO_CAPS);
+        mSwitcher.onCodeInput(Keyboard.CODE_SHIFT, SINGLE);
         assertAlphabetManualShifted();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetManualShifted();
         // Second shift key tap.
         // Double tap recognized in LatinKeyboardView.KeyTimerHandler.
-        mState.onToggleCapsLock();
+        mSwitcher.toggleCapsLock();
         assertAlphabetShiftLocked();
-        mState.onCodeInput(Keyboard.CODE_SHIFT, SINGLE, NO_AUTO_CAPS);
+        mSwitcher.onCodeInput(Keyboard.CODE_SHIFT, SINGLE);
         assertAlphabetShiftLocked();
 
         // First shift key tap.
-        mState.onPressShift(NOT_SLIDING);
+        mSwitcher.onPressShift(NOT_SLIDING);
         assertAlphabetManualShifted();
-        mState.onCodeInput(Keyboard.CODE_SHIFT, SINGLE, NO_AUTO_CAPS);
+        mSwitcher.onCodeInput(Keyboard.CODE_SHIFT, SINGLE);
         assertAlphabetManualShifted();
-        mState.onReleaseShift(NOT_SLIDING);
+        mSwitcher.onReleaseShift(NOT_SLIDING);
         assertAlphabetNormal();
         // Second shift key tap.
         // Second tap is ignored in LatinKeyboardView.KeyTimerHandler.
