Mock digital output pin for testing.
Mock digital output pin for testing.Records all write operations for verification in tests. Satisfies hal::DigitalOutput concept without requiring hardware.
MockOutputPin pin;
pin.write(true);
assert(pin.last_level() == true);
assert(pin.write_count() == 1);
#pragma once
#include <cstddef>
class MockOutputPin {
public:
auto write(
bool level) ->
void {
last_level_ = level;
write_count_++;
}
[[nodiscard]]
auto last_level()
const ->
bool {
return last_level_; }
[[nodiscard]]
auto write_count()
const -> std::size_t {
return write_count_; }
write_count_ = 0;
last_level_ = false;
}
private:
bool last_level_ = false;
std::size_t write_count_ = 0;
};
static_assert(DigitalOutput<MockOutputPin>, "MockOutputPin must satisfy DigitalOutput concept");
class MockInputPin {
public:
read_count_++;
return level_;
}
auto set_level(
bool level) ->
void { level_ = level; }
[[nodiscard]]
auto read_count()
const -> std::size_t {
return read_count_; }
read_count_ = 0;
level_ = false;
}
private:
bool level_ = false;
std::size_t read_count_ = 0;
};
static_assert(DigitalInput<MockInputPin>, "MockInputPin must satisfy DigitalInput concept");
}
auto write_count() const -> std::size_t
Get total number of write operations.
Definition mock_pin.hpp:44
auto last_level() const -> bool
Get the last written logic level.
Definition mock_pin.hpp:38
auto reset() -> void
Reset pin state for new test.
Definition mock_pin.hpp:49
auto write(bool level) -> void
Write logic level to pin (records operation).
Definition mock_pin.hpp:29
GPIO pin concepts for hardware abstraction.