# This file contains a scenario for crash bug caused by a mishandling of
# candidate attributes.

# Enable IME
SEND_KEY	ON

SET_MOBILE_REQUEST

RESET_CONTEXT
UPDATE_MOBILE_KEYBOARD	QWERTY_MOBILE_TO_HALFWIDTHASCII	SPACE_OR_CONVERT_KEEPING_COMPOSITION
SWITCH_INPUT_MODE	HIRAGANA

SEND_KEYS	111
EXPECT_PREEDIT	１１１
SEND_KEY	ENTER
EXPECT_HAS_CANDIDATES
