diff options
author | Tomasz Michalec <tm@semihalf.com> | 2021-11-10 12:53:27 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-11-15 12:00:19 +0000 |
commit | 304eef2fadf54307eee3ee35a06326f5c52672c9 (patch) | |
tree | 6ca1d7965ea873e9f8a77ef86126306b4406e132 | |
parent | ea789cdeaae45ad0473ffc3ea7c68dfca6e82966 (diff) | |
download | chrome-ec-304eef2fadf54307eee3ee35a06326f5c52672c9.tar.gz |
zephyr: drivers: add usb_mux typec command test
Add unit test for command_typec(). It is tested that command is checking
arguments and correct usb_mux functions are called depending on
arguments.
BUG=b:184857076
BRANCH=none
TEST=zmake configure --test zephyr/test/drivers
Signed-off-by: Tomasz Michalec <tm@semihalf.com>
Change-Id: Idf78320a791c20440da3f5b66d524dc7161e0f69
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3270686
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Tested-by: Tomasz Michalec <tmichalec@google.com>
Commit-Queue: Tomasz Michalec <tmichalec@google.com>
-rw-r--r-- | zephyr/test/drivers/src/usb_mux.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/zephyr/test/drivers/src/usb_mux.c b/zephyr/test/drivers/src/usb_mux.c index c782101fee..cf6190eec9 100644 --- a/zephyr/test/drivers/src/usb_mux.c +++ b/zephyr/test/drivers/src/usb_mux.c @@ -8,6 +8,8 @@ #include <ztest.h> #include <drivers/gpio.h> #include <drivers/gpio/gpio_emul.h> +#include <shell/shell.h> +#include <shell/shell_uart.h> #include "common.h" #include "ec_commands.h" @@ -632,6 +634,77 @@ static void test_usb_mux_hc_mux_info(void) response.flags, exp_mode); } +/** Test typec console command */ +static void test_usb_mux_typec_command(void) +{ + mux_state_t exp_mode; + + /* Test error on command with no argument */ + zassert_equal(EC_ERROR_PARAM_COUNT, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec"), NULL); + + /* + * Test success on passing "debug" as first argument. This will enable + * debug prints, but it is not possible to test that in unit test + * without accessing cprints output. + */ + zassert_equal(EC_SUCCESS, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec debug"), NULL); + + /* Test error on port argument that is not a number */ + zassert_equal(EC_ERROR_PARAM1, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec test1"), NULL); + + /* Test error on invalid port number */ + zassert_equal(EC_ERROR_PARAM1, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec 5"), NULL); + + /* + * Test success on correct port number. Command should print mux state + * on console, but it is not possible to check that in unit test. + */ + setup_ztest_proxy_get(0, 2, EC_SUCCESS, USB_PD_MUX_TBT_COMPAT_ENABLED); + zassert_equal(EC_SUCCESS, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec 1"), NULL); + + /* Test setting none mode */ + exp_mode = USB_PD_MUX_NONE; + setup_ztest_proxy_set(0, 2, EC_SUCCESS, exp_mode); + /* Mux will enter low power mode */ + setup_ztest_proxy_enter_lpm(0, 2, EC_SUCCESS); + zassert_equal(EC_SUCCESS, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec 1 none"), NULL); + + /* Test setting USB mode */ + exp_mode = USB_PD_MUX_USB_ENABLED; + setup_ztest_proxy_set(0, 2, EC_SUCCESS, exp_mode); + /* Mux will exit low power mode */ + setup_ztest_proxy_init(0, 2, EC_SUCCESS); + zassert_equal(EC_SUCCESS, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec 1 usb"), NULL); + + /* Test setting DP mode */ + exp_mode = USB_PD_MUX_DP_ENABLED; + setup_ztest_proxy_set(0, 2, EC_SUCCESS, exp_mode); + zassert_equal(EC_SUCCESS, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec 1 dp"), NULL); + + /* Test setting dock mode */ + exp_mode = USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED; + setup_ztest_proxy_set(0, 2, EC_SUCCESS, exp_mode); + zassert_equal(EC_SUCCESS, + shell_execute_cmd(shell_backend_uart_get_ptr(), + "typec 1 dock"), NULL); +} + /** Setup proxy chain and uninit usb muxes */ void setup_uninit_mux(void) { @@ -681,6 +754,9 @@ void test_suite_usb_mux(void) setup_init_mux, resotre_usb_mux_chain), ztest_unit_test_setup_teardown( test_usb_mux_hc_mux_info, + setup_init_mux, resotre_usb_mux_chain), + ztest_unit_test_setup_teardown( + test_usb_mux_typec_command, setup_init_mux, resotre_usb_mux_chain)); ztest_run_test_suite(usb_mux); } |