Add xkb_state_key_get_one_sym
[platform/upstream/libxkbcommon.git] / test / state.c
index cdb7583..3da4c99 100644 (file)
@@ -96,6 +96,7 @@ test_update_key(struct xkb_keymap *keymap)
 {
     struct xkb_state *state = xkb_state_new(keymap);
     const xkb_keysym_t *syms;
+    xkb_keysym_t one_sym;
     int num_syms;
 
     assert(state);
@@ -174,6 +175,20 @@ test_update_key(struct xkb_keymap *keymap)
     num_syms = xkb_state_key_get_syms(state, KEY_Q + EVDEV_OFFSET, &syms);
     assert(num_syms == 1 && syms[0] == XKB_KEY_q);
 
+    /* Multiple symbols */
+    num_syms = xkb_state_key_get_syms(state, KEY_6 + EVDEV_OFFSET, &syms);
+    assert(num_syms == 5 &&
+           syms[0] == XKB_KEY_H && syms[1] == XKB_KEY_E &&
+           syms[2] == XKB_KEY_L && syms[3] == XKB_KEY_L &&
+           syms[4] == XKB_KEY_O);
+    one_sym = xkb_state_key_get_one_sym(state, KEY_6 + EVDEV_OFFSET);
+    assert(one_sym == XKB_KEY_NoSymbol);
+    xkb_state_update_key(state, KEY_6 + EVDEV_OFFSET, XKB_KEY_DOWN);
+    xkb_state_update_key(state, KEY_6 + EVDEV_OFFSET, XKB_KEY_UP);
+
+    one_sym = xkb_state_key_get_one_sym(state, KEY_5 + EVDEV_OFFSET);
+    assert(one_sym == XKB_KEY_5);
+
     xkb_state_unref(state);
 }