Avionics
Core avionics package for CURE flight computers
Loading...
Searching...
No Matches
serial_mock.h
Go to the documentation of this file.
1// Mocks for all serial related Arduino functions
2
3#pragma once
4
5#include <stdint.h>
6#include <stdio.h>
7
8#include <algorithm>
9#include <cstdarg>
10#include <cstdint>
11#include <iostream>
12#include <sstream>
13#include <string>
14#include <vector>
15
17public:
18 // Store the calls and their parameters
19 std::vector<std::string> printCalls;
20 std::vector<std::string> printlnCalls;
21 std::vector<std::string> printfCalls;
22
23 template<typename T>
24 void print(const T& message) {
25 std::ostringstream oss;
26 oss << message;
27 printCalls.push_back(oss.str());
28 std::cout << message;
29 }
30
31 template<typename T>
32 void println(const T& message) {
33 std::ostringstream oss;
34 oss << message;
35 printlnCalls.push_back(oss.str());
36 std::cout << message << std::endl;
37 }
38
39 // printf
40 void printf(const char *fmt, ...) {
41 char buffer[256];
42 va_list args;
43 va_start(args, fmt);
44 vsnprintf(buffer, sizeof(buffer), fmt, args);
45 va_end(args);
46 printfCalls.push_back(buffer);
47 std::cout << buffer;
48 }
49
50 // Clear the stored calls
51 void clear() {
52 printCalls.clear();
53 printlnCalls.clear();
54 printfCalls.clear();
55 }
56
57 // write
58 size_t write(uint8_t) { return 0; }
59 size_t write(const uint8_t *buffer, size_t size) { return size; }
60};
61
62extern MockSerial Serial;
63extern MockSerial Serial1;
64
66
67
68// Mock Stream class
69class Stream {
70public:
71 std::vector<uint8_t> writeCalls;
72
73 virtual int available() { return 0; }
74 virtual int read() { return -1; }
75 virtual int peek() { return -1; }
76 virtual void flush() {}
77 virtual size_t write(uint8_t byte) {
78 this->writeCalls.push_back(byte);
79 return 0;
80 }
81 virtual size_t write(const char *str) { return 0; }
82 virtual size_t write(const char* buffer, size_t size) { return size; } // for string literals
83 virtual size_t write(const uint8_t *buffer, size_t size) { return size; }
85 writeCalls.clear();
86 }
87
88 // Read a string until a newline character
89 std::string readStringUntil(char terminator) {
90 std::string result;
91 char c;
92 while ((c = read()) != terminator && c != -1) {
93 result += c;
94 }
95 return result;
96 }
97
98 template<typename T>
99 void print(const T& message) {
100 std::cout << message;
101 }
102
103 template<typename T>
104 void println(const T& message) {
105 std::cout << message << std::endl;
106 }
107
108 void println() {
109 std::cout << std::endl;
110 }
111
112 // Read a string
113 std::string readString() {
114 std::string result;
115 char c;
116 while ((c = read()) != -1) {
117 result += c;
118 }
119 return result;
120 }
121
122 void println(const char* message) {
123 std::cout << message << std::endl;
124 }
125};
std::vector< std::string > printlnCalls
Definition serial_mock.h:20
std::vector< std::string > printfCalls
Definition serial_mock.h:21
std::vector< std::string > printCalls
Definition serial_mock.h:19
void printf(const char *fmt,...)
Definition serial_mock.h:40
void clear()
Definition serial_mock.h:51
size_t write(const uint8_t *buffer, size_t size)
Definition serial_mock.h:59
void println(const T &message)
Definition serial_mock.h:32
size_t write(uint8_t)
Definition serial_mock.h:58
void print(const T &message)
Definition serial_mock.h:24
void println()
std::vector< uint8_t > writeCalls
Definition serial_mock.h:71
virtual size_t write(const char *str)
Definition serial_mock.h:81
virtual int peek()
Definition serial_mock.h:75
virtual int available()
Definition serial_mock.h:73
void println(const T &message)
virtual size_t write(const uint8_t *buffer, size_t size)
Definition serial_mock.h:83
void println(const char *message)
void clearWriteCalls()
Definition serial_mock.h:84
std::string readStringUntil(char terminator)
Definition serial_mock.h:89
virtual void flush()
Definition serial_mock.h:76
virtual size_t write(const char *buffer, size_t size)
Definition serial_mock.h:82
virtual size_t write(uint8_t byte)
Definition serial_mock.h:77
void print(const T &message)
Definition serial_mock.h:99
std::string readString()
virtual int read()
Definition serial_mock.h:74
MockSerial Serial
MockSerial HardwareSerial
Definition serial_mock.h:65
MockSerial Serial1