diff options
-rw-r--r-- | arch/sandbox/dts/test.dts | 5 | ||||
-rw-r--r-- | test/dm/usb.c | 31 |
2 files changed, 36 insertions, 0 deletions
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 52749c0..b6d9a15 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -325,6 +325,11 @@ sandbox,filepath = "testflash2.bin"; }; + keyb@3 { + reg = <3>; + compatible = "sandbox,usb-keyb"; + }; + }; }; }; diff --git a/test/dm/usb.c b/test/dm/usb.c index fb193e8..7d6b644 100644 --- a/test/dm/usb.c +++ b/test/dm/usb.c @@ -10,6 +10,7 @@ #include <usb.h> #include <asm/io.h> #include <asm/state.h> +#include <asm/test.h> #include <dm/device-internal.h> #include <dm/test.h> #include <dm/uclass-internal.h> @@ -258,3 +259,33 @@ static int dm_test_usb_tree_reorder(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_usb_tree_reorder, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); + +static int dm_test_usb_keyb(struct unit_test_state *uts) +{ + struct udevice *dev; + + state_set_skip_delays(true); + ut_assertok(usb_init()); + + /* Initially there should be no characters */ + ut_asserteq(0, tstc()); + + ut_assertok(uclass_get_device_by_name(UCLASS_USB_EMUL, "keyb", + &dev)); + + /* + * Add a string to the USB keyboard buffer - it should appear in + * stdin + */ + ut_assertok(sandbox_usb_keyb_add_string(dev, "ab")); + ut_asserteq(1, tstc()); + ut_asserteq('a', getc()); + ut_asserteq(1, tstc()); + ut_asserteq('b', getc()); + ut_asserteq(0, tstc()); + + ut_assertok(usb_stop()); + + return 0; +} +DM_TEST(dm_test_usb_keyb, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); |