mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 17:05:36 +00:00
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include "esphome/components/power_supply/power_supply.h"
|
|
#include "esphome/core/gpio.h"
|
|
#include "esphome/core/component.h"
|
|
|
|
namespace esphome::power_supply::testing {
|
|
|
|
// Minimal dummy internal GPIO pin implementation for testing
|
|
class DummyInternalPin : public InternalGPIOPin {
|
|
public:
|
|
DummyInternalPin() = default;
|
|
void setup() override {}
|
|
void pin_mode(esphome::gpio::Flags) override {}
|
|
esphome::gpio::Flags get_flags() const override { return esphome::gpio::FLAG_NONE; }
|
|
bool digital_read() override { return false; }
|
|
void digital_write(bool) override {}
|
|
void detach_interrupt() const override {}
|
|
ISRInternalGPIOPin to_isr() const override { return ISRInternalGPIOPin(); }
|
|
uint8_t get_pin() const override { return 0; }
|
|
bool is_inverted() const override { return false; }
|
|
|
|
protected:
|
|
// Implement protected attach_interrupt required by InternalGPIOPin
|
|
void attach_interrupt(void (*func)(void *), void *arg, esphome::gpio::InterruptType type) const override {}
|
|
};
|
|
|
|
TEST(PowerSupply, HasHigherPriorityThanBusWhenInternalAndEnableOnBoot) {
|
|
power_supply::PowerSupply ps;
|
|
DummyInternalPin pin;
|
|
ps.set_pin(&pin);
|
|
ps.set_enable_on_boot(true);
|
|
|
|
// POWER priority should be greater than BUS priority
|
|
EXPECT_GT(ps.get_setup_priority(), setup_priority::BUS);
|
|
}
|
|
|
|
TEST(PowerSupply, FallsBackToIOWhenNotEnableOnBoot) {
|
|
power_supply::PowerSupply ps;
|
|
DummyInternalPin pin;
|
|
ps.set_pin(&pin);
|
|
ps.set_enable_on_boot(false);
|
|
|
|
EXPECT_EQ(ps.get_setup_priority(), setup_priority::IO);
|
|
}
|
|
|
|
} // namespace esphome::power_supply::testing
|