diff options
Diffstat (limited to 'src/drivers/test/test_gpio_expander.cpp')
| -rw-r--r-- | src/drivers/test/test_gpio_expander.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/drivers/test/test_gpio_expander.cpp b/src/drivers/test/test_gpio_expander.cpp new file mode 100644 index 00000000..901953d0 --- /dev/null +++ b/src/drivers/test/test_gpio_expander.cpp @@ -0,0 +1,53 @@ +#include "gpio-expander.hpp" +#include "i2c.hpp" +#include "i2c_fixture.hpp" + +#include "catch2/catch.hpp" + +namespace drivers { + +TEST_CASE("gpio expander", "[integration]") { + I2CFixture i2c; + GpioExpander expander; + SECTION("with() writes when ") { + // Initial value. + expander.Read(); + REQUIRE(expander.get_input(GpioExpander::GPIO_1) == true); + + expander.with( + [&](auto& gpio) { gpio.set_pin(GpioExpander::GPIO_1, false); }); + + expander.Read(); + REQUIRE(expander.get_input(GpioExpander::GPIO_1) == false); + } + + SECTION("setting individual pins") { + expander.set_pin(GpioExpander::GPIO_1, true); + expander.set_pin(GpioExpander::GPIO_2, false); + expander.set_pin(GpioExpander::GPIO_3, false); + expander.set_pin(GpioExpander::GPIO_4, true); + + expander.Write(); + expander.Read(); + + REQUIRE(expander.get_input(GpioExpander::GPIO_1) == true); + REQUIRE(expander.get_input(GpioExpander::GPIO_2) == false); + REQUIRE(expander.get_input(GpioExpander::GPIO_3) == false); + REQUIRE(expander.get_input(GpioExpander::GPIO_4) == true); + + expander.set_pin(GpioExpander::GPIO_1, false); + expander.set_pin(GpioExpander::GPIO_2, true); + expander.set_pin(GpioExpander::GPIO_3, true); + expander.set_pin(GpioExpander::GPIO_4, false); + + expander.Write(); + expander.Read(); + + REQUIRE(expander.get_input(GpioExpander::GPIO_1) == false); + REQUIRE(expander.get_input(GpioExpander::GPIO_2) == true); + REQUIRE(expander.get_input(GpioExpander::GPIO_3) == true); + REQUIRE(expander.get_input(GpioExpander::GPIO_4) == false); + } +} + +} // namespace drivers |
