private void doTestMoreKeysOf(
      final int code,
      final InputMethodSubtype subtype,
      final int elementId,
      final int inputType,
      final int imeOptions,
      final ExpectedMoreKey... expectedMoreKeys) {
    final EditorInfo editorInfo = new EditorInfo();
    editorInfo.inputType = inputType;
    editorInfo.imeOptions = imeOptions;
    final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
    final Keyboard keyboard = layoutSet.getKeyboard(elementId);

    final Key actualKey = keyboard.getKey(code);
    final MoreKeySpec[] actualMoreKeys = actualKey.getMoreKeys();
    final String tag = actualKey.toString() + " moreKeys=" + Arrays.toString(actualMoreKeys);
    if (expectedMoreKeys.length == 0) {
      assertEquals(tag, null, actualMoreKeys);
      return;
    }
    if (expectedMoreKeys.length == 1) {
      assertEquals(tag + " fixedOrder", false, actualKey.isMoreKeysFixedOrder());
      assertEquals(tag + " fixedColumn", false, actualKey.isMoreKeysFixedColumn());
    } else {
      assertEquals(tag + " fixedOrder", true, actualKey.isMoreKeysFixedOrder());
      assertEquals(tag + " fixedColumn", true, actualKey.isMoreKeysFixedColumn());
      // TODO: Can't handle multiple rows of more keys.
      assertEquals(tag + " column", expectedMoreKeys.length, actualKey.getMoreKeysColumnNumber());
    }
    assertNotNull(tag + " moreKeys", actualMoreKeys);
    assertEquals(tag, expectedMoreKeys.length, actualMoreKeys.length);
    for (int index = 0; index < actualMoreKeys.length; index++) {
      final int expectedLabelResId = expectedMoreKeys[index].mLabelResId;
      if (expectedLabelResId == ExpectedMoreKey.NO_LABEL) {
        assertEquals(tag + " label " + index, null, actualMoreKeys[index].mLabel);
      } else {
        final CharSequence expectedLabel = getContext().getText(expectedLabelResId);
        assertEquals(tag + " label " + index, expectedLabel, actualMoreKeys[index].mLabel);
      }
      final int expectedIconId = expectedMoreKeys[index].mIconId;
      assertEquals(tag + " icon " + index, expectedIconId, actualMoreKeys[index].mIconId);
    }
  }