summaryrefslogtreecommitdiff
path: root/src/drivers/test/test_gpio_expander.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/test/test_gpio_expander.cpp')
-rw-r--r--src/drivers/test/test_gpio_expander.cpp53
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