Arduino.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. if ( pin == mode ) return;
  36. else return;
  37. }
  38. inline void digitalWrite(int pin, int value) {
  39. // Mock implementation - could log pin states if needed
  40. if ( pin == value ) return;
  41. else return;
  42. }
  43. inline int digitalRead(int pin) {
  44. // Mock implementation - return LOW by default
  45. if (pin == 0) return LOW;
  46. else return HIGH;
  47. }
  48. inline void yield() {
  49. std::this_thread::yield();
  50. }
  51. // Global test output capture
  52. extern std::vector<std::string> test_output;
  53. // Helper function to clear test output
  54. inline void clearTestOutput() {
  55. test_output.clear();
  56. }
  57. // Helper function to get test output count
  58. inline size_t getTestOutputCount() {
  59. return test_output.size();
  60. }
  61. // Helper function to get specific test output
  62. inline std::string getTestOutput(size_t index) {
  63. if (index < test_output.size()) {
  64. return test_output[index];
  65. }
  66. return "";
  67. }
  68. // Helper function to wait for condition with timeout
  69. template<typename Condition>
  70. inline bool waitForCondition(Condition condition, unsigned long timeout_ms) {
  71. unsigned long start_time = millis();
  72. while (millis() - start_time < timeout_ms) {
  73. if (condition()) {
  74. return true;
  75. }
  76. delay(10);
  77. }
  78. return false;
  79. }
  80. #endif // MOCK_ARDUINO_H