1 package android.view; 2 3 import static org.junit.Assert.assertEquals; 4 import static org.junit.Assume.assumeTrue; 5 6 import android.os.Build.VERSION; 7 import android.os.Build.VERSION_CODES; 8 import androidx.test.ext.junit.runners.AndroidJUnit4; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 import org.robolectric.annotation.internal.DoNotInstrument; 12 13 /** 14 * Test {@link KeyEventTest}. 15 * 16 * <p>Inspired from Android cts/tests/tests/view/src/android/view/cts/KeyEventTest.java 17 */ 18 @DoNotInstrument 19 @RunWith(AndroidJUnit4.class) 20 public final class KeyEventTest { 21 22 @Test testKeyCodeFromString()23 public void testKeyCodeFromString() { 24 assertEquals(KeyEvent.KEYCODE_A, KeyEvent.keyCodeFromString("KEYCODE_A")); 25 assertEquals( 26 KeyEvent.KEYCODE_A, KeyEvent.keyCodeFromString(Integer.toString(KeyEvent.KEYCODE_A))); 27 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("keycode_a")); 28 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("a")); 29 assertEquals(0, KeyEvent.keyCodeFromString("0")); 30 assertEquals(1, KeyEvent.keyCodeFromString("1")); 31 assertEquals(KeyEvent.KEYCODE_HOME, KeyEvent.keyCodeFromString("3")); 32 assertEquals( 33 KeyEvent.KEYCODE_POWER, 34 KeyEvent.keyCodeFromString(Integer.toString(KeyEvent.KEYCODE_POWER))); 35 assertEquals( 36 KeyEvent.KEYCODE_MENU, KeyEvent.keyCodeFromString(Integer.toString(KeyEvent.KEYCODE_MENU))); 37 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("back")); 38 39 assertEquals( 40 KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("KEYCODE_NOT_A_REAL_KEYCODE")); 41 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("NOT_A_REAL_KEYCODE")); 42 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("KEYCODE")); 43 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("KEYCODE_")); 44 assertEquals(KeyEvent.KEYCODE_UNKNOWN, KeyEvent.keyCodeFromString("")); 45 assertEquals( 46 KeyEvent.getMaxKeyCode(), 47 KeyEvent.keyCodeFromString(Integer.toString(KeyEvent.getMaxKeyCode()))); 48 } 49 50 /** 51 * Verify the "starting in {@link android.os.Build.VERSION_CODES#Q} the prefix "KEYCODE_" is 52 * optional." statement in {@link KeyEvent#keyCodeFromString(String)} reference docs. 53 */ 54 @Test testKeyCodeFromString_prefixOptionalFromQ()55 public void testKeyCodeFromString_prefixOptionalFromQ() { 56 assumeTrue(VERSION.SDK_INT >= VERSION_CODES.Q); 57 assertEquals(KeyEvent.KEYCODE_A, KeyEvent.keyCodeFromString("A")); 58 59 assertEquals(KeyEvent.KEYCODE_POWER, KeyEvent.keyCodeFromString("POWER")); 60 } 61 } 62