#ifndef MOCK_HAL_H #define MOCK_HAL_H #include #include "hal.h" /* * StrictMock-friendly HAL mock for unit tests. * * Use this when you want to verify exact call sequences: * EXPECT_CALL(mock, digitalWrite(13, HIGH)).Times(1); */ class MockHal : public Hal { public: // GPIO MOCK_METHOD(void, pinMode, (uint8_t pin, uint8_t mode), (override)); MOCK_METHOD(void, digitalWrite, (uint8_t pin, uint8_t value), (override)); MOCK_METHOD(uint8_t, digitalRead, (uint8_t pin), (override)); MOCK_METHOD(int, analogRead, (uint8_t pin), (override)); MOCK_METHOD(void, analogWrite, (uint8_t pin, int value), (override)); // Timing MOCK_METHOD(unsigned long, millis, (), (override)); MOCK_METHOD(unsigned long, micros, (), (override)); MOCK_METHOD(void, delay, (unsigned long ms), (override)); MOCK_METHOD(void, delayMicroseconds, (unsigned long us), (override)); // Serial MOCK_METHOD(void, serialBegin, (unsigned long baud), (override)); MOCK_METHOD(void, serialPrint, (const char* msg), (override)); MOCK_METHOD(void, serialPrintln, (const char* msg), (override)); MOCK_METHOD(int, serialAvailable, (), (override)); MOCK_METHOD(int, serialRead, (), (override)); // I2C MOCK_METHOD(void, i2cBegin, (), (override)); MOCK_METHOD(void, i2cBeginTransmission, (uint8_t addr), (override)); MOCK_METHOD(size_t, i2cWrite, (uint8_t data), (override)); MOCK_METHOD(uint8_t, i2cEndTransmission, (), (override)); MOCK_METHOD(uint8_t, i2cRequestFrom, (uint8_t addr, uint8_t count), (override)); MOCK_METHOD(int, i2cAvailable, (), (override)); MOCK_METHOD(int, i2cRead, (), (override)); }; #endif // MOCK_HAL_H