61 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
| #pragma once
 | |
| 
 | |
| #include "test-mocks.h"
 | |
| #include <inttypes.h>
 | |
| 
 | |
| BEGIN_TEST_MOCKS_NAMESPACE
 | |
| 
 | |
| template<typename DataType, int Size>
 | |
| class RingBuffer
 | |
| {
 | |
| public:
 | |
|      RingBuffer();
 | |
|     ~RingBuffer();
 | |
| 
 | |
| public:
 | |
|     int getLength() const;
 | |
|     bool isEmpty() const;
 | |
| 
 | |
| public:
 | |
|     void write(DataType inData);
 | |
|     void write(const DataType* inData, int inSize);
 | |
|     void clear();
 | |
| 
 | |
| public:
 | |
|     DataType peek() const;
 | |
|     DataType read();
 | |
|     void read(DataType* outData, int inSize);
 | |
| 
 | |
| private:
 | |
|     DataType mData[Size];
 | |
|     DataType* mWriteHead;
 | |
|     DataType* mReadHead;
 | |
| };
 | |
| 
 | |
| template<int BufferSize>
 | |
| class SerialMock
 | |
| {
 | |
| public:
 | |
|      SerialMock();
 | |
|     ~SerialMock();
 | |
| 
 | |
| public: // Arduino Serial API
 | |
|     void begin(int inBaudrate);
 | |
|     int available() const;
 | |
|     void write(uint8_t inData);
 | |
|     uint8_t read();
 | |
| 
 | |
| public: // Test Helpers API
 | |
|     void moveTxToRx(); // Simulate loopback
 | |
| 
 | |
| public:
 | |
|     typedef RingBuffer<uint8_t, BufferSize> Buffer;
 | |
|     Buffer mTxBuffer;
 | |
|     Buffer mRxBuffer;
 | |
|     int mBaudrate;
 | |
| };
 | |
| 
 | |
| END_TEST_MOCKS_NAMESPACE
 | |
| 
 | |
| #include "test-mocks_SerialMock.hpp"
 |