diff --git a/test/mocks/RingBuffer.cpp b/test/mocks/RingBuffer.cpp deleted file mode 100644 index f83b072..0000000 --- a/test/mocks/RingBuffer.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "RingBuffer.h" diff --git a/test/mocks/RingBuffer.h b/test/mocks/RingBuffer.h deleted file mode 100644 index e4fd225..0000000 --- a/test/mocks/RingBuffer.h +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * @file midi_RingBuffer.h - * Project Arduino MIDI Library - * @brief MIDI Library for Arduino - Ring Buffer - * @author Francois Best - * @date 10/10/2016 - * @license MIT - Copyright (c) 2016 Francois Best - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#pragma once - -template -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 read(); - void read(DataType* outData, int inSize); - -private: - DataType mData[Size]; - DataType* mWriteHead; - DataType* mReadHead; -}; - -#include "midi_RingBuffer.hpp" diff --git a/test/mocks/RingBuffer.hpp b/test/mocks/RingBuffer.hpp deleted file mode 100644 index d62c499..0000000 --- a/test/mocks/RingBuffer.hpp +++ /dev/null @@ -1,117 +0,0 @@ -/*! - * @file midi_RingBuffer.hpp - * Project Arduino MIDI Library - * @brief MIDI Library for Arduino - Ring Buffer - * @author Francois Best - * @date 10/10/2016 - * @license MIT - Copyright (c) 2016 Francois Best - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#pragma once - -template -RingBuffer::RingBuffer() - : mWriteHead(mData) - , mReadHead(mData) -{ - memset(mData, DataType(0), Size * sizeof(DataType)); -} - -template -RingBuffer::~RingBuffer() -{ -} - -// ----------------------------------------------------------------------------- - -template -int RingBuffer::getLength() const -{ - if (mReadHead == mWriteHead) - { - return 0; - } - else if (mWriteHead > mReadHead) - { - return int(mWriteHead - mReadHead); - } - else - { - return int(mWriteHead - mData) + Size - int(mReadHead - mData); - } -} - -template -bool RingBuffer::isEmpty() const -{ - return mReadHead == mWriteHead; -} - -// ----------------------------------------------------------------------------- - -template -void RingBuffer::write(DataType inData) -{ - *mWriteHead++ = inData; - if (mWriteHead >= mData + Size) - { - mWriteHead = mData; - } -} - -template -void RingBuffer::write(const DataType* inData, int inSize) -{ - for (int i = 0; i < inSize; ++i) - { - write(inData[i]); - } -} - -template -void RingBuffer::clear() -{ - memset(mData, DataType(0), Size * sizeof(DataType)); - mReadHead = mData; - mWriteHead = mData; -} - -// ----------------------------------------------------------------------------- - -template -DataType RingBuffer::read() -{ - const DataType data = *mReadHead++; - if (mReadHead >= mData + Size) - { - mReadHead = mData; - } - return data; -} - -template -void RingBuffer::read(DataType* outData, int inSize) -{ - for (int i = 0; i < inSize; ++i) - { - outData[i] = read(); - } -} diff --git a/test/mocks/test-mocks_SerialMock.h b/test/mocks/test-mocks_SerialMock.h index 6e84585..b18ebb9 100644 --- a/test/mocks/test-mocks_SerialMock.h +++ b/test/mocks/test-mocks_SerialMock.h @@ -2,10 +2,36 @@ #include "test-mocks.h" #include -#include "RingBuffer.h" BEGIN_TEST_MOCKS_NAMESPACE +template +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 class SerialMock { diff --git a/test/mocks/test-mocks_SerialMock.hpp b/test/mocks/test-mocks_SerialMock.hpp index 3c06e29..f19f4e0 100644 --- a/test/mocks/test-mocks_SerialMock.hpp +++ b/test/mocks/test-mocks_SerialMock.hpp @@ -2,6 +2,103 @@ BEGIN_TEST_MOCKS_NAMESPACE +template +RingBuffer::RingBuffer() + : mWriteHead(mData) + , mReadHead(mData) +{ + memset(mData, DataType(0), Size * sizeof(DataType)); +} + +template +RingBuffer::~RingBuffer() +{ +} + +// ----------------------------------------------------------------------------- + +template +int RingBuffer::getLength() const +{ + if (mReadHead == mWriteHead) + { + return 0; + } + else if (mWriteHead > mReadHead) + { + return int(mWriteHead - mReadHead); + } + else + { + return int(mWriteHead - mData) + Size - int(mReadHead - mData); + } +} + +template +bool RingBuffer::isEmpty() const +{ + return mReadHead == mWriteHead; +} + +// ----------------------------------------------------------------------------- + +template +void RingBuffer::write(DataType inData) +{ + *mWriteHead++ = inData; + if (mWriteHead >= mData + Size) + { + mWriteHead = mData; + } +} + +template +void RingBuffer::write(const DataType* inData, int inSize) +{ + for (int i = 0; i < inSize; ++i) + { + write(inData[i]); + } +} + +template +void RingBuffer::clear() +{ + memset(mData, DataType(0), Size * sizeof(DataType)); + mReadHead = mData; + mWriteHead = mData; +} + +// ----------------------------------------------------------------------------- + +template +DataType RingBuffer::peek() const +{ + return *mReadHead; +} + +template +DataType RingBuffer::read() +{ + const DataType data = *mReadHead++; + if (mReadHead >= mData + Size) + { + mReadHead = mData; + } + return data; +} + +template +void RingBuffer::read(DataType* outData, int inSize) +{ + for (int i = 0; i < inSize; ++i) + { + outData[i] = read(); + } +} + +// ============================================================================= + template SerialMock::SerialMock() {