File tree Expand file tree Collapse file tree 3 files changed +66
-17
lines changed Expand file tree Collapse file tree 3 files changed +66
-17
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,7 @@ set(TEST_SRCS
4848 src/Ringbuffer/test_read_char.cpp
4949 src/Ringbuffer/test_store_char.cpp
5050 src/Stream/test_getTimeout.cpp
51+ src/Stream/test_readString.cpp
5152 src/Stream/test_setTimeout.cpp
5253 src/String /test_concat.cpp
5354 src/String /test_operators.cpp
@@ -91,8 +92,9 @@ set(TEST_TARGET_SRCS
9192 src/main.cpp
9293 src/dtostrf.cpp
9394 src/itoa.cpp
94- src/PrintMock.cpp
9595 src/MillisFake.cpp
96+ src/PrintMock.cpp
97+ src/StreamMock.cpp
9698 ${TEST_SRCS}
9799 ${TEST_DUT_SRCS}
98100)
Original file line number Diff line number Diff line change 99 * INCLUDE
1010 **************************************************************************************/
1111
12- #include < sstream >
12+ #include < deque >
1313
1414#include < Stream.h>
1515
2020class StreamMock : public arduino ::Stream
2121{
2222public:
23- std::stringstream _ss;
24-
25- virtual size_t write (uint8_t ch) override { _ss << static_cast <char >(ch); return 1 ; }
26- virtual int available () override { return _ss.gcount (); }
27- virtual int read () override
28- {
29- char ch;
30- _ss >> ch;
31- return ch;
32- }
33- virtual int peek () override
34- {
35- char ch = _ss.peek ();
36- return ch;
37- }
23+
24+ void operator << (char const * str);
25+
26+ virtual size_t write (uint8_t ch) override ;
27+ virtual int available () override ;
28+ virtual int read () override ;
29+ virtual int peek () override ;
30+
31+ private:
32+ std::deque<char > _stream;
33+
3834};
3935
4036#endif /* STREAM_MOCK_H_ */
Original file line number Diff line number Diff line change 1+ /*
2+ * Copyright (c) 2020 Arduino. All rights reserved.
3+ */
4+
5+ /* *************************************************************************************
6+ * INCLUDE
7+ **************************************************************************************/
8+
9+ #include < StreamMock.h>
10+
11+ /* *************************************************************************************
12+ * PUBLIC MEMBER FUNCTIONS
13+ **************************************************************************************/
14+
15+ void StreamMock::operator << (char const * str)
16+ {
17+ for (size_t c = 0 ; c < strlen (str); c++)
18+ _stream.push_back (str[c]);
19+ }
20+
21+ size_t StreamMock::write (uint8_t ch)
22+ {
23+ _stream.push_back (static_cast <char >(ch));
24+ return 1 ;
25+ }
26+
27+ int StreamMock::available ()
28+ {
29+ return _stream.size ();
30+ }
31+
32+ int StreamMock::read ()
33+ {
34+ if (available () == 0 )
35+ return -1 ;
36+
37+ /* Extract first/oldest element. */
38+ char const c = _stream.at (0 );
39+ /* Erase first/oldest element. */
40+ _stream.pop_front ();
41+
42+ return c;
43+ }
44+
45+ int StreamMock::peek ()
46+ {
47+ if (available () == 0 )
48+ return -1 ;
49+
50+ return _stream.at (0 );
51+ }
You can’t perform that action at this time.
0 commit comments