diff options
author | Yuval Peress <peress@google.com> | 2021-10-03 23:54:53 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-05 14:24:11 +0000 |
commit | 7399d82bc7183de1f881677f0ba05738fd650e03 (patch) | |
tree | b4e1b98b63acdd5f49ac3ac50ed25b1d7192c89f /zephyr/test/drivers/src/isl923x.c | |
parent | 021f2754aa8722288cff2362c470a82ef352436b (diff) | |
download | chrome-ec-7399d82bc7183de1f881677f0ba05738fd650e03.tar.gz |
zephyr: test: isl923x::init
Test the remaining (failure/uncommon) code paths in init(). This includes
a mocking of the system_jumped_late function which was already stubbed
to always return false. This mock will later need to be cleaned up with
a better mock to avoid the custom struct added.
BRANCH=none
BUG=b:201602829
TEST=zmake configure --test zephyr/test/drivers
Signed-off-by: Yuval Peress <peress@google.com>
Change-Id: I1be53b0a15850d8b97b7b5a96ccef764f0782816
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3201916
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'zephyr/test/drivers/src/isl923x.c')
-rw-r--r-- | zephyr/test/drivers/src/isl923x.c | 110 |
1 files changed, 109 insertions, 1 deletions
diff --git a/zephyr/test/drivers/src/isl923x.c b/zephyr/test/drivers/src/isl923x.c index 2753c12b26..0bcf8c8382 100644 --- a/zephyr/test/drivers/src/isl923x.c +++ b/zephyr/test/drivers/src/isl923x.c @@ -13,6 +13,7 @@ #include "driver/charger/isl923x_public.h" #include "emul/emul_common_i2c.h" #include "emul/emul_isl923x.h" +#include "system.h" BUILD_ASSERT(CONFIG_CHARGER_SENSE_RESISTOR == 10 || CONFIG_CHARGER_SENSE_RESISTOR == 5); @@ -566,6 +567,112 @@ static void test_get_vbus_voltage(void) } } +static void test_init(void) +{ + const struct emul *isl923x_emul = ISL923X_EMUL; + struct i2c_emul *i2c_emul = isl923x_emul_get_i2c_emul(isl923x_emul); + int input_current; + + /* Test failed CTRL2 register read (prochot debounce) */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_read_fail_reg(i2c_emul, ISL923X_REG_CONTROL2); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_read_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* Test failed CTRL2 register write */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_write_fail_reg(i2c_emul, ISL923X_REG_CONTROL2); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_write_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* Test failed CTRL 0 read */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_read_fail_reg(i2c_emul, ISL923X_REG_CONTROL0); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_read_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* Test failed CTRL 0 write */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_write_fail_reg(i2c_emul, ISL923X_REG_CONTROL0); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_write_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* Test failed CTRL 3 read */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_read_fail_reg(i2c_emul, ISL9238_REG_CONTROL3); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_read_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* Test failed CTRL 3 write */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_write_fail_reg(i2c_emul, ISL9238_REG_CONTROL3); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_write_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* Test failed write adapter current limit */ + isl923x_emul_reset(isl923x_emul); + i2c_common_emul_set_write_fail_reg(i2c_emul, + ISL923X_REG_ADAPTER_CURRENT_LIMIT1); + isl923x_drv.init(CHARGER_NUM); + i2c_common_emul_set_write_fail_reg(i2c_emul, + I2C_COMMON_EMUL_NO_FAIL_REG); + zassert_ok(isl923x_drv.get_input_current_limit(CHARGER_NUM, + &input_current), + NULL); + zassert_equal(0, input_current, + "Expected input current 0mV but got %dmV", input_current); + + /* + * Test system_jumped_late being true (will not call + * set_input_current_limit) + */ + system_jumped_late_mock.ret_val = true; + system_jumped_late_mock.call_count = 0; + isl923x_emul_reset(isl923x_emul); + isl923x_drv.init(CHARGER_NUM); + zassert_equal( + 1, system_jumped_late_mock.call_count, + "Expected to have called system_jumped_late() once, but got %d calls", + system_jumped_late_mock.call_count); + system_jumped_late_mock.ret_val = false; +} + void test_suite_isl923x(void) { ztest_test_suite(isl923x, @@ -583,6 +690,7 @@ void test_suite_isl923x(void) ztest_unit_test(test_set_dc_prochot), ztest_unit_test(test_comparator_inversion), ztest_unit_test(test_discharge_on_ac), - ztest_unit_test(test_get_vbus_voltage)); + ztest_unit_test(test_get_vbus_voltage), + ztest_unit_test(test_init)); ztest_run_test_suite(isl923x); } |