summaryrefslogtreecommitdiff
path: root/src/drivers/test/test_gpio_expander.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-09 16:28:19 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-09 16:28:19 +1100
commit37041b810fbd10aab0834a33ae1dbd9edbb8bcb9 (patch)
treebeefecd27395821204f3d11823f566f671e8a1e1 /src/drivers/test/test_gpio_expander.cpp
parent34330daadfded8e9a421ba1d7c9ef8757ab92599 (diff)
downloadtangara-fw-37041b810fbd10aab0834a33ae1dbd9edbb8bcb9.tar.gz
Add so many tests i am going to die
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