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