Supporting a button library.
This commit is contained in:
60
libraries/button/src/button_mock.h
Normal file
60
libraries/button/src/button_mock.h
Normal file
@@ -0,0 +1,60 @@
|
||||
#ifndef BUTTON_MOCK_H
|
||||
#define BUTTON_MOCK_H
|
||||
|
||||
#include "button.h"
|
||||
|
||||
/*
|
||||
* Button -- Test mock with programmable state.
|
||||
*
|
||||
* Use this in tests to control exactly what button state your
|
||||
* application sees, without any real hardware.
|
||||
*
|
||||
* Example:
|
||||
* ButtonMock btn;
|
||||
* btn.setPressed(true);
|
||||
*
|
||||
* ToggleApp app(&sim, &btn);
|
||||
* app.update();
|
||||
*
|
||||
* EXPECT_EQ(sim.getPin(LED_PIN), HIGH); // LED should be on
|
||||
*
|
||||
* You can also track how many times the button was read:
|
||||
* btn.resetReadCount();
|
||||
* app.update();
|
||||
* EXPECT_EQ(btn.readCount(), 1);
|
||||
*/
|
||||
class ButtonMock : public Button {
|
||||
public:
|
||||
/// Set whether the button appears pressed.
|
||||
void setPressed(bool pressed) {
|
||||
pressed_ = pressed;
|
||||
}
|
||||
|
||||
/// Set the raw digital state returned by readState().
|
||||
void setRaw(int value) {
|
||||
raw_ = value;
|
||||
}
|
||||
|
||||
bool isPressed() override {
|
||||
++read_count_;
|
||||
return pressed_;
|
||||
}
|
||||
|
||||
int readState() override {
|
||||
++read_count_;
|
||||
return raw_;
|
||||
}
|
||||
|
||||
/// How many times has the button been read?
|
||||
int readCount() const { return read_count_; }
|
||||
|
||||
/// Reset the read counter.
|
||||
void resetReadCount() { read_count_ = 0; }
|
||||
|
||||
private:
|
||||
bool pressed_ = false; // Default: not pressed
|
||||
int raw_ = HIGH; // Default: HIGH (active-low, not pressed)
|
||||
int read_count_ = 0;
|
||||
};
|
||||
|
||||
#endif // BUTTON_MOCK_H
|
||||
Reference in New Issue
Block a user