Arduino.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // mock_arduino.h
  2. #ifndef MOCK_ARDUINO_H
  3. #define MOCK_ARDUINO_H
  4. #include <chrono>
  5. #include <thread>
  6. #include <vector>
  7. #include <string>
  8. #include <iostream>
  9. // Arduino constants
  10. #define HIGH 1
  11. #define LOW 0
  12. #define INPUT 0
  13. #define OUTPUT 1
  14. #define LED_BUILTIN 13
  15. // Mock Arduino timing functions
  16. inline unsigned long millis() {
  17. static auto start = std::chrono::steady_clock::now();
  18. auto now = std::chrono::steady_clock::now();
  19. return std::chrono::duration_cast<std::chrono::milliseconds>(now - start).count();
  20. }
  21. inline unsigned long micros() {
  22. static auto start = std::chrono::steady_clock::now();
  23. auto now = std::chrono::steady_clock::now();
  24. return std::chrono::duration_cast<std::chrono::microseconds>(now - start).count();
  25. }
  26. inline void delay(unsigned long ms) {
  27. std::this_thread::sleep_for(std::chrono::milliseconds(ms));
  28. }
  29. inline void delayMicroseconds(unsigned long us) {
  30. std::this_thread::sleep_for(std::chrono::microseconds(us));
  31. }
  32. // Mock digital I/O functions
  33. inline void pinMode(int pin, int mode) {
  34. // Mock implementation - do nothing
  35. }
  36. inline void digitalWrite(int pin, int value) {
  37. // Mock implementation - could log pin states if needed
  38. }
  39. inline int digitalRead(int pin) {
  40. // Mock implementation - return LOW by default
  41. return LOW;
  42. }
  43. // Global test output capture
  44. extern std::vector<std::string> test_output;
  45. // Helper function to clear test output
  46. inline void clearTestOutput() {
  47. test_output.clear();
  48. }
  49. // Helper function to get test output count
  50. inline size_t getTestOutputCount() {
  51. return test_output.size();
  52. }
  53. // Helper function to get specific test output
  54. inline std::string getTestOutput(size_t index) {
  55. if (index < test_output.size()) {
  56. return test_output[index];
  57. }
  58. return "";
  59. }
  60. // Helper function to wait for condition with timeout
  61. template<typename Condition>
  62. inline bool waitForCondition(Condition condition, unsigned long timeout_ms) {
  63. unsigned long start_time = millis();
  64. while (millis() - start_time < timeout_ms) {
  65. if (condition()) {
  66. return true;
  67. }
  68. delay(10);
  69. }
  70. return false;
  71. }
  72. #endif // MOCK_ARDUINO_H