Fork of Tangara with customizations
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tangara-fw/src/drivers/test/test_gpio_expander.cpp

54 lines
1.6 KiB

#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