• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package android.view;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertThrows;
6 
7 import androidx.test.ext.junit.runners.AndroidJUnit4;
8 import org.junit.Before;
9 import org.junit.Test;
10 import org.junit.runner.RunWith;
11 import org.robolectric.annotation.internal.DoNotInstrument;
12 
13 /**
14  * Test {@link android.view.KeyCharacterMap}.
15  *
16  * <p>Inspired from Android cts/tests/tests/view/src/android/view/cts/KeyCharacterMap.java
17  */
18 @DoNotInstrument
19 @RunWith(AndroidJUnit4.class)
20 public final class KeyCharacterMapTest {
21 
22   private KeyCharacterMap keyCharacterMap;
23 
24   @Before
setup()25   public void setup() {
26     keyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);
27   }
28 
29   @Test
testLoad()30   public void testLoad() {
31     keyCharacterMap = null;
32     keyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
33     assertNotNull(keyCharacterMap);
34   }
35 
36   @Test
testGetMatchNull()37   public void testGetMatchNull() {
38     assertThrows(
39         IllegalArgumentException.class, () -> keyCharacterMap.getMatch(KeyEvent.KEYCODE_0, null));
40   }
41 
42   @Test
testGetMatchMetaStateNull()43   public void testGetMatchMetaStateNull() {
44     assertThrows(
45         IllegalArgumentException.class,
46         () -> keyCharacterMap.getMatch(KeyEvent.KEYCODE_0, null, 1));
47   }
48 
49   @Test
testGetKeyboardType()50   public void testGetKeyboardType() {
51     assertThat(keyCharacterMap.getKeyboardType()).isEqualTo(KeyCharacterMap.FULL);
52   }
53 
54   @Test
testGetEventsNull()55   public void testGetEventsNull() {
56     assertThrows(IllegalArgumentException.class, () -> keyCharacterMap.getEvents(null));
57   }
58 
59   @Test
testGetEventsLowerCase()60   public void testGetEventsLowerCase() {
61     KeyEvent[] events = keyCharacterMap.getEvents("test".toCharArray());
62 
63     assertThat(events[0].getAction()).isEqualTo(KeyEvent.ACTION_DOWN);
64     assertThat(events[0].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_T);
65     assertThat(events[1].getAction()).isEqualTo(KeyEvent.ACTION_UP);
66     assertThat(events[1].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_T);
67 
68     assertThat(events[2].getAction()).isEqualTo(KeyEvent.ACTION_DOWN);
69     assertThat(events[2].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_E);
70     assertThat(events[3].getAction()).isEqualTo(KeyEvent.ACTION_UP);
71     assertThat(events[3].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_E);
72 
73     assertThat(events[4].getAction()).isEqualTo(KeyEvent.ACTION_DOWN);
74     assertThat(events[4].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_S);
75     assertThat(events[5].getAction()).isEqualTo(KeyEvent.ACTION_UP);
76     assertThat(events[5].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_S);
77 
78     assertThat(events[6].getAction()).isEqualTo(KeyEvent.ACTION_DOWN);
79     assertThat(events[6].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_T);
80     assertThat(events[7].getAction()).isEqualTo(KeyEvent.ACTION_UP);
81     assertThat(events[7].getKeyCode()).isEqualTo(KeyEvent.KEYCODE_T);
82   }
83 
84   @Test
testGetEventsCapital()85   public void testGetEventsCapital() {
86     // Just assert that we got something back, there are many ways to return correct KeyEvents for
87     // this sequence.
88     assertThat(keyCharacterMap.getEvents("Test".toCharArray())).isNotEmpty();
89   }
90 
91   @Test
testUnknownCharacters()92   public void testUnknownCharacters() {
93     assertThat(keyCharacterMap.get(KeyEvent.KEYCODE_UNKNOWN, 0)).isEqualTo(0);
94     assertThat(keyCharacterMap.get(KeyEvent.KEYCODE_BACK, 0)).isEqualTo(0);
95   }
96 
97   @Test
testGetNumber()98   public void testGetNumber() {
99     assertThat(keyCharacterMap.getNumber(KeyEvent.KEYCODE_1)).isEqualTo('1');
100   }
101 
102   @Test
testGetDisplayLabel()103   public void testGetDisplayLabel() {
104     assertThat(keyCharacterMap.getDisplayLabel(KeyEvent.KEYCODE_W)).isEqualTo('W');
105   }
106 
107   @Test
testIsPrintingKey()108   public void testIsPrintingKey() {
109     assertThat(keyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_W)).isTrue();
110     assertThat(keyCharacterMap.isPrintingKey(KeyEvent.KEYCODE_ALT_LEFT)).isFalse();
111   }
112 }
113