diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ba21ef0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ + +* text=auto \ No newline at end of file diff --git a/cmake/git-download.cmake b/cmake/git-download.cmake deleted file mode 100644 index 8926352..0000000 --- a/cmake/git-download.cmake +++ /dev/null @@ -1,55 +0,0 @@ -find_package(Git REQUIRED) - -function(execute_git) - set(options "") - set(oneValueArgs - OUTPUT_VARIABLE - ) - set(multiValueArgs - COMMAND - ) - cmake_parse_arguments(args "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - execute_process( - COMMAND ${GIT_EXECUTABLE} ${args_COMMAND} - OUTPUT_VARIABLE GIT_RESULT - ) - - set(${args_OUTPUT_VARIABLE} ${GIT_RESULT} PARENT_SCOPE) -endfunction() - -function(download_repo) - set(options "") - set(oneValueArgs - URL - TAG - CLONE_DIR - ) - set(multiValueArgs "") - cmake_parse_arguments(args "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - # If no tag is specified, default to master - if(NOT args_TAG) - set(args_TAG master) - endif() - - execute_git( - COMMAND rev-parse --show-toplevel - OUTPUT_VARIABLE GIT_ROOT - ) - - # Need to remove linebreak - string(STRIP ${GIT_ROOT} GIT_ROOT) - - # Make clone-dir path relative to git-root - string(REPLACE ${GIT_ROOT}/ "" RELATIVE_CLONE_DIR ${args_CLONE_DIR}) - - if(NOT EXISTS ${args_CLONE_DIR}) - message("Cloning branch ${args_TAG} from ${args_URL} into directory ${args_CLONE_DIR}") - execute_git( - COMMAND clone --depth=50 --branch=${args_TAG} ${args_URL} ${args_CLONE_DIR} - WORKING_DIRECTORY ${GIT_ROOT} - ) - endif() - -endfunction() \ No newline at end of file diff --git a/examples/mock-injection/test/test_my_service.cpp b/examples/mock-injection/test/test_my_service.cpp index c3c8448..34fd366 100755 --- a/examples/mock-injection/test/test_my_service.cpp +++ b/examples/mock-injection/test/test_my_service.cpp @@ -19,7 +19,7 @@ void test_connect(void) When(OverloadedMethod(ArduinoFake(Client), println, size_t(const char *))).AlwaysReturn(); When(OverloadedMethod(ArduinoFake(Client), connect, int(const char*, uint16_t))).Return(1); - Client* clientMock = ArduinoFakeMock(Client); + std::shared_ptr clientMock(ArduinoFakeMock(Client)); MyService service(clientMock); diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt deleted file mode 100644 index 8ba9078..0000000 --- a/external/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Include external libs -add_subdirectory(unity) -add_subdirectory(fakeit) \ No newline at end of file diff --git a/external/fakeit/CMakeLists.txt b/external/fakeit/CMakeLists.txt deleted file mode 100644 index ed87fcb..0000000 --- a/external/fakeit/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -cmake_minimum_required(VERSION 3.2.2) -project(fakeit VERSION 2.4.0 LANGUAGES CXX) - -include(git-download) - -set(REPO_DIR ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-repo) - -download_repo( - URL "https://github.com/eranpeer/FakeIt.git" - TAG ${PROJECT_VERSION} - CLONE_DIR ${REPO_DIR} -) - -add_library(${PROJECT_NAME} INTERFACE) - -target_include_directories(${PROJECT_NAME} INTERFACE - ${REPO_DIR}/single_header/standalone/ -) diff --git a/external/unity/CMakeLists.txt b/external/unity/CMakeLists.txt deleted file mode 100644 index 9070698..0000000 --- a/external/unity/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -cmake_minimum_required(VERSION 3.2.2) -project(unity VERSION 2.4.1 LANGUAGES C) - -include(git-download) - -set(REPO_DIR ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-repo) - -download_repo( - URL "https://github.com/ThrowTheSwitch/Unity.git" - TAG v${PROJECT_VERSION} - CLONE_DIR ${REPO_DIR} -) - -add_library(${PROJECT_NAME} STATIC - ${REPO_DIR}/src/unity.c -) - -target_include_directories(${PROJECT_NAME} PUBLIC - ${REPO_DIR}/src -) diff --git a/library.json b/library.json index 158c7fd..74acdab 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ArduinoFake", - "version": "0.4.0", + "version": "1.0.0", "keywords": "test, mock, fake, arduino", "description": "Arduino mocking made easy.", "repository": { diff --git a/src/ArduinoFake.h b/src/ArduinoFake.h index a59ad9c..64169c1 100644 --- a/src/ArduinoFake.h +++ b/src/ArduinoFake.h @@ -22,14 +22,31 @@ #include "SPI.h" #include "EEPROM.h" +#define CONCAT2(x,y) x##y +#define CONCAT(x,y) CONCAT2(x,y) + +// These map a Arduino class name (E.g. "SPIClass") to +// the corresponding fake member name (E.g. "SPI") +#define _ClazzToFakePrint() Print +#define _ClazzToFakeClient() Client +#define _ClazzToFakeStream() Stream +#define _ClazzToFakeSerial_() Serial +#define _ClazzToFakeTwoWire() Wire +#define _ClazzToFakeSPIClass() SPI +#define _ClazzToFakeEEPROMClass() EEPROM +#define _ClazzToFake(clazz) _ClazzToFake##clazz() + #define ArduinoFakeReset() \ getArduinoFakeContext()->Reset() -#define ArduinoFakeInstance(mock, ...) \ - getArduinoFakeContext()->mock(__VA_ARGS__) + #define ArduinoFakeInstance0(mock) \ + getArduinoFakeContext()->mock() + +#define ArduinoFakeInstance(clazz) \ + getArduinoFakeContext()->getFake(clazz) #define ArduinoFakeMock(mock) \ - new mock##FakeProxy(ArduinoFakeInstance(mock)) + std::shared_ptr(new mock##FakeProxy(ArduinoFakeInstance0(mock))) #define _ArduinoFakeGetMock(mock) \ getArduinoFakeContext()->_##mock @@ -46,9 +63,20 @@ #define ArduinoFake(mock) _ArduinoFakeGet##mock() +// Access fakeit::Mock.get() +// There is no equivalent in fakeit since Mock is a template +struct IFake +{ + // Ideally this have a templated return type, but then it can't be + // virtual :-( + // We need this to be virtual to store instances in a map. + virtual void* toFake(void) = 0; +}; + template > -struct ProxiedArduinoFake_t : public BaseT +struct ProxiedArduinoFake_t : public BaseT, IFake { + // Proxy to fake template FakeT* getFake(ArduinoT *instance) { @@ -57,8 +85,21 @@ struct ProxiedArduinoFake_t : public BaseT } throw std::runtime_error("Unknown instance"); } + + // Get the 'real' fake - the one that is actually mocked. + virtual void* toFake(void) override + { + return &fakeit::Mock::get(); + } }; +// Maps from global instances to the equivalent IFake. +// E.g. Serial => SerialFake +// +// Required to respect inherited classes. +// E.g. Stream has 2 derived classes, Serial_ & TwoWire. Each has a global instance, Serial & Wire. +// We want to allow different mock implementations *of the same Stream method* for Serial_ & TwoWire +// and have the global instances use those different mocks. class FakeOverride_t { public: @@ -67,19 +108,19 @@ class FakeOverride_t _mapping.clear(); } - void *getOverride(void *instance) + IFake *getOverride(void *instance) { auto iter = _mapping.find(instance); return iter==_mapping.end() ? nullptr : iter->second; } - void setOverride(void *instance, void *override) + void setOverride(void *instance, IFake *override) { _mapping[instance] = override; } private: - std::unordered_map _mapping; + std::unordered_map _mapping; }; template > @@ -96,9 +137,9 @@ struct OverrideableProxiedArduinoFake_t : public BaseT template FakeT* getFake(ArduinoT *instance) { - fakeit::Mock *pOverride = static_cast *>(_overrides.getOverride(instance)); + auto *pOverride = _overrides.getOverride(instance); if (pOverride!=nullptr) { - return &pOverride->get(); + return (FakeT*)pOverride->toFake(); } return BaseT::getFake(instance); } @@ -134,19 +175,19 @@ class ArduinoFakeContext #undef _ArduinoFakeInstanceGetter1 -#define _ArduinoFakeInstanceGetter2(name, clazz) \ - name##Fake* name(class clazz* instance) \ +#define _ArduinoFakeInstanceGetter2(clazz) \ + CONCAT(_ClazzToFake(clazz), Fake)* getFake(class clazz* instance) \ { \ - return this->_##name.getFake(instance); \ + return this->CONCAT(_, _ClazzToFake(clazz)).getFake(instance); \ } - _ArduinoFakeInstanceGetter2(Print, Print) - _ArduinoFakeInstanceGetter2(Client, Client) - _ArduinoFakeInstanceGetter2(Stream, Stream) - _ArduinoFakeInstanceGetter2(Serial, Serial_) - _ArduinoFakeInstanceGetter2(Wire, TwoWire) - _ArduinoFakeInstanceGetter2(SPI, SPIClass) - _ArduinoFakeInstanceGetter2(EEPROM, EEPROMClass) + _ArduinoFakeInstanceGetter2(Print) + _ArduinoFakeInstanceGetter2(Client) + _ArduinoFakeInstanceGetter2(Stream) + _ArduinoFakeInstanceGetter2(Serial_) + _ArduinoFakeInstanceGetter2(TwoWire) + _ArduinoFakeInstanceGetter2(SPIClass) + _ArduinoFakeInstanceGetter2(EEPROMClass) #undef _ArduinoFakeInstanceGetter2 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 3b0e460..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -aux_source_directory(. SRC_LIST) -aux_source_directory(./fakeit SRC_LIST) -aux_source_directory(./arduino SRC_LIST) - -add_library(${PROJECT_NAME} SHARED ${SRC_LIST}) - -target_link_libraries(${PROJECT_NAME} fakeit) \ No newline at end of file diff --git a/src/ClientFake.cpp b/src/ClientFake.cpp index 6f20f11..9a9cc3d 100644 --- a/src/ClientFake.cpp +++ b/src/ClientFake.cpp @@ -4,57 +4,57 @@ int Client::connect(IPAddress ip, uint16_t port) { - return ArduinoFakeInstance(Client, this)->connect(ip, port); + return ArduinoFakeInstance(this)->connect(ip, port); } int Client::connect(const char *host, uint16_t port) { - return ArduinoFakeInstance(Client, this)->connect(host, port); + return ArduinoFakeInstance(this)->connect(host, port); } size_t Client::write(uint8_t value) { - return ArduinoFakeInstance(Client, this)->write(value); + return ArduinoFakeInstance(this)->write(value); } size_t Client::write(const uint8_t *buf, size_t size) { - return ArduinoFakeInstance(Client, this)->write(buf, size); + return ArduinoFakeInstance(this)->write(buf, size); } int Client::available() { - return ArduinoFakeInstance(Client, this)->available(); + return ArduinoFakeInstance(this)->available(); } int Client::read() { - return ArduinoFakeInstance(Client, this)->read(); + return ArduinoFakeInstance(this)->read(); } int Client::read(uint8_t *buf, size_t size) { - return ArduinoFakeInstance(Client, this)->read(buf, size); + return ArduinoFakeInstance(this)->read(buf, size); } int Client::peek() { - return ArduinoFakeInstance(Client, this)->peek(); + return ArduinoFakeInstance(this)->peek(); } void Client::flush() { - return ArduinoFakeInstance(Client, this)->flush(); + return ArduinoFakeInstance(this)->flush(); } void Client::stop() { - return ArduinoFakeInstance(Client, this)->stop(); + return ArduinoFakeInstance(this)->stop(); } uint8_t Client::connected() { - return ArduinoFakeInstance(Client, this)->connected(); + return ArduinoFakeInstance(this)->connected(); } Client::operator bool() diff --git a/src/EEPROMFake.cpp b/src/EEPROMFake.cpp index faa88c6..57b0a4e 100644 --- a/src/EEPROMFake.cpp +++ b/src/EEPROMFake.cpp @@ -4,14 +4,14 @@ // clang-format on uint8_t EEPROMClass::read(int idx) { - return ArduinoFakeInstance(EEPROM)->read(idx); + return ArduinoFakeInstance(this)->read(idx); }; void EEPROMClass::write(int idx, uint8_t val) { - ArduinoFakeInstance(EEPROM)->write(idx, val); + ArduinoFakeInstance(this)->write(idx, val); }; void EEPROMClass::update(int idx, uint8_t val) { - ArduinoFakeInstance(EEPROM)->update(idx, val); + ArduinoFakeInstance(this)->update(idx, val); }; -uint16_t EEPROMClass::length() { return ArduinoFakeInstance(EEPROM)->length(); } +uint16_t EEPROMClass::length() { return ArduinoFakeInstance(this)->length(); } -EEPROMClass EEPROM = EEPROMFakeProxy(ArduinoFakeInstance(EEPROM)); +EEPROMClass EEPROM = EEPROMFakeProxy(ArduinoFakeInstance0(EEPROM)); diff --git a/src/FunctionFake.cpp b/src/FunctionFake.cpp index 296637f..e38213d 100644 --- a/src/FunctionFake.cpp +++ b/src/FunctionFake.cpp @@ -3,156 +3,156 @@ void init(void) { - ArduinoFakeInstance(Function)->init(); + ArduinoFakeInstance0(Function)->init(); } void pinMode(uint8_t pin, uint8_t mode) { - ArduinoFakeInstance(Function)->pinMode(pin, mode); + ArduinoFakeInstance0(Function)->pinMode(pin, mode); } void digitalWrite(uint8_t pin, uint8_t val) { - ArduinoFakeInstance(Function)->digitalWrite(pin, val); + ArduinoFakeInstance0(Function)->digitalWrite(pin, val); } int digitalRead(uint8_t pin) { - return ArduinoFakeInstance(Function)->digitalRead(pin); + return ArduinoFakeInstance0(Function)->digitalRead(pin); } int analogRead(uint8_t pin) { - return ArduinoFakeInstance(Function)->analogRead(pin); + return ArduinoFakeInstance0(Function)->analogRead(pin); } void analogWrite(uint8_t pin, int val) { - ArduinoFakeInstance(Function)->analogWrite(pin, val); + ArduinoFakeInstance0(Function)->analogWrite(pin, val); } void analogReference(uint8_t mode) { - ArduinoFakeInstance(Function)->analogReference(mode); + ArduinoFakeInstance0(Function)->analogReference(mode); } void analogReadResolution(uint8_t mode) { - ArduinoFakeInstance(Function)->analogReadResolution(mode); + ArduinoFakeInstance0(Function)->analogReadResolution(mode); } unsigned long millis(void) { - return ArduinoFakeInstance(Function)->millis(); + return ArduinoFakeInstance0(Function)->millis(); } unsigned long micros(void) { - return ArduinoFakeInstance(Function)->micros(); + return ArduinoFakeInstance0(Function)->micros(); } void delay(unsigned long value) { - ArduinoFakeInstance(Function)->delay(value); + ArduinoFakeInstance0(Function)->delay(value); } void delayMicroseconds(unsigned int us) { - ArduinoFakeInstance(Function)->delayMicroseconds(us); + ArduinoFakeInstance0(Function)->delayMicroseconds(us); } unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) { - return ArduinoFakeInstance(Function)->pulseIn(pin, state, timeout); + return ArduinoFakeInstance0(Function)->pulseIn(pin, state, timeout); } unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout) { - return ArduinoFakeInstance(Function)->pulseInLong(pin, state, timeout); + return ArduinoFakeInstance0(Function)->pulseInLong(pin, state, timeout); } void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) { - ArduinoFakeInstance(Function)->shiftOut(dataPin, clockPin, bitOrder, val); + ArduinoFakeInstance0(Function)->shiftOut(dataPin, clockPin, bitOrder, val); } uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { - return ArduinoFakeInstance(Function)->shiftIn(dataPin, clockPin, bitOrder); + return ArduinoFakeInstance0(Function)->shiftIn(dataPin, clockPin, bitOrder); } void detachInterrupt(uint8_t interruptNum) { - ArduinoFakeInstance(Function)->detachInterrupt(interruptNum); + ArduinoFakeInstance0(Function)->detachInterrupt(interruptNum); } void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { - ArduinoFakeInstance(Function)->attachInterrupt(interruptNum, userFunc, mode); + ArduinoFakeInstance0(Function)->attachInterrupt(interruptNum, userFunc, mode); } void cli(void) { - ArduinoFakeInstance(Function)->cli(); + ArduinoFakeInstance0(Function)->cli(); } void sei(void) { - ArduinoFakeInstance(Function)->sei(); + ArduinoFakeInstance0(Function)->sei(); } void tone(uint8_t pin, unsigned int frequency, unsigned long duration) { - ArduinoFakeInstance(Function)->tone(pin, frequency, duration); + ArduinoFakeInstance0(Function)->tone(pin, frequency, duration); } void noTone(uint8_t pin) { - ArduinoFakeInstance(Function)->noTone(pin); + ArduinoFakeInstance0(Function)->noTone(pin); } long random(long max) { - return ArduinoFakeInstance(Function)->random(max); + return ArduinoFakeInstance0(Function)->random(max); } long random(long min, long max) { - return ArduinoFakeInstance(Function)->random(min, max); + return ArduinoFakeInstance0(Function)->random(min, max); } void randomSeed(unsigned long seed) { - return ArduinoFakeInstance(Function)->randomSeed(seed); + return ArduinoFakeInstance0(Function)->randomSeed(seed); } long map(long value, long fromLow, long fromHigh, long toLow, long toHigh) { - return ArduinoFakeInstance(Function)->map(value, fromLow, fromHigh, toLow, toHigh); + return ArduinoFakeInstance0(Function)->map(value, fromLow, fromHigh, toLow, toHigh); } void yield() { - ArduinoFakeInstance(Function)->yield(); + ArduinoFakeInstance0(Function)->yield(); } uint8_t digitalPinToPort(uint8_t pin) { - return ArduinoFakeInstance(Function)->digitalPinToPort(pin); + return ArduinoFakeInstance0(Function)->digitalPinToPort(pin); } uint8_t digitalPinToBitMask(uint8_t pin) { - return ArduinoFakeInstance(Function)->digitalPinToBitMask(pin); + return ArduinoFakeInstance0(Function)->digitalPinToBitMask(pin); } uint8_t digitalPinToTimer(uint8_t pin) { - return ArduinoFakeInstance(Function)->digitalPinToTimer(pin); + return ArduinoFakeInstance0(Function)->digitalPinToTimer(pin); } volatile uint8_t * portOutputRegister(uint8_t pin) { - return ArduinoFakeInstance(Function)->portOutputRegister(pin); + return ArduinoFakeInstance0(Function)->portOutputRegister(pin); } volatile uint8_t * portInputRegister(uint8_t pin) { - return ArduinoFakeInstance(Function)->portInputRegister(pin); + return ArduinoFakeInstance0(Function)->portInputRegister(pin); } volatile uint8_t * portModeRegister(uint8_t pin) { - return ArduinoFakeInstance(Function)->portModeRegister(pin); + return ArduinoFakeInstance0(Function)->portModeRegister(pin); } diff --git a/src/PrintFake.cpp b/src/PrintFake.cpp index 6e48b43..17b0432 100644 --- a/src/PrintFake.cpp +++ b/src/PrintFake.cpp @@ -3,130 +3,130 @@ int Print::availableForWrite(void) { - return ArduinoFakeInstance(Print, this)->availableForWrite(); + return ArduinoFakeInstance(this)->availableForWrite(); } size_t Print::write(const uint8_t *buffer, size_t size) { - return ArduinoFakeInstance(Print, this)->write(buffer, size); + return ArduinoFakeInstance(this)->write(buffer, size); } size_t Print::print(const __FlashStringHelper *ifsh) { - return ArduinoFakeInstance(Print, this)->print(ifsh); + return ArduinoFakeInstance(this)->print(ifsh); } size_t Print::print(const String &s) { - return ArduinoFakeInstance(Print, this)->print(s); + return ArduinoFakeInstance(this)->print(s); } size_t Print::print(const char str[]) { - return ArduinoFakeInstance(Print, this)->print(str); + return ArduinoFakeInstance(this)->print(str); } size_t Print::write(uint8_t u) { - return ArduinoFakeInstance(Print, this)->write(u); + return ArduinoFakeInstance(this)->write(u); } size_t Print::print(char c) { - return ArduinoFakeInstance(Print, this)->print(c); + return ArduinoFakeInstance(this)->print(c); } size_t Print::print(unsigned char b, int base) { - return ArduinoFakeInstance(Print, this)->print(b, base); + return ArduinoFakeInstance(this)->print(b, base); } size_t Print::print(int n, int base) { - return ArduinoFakeInstance(Print, this)->print(n, base); + return ArduinoFakeInstance(this)->print(n, base); } size_t Print::print(unsigned int n, int base) { - return ArduinoFakeInstance(Print, this)->print(n, base); + return ArduinoFakeInstance(this)->print(n, base); } size_t Print::print(long n, int base) { - return ArduinoFakeInstance(Print, this)->print(n, base); + return ArduinoFakeInstance(this)->print(n, base); } size_t Print::print(unsigned long n, int base) { - return ArduinoFakeInstance(Print, this)->print(n, base); + return ArduinoFakeInstance(this)->print(n, base); } size_t Print::print(double n, int digits) { - return ArduinoFakeInstance(Print, this)->print(n, digits); + return ArduinoFakeInstance(this)->print(n, digits); } size_t Print::print(const Printable& x) { - return ArduinoFakeInstance(Print, this)->print(x); + return ArduinoFakeInstance(this)->print(x); } size_t Print::println(const __FlashStringHelper *ifsh) { - return ArduinoFakeInstance(Print, this)->println(ifsh); + return ArduinoFakeInstance(this)->println(ifsh); } size_t Print::println(void) { - return ArduinoFakeInstance(Print, this)->println(); + return ArduinoFakeInstance(this)->println(); } size_t Print::println(const String &s) { - return ArduinoFakeInstance(Print, this)->println(s); + return ArduinoFakeInstance(this)->println(s); } size_t Print::println(const char c[]) { - return ArduinoFakeInstance(Print, this)->println(c); + return ArduinoFakeInstance(this)->println(c); } size_t Print::println(char c) { - return ArduinoFakeInstance(Print, this)->println(c); + return ArduinoFakeInstance(this)->println(c); } size_t Print::println(unsigned char b, int base) { - return ArduinoFakeInstance(Print, this)->println(b, base); + return ArduinoFakeInstance(this)->println(b, base); } size_t Print::println(int num, int base) { - return ArduinoFakeInstance(Print, this)->println(num, base); + return ArduinoFakeInstance(this)->println(num, base); } size_t Print::println(unsigned int num, int base) { - return ArduinoFakeInstance(Print, this)->println(num, base); + return ArduinoFakeInstance(this)->println(num, base); } size_t Print::println(long num, int base) { - return ArduinoFakeInstance(Print, this)->println(num, base); + return ArduinoFakeInstance(this)->println(num, base); } size_t Print::println(unsigned long num, int base) { - return ArduinoFakeInstance(Print, this)->println(num, base); + return ArduinoFakeInstance(this)->println(num, base); } size_t Print::println(double num, int digits) { - return ArduinoFakeInstance(Print, this)->println(num, digits); + return ArduinoFakeInstance(this)->println(num, digits); } size_t Print::println(const Printable& x) { - return ArduinoFakeInstance(Print, this)->println(x); + return ArduinoFakeInstance(this)->println(x); } diff --git a/src/SPIFake.cpp b/src/SPIFake.cpp index 23ebbc3..f739930 100644 --- a/src/SPIFake.cpp +++ b/src/SPIFake.cpp @@ -1,28 +1,28 @@ #include "ArduinoFake.h" #include "SPIFake.h" -void SPIClass::begin() { ArduinoFakeInstance(SPI)->begin(); }; +void SPIClass::begin() { ArduinoFakeInstance(this)->begin(); }; -void SPIClass::end() { ArduinoFakeInstance(SPI)->end(); }; +void SPIClass::end() { ArduinoFakeInstance(this)->end(); }; void SPIClass::beginTransaction(SPISettings settings) { - ArduinoFakeInstance(SPI)->beginTransaction(settings); + ArduinoFakeInstance(this)->beginTransaction(settings); }; void SPIClass::endTransaction(void) { - ArduinoFakeInstance(SPI)->endTransaction(); + ArduinoFakeInstance(this)->endTransaction(); }; uint8_t SPIClass::transfer(uint8_t data) { - return ArduinoFakeInstance(SPI)->transfer(data); + return ArduinoFakeInstance(this)->transfer(data); }; uint16_t SPIClass::transfer16(uint16_t data) { - return ArduinoFakeInstance(SPI)->transfer16(data); + return ArduinoFakeInstance(this)->transfer16(data); }; void SPIClass::transfer(void *buf, size_t count) { - return ArduinoFakeInstance(SPI)->transfer(buf, count); + return ArduinoFakeInstance(this)->transfer(buf, count); }; -SPIClass SPI = SPIFakeProxy(ArduinoFakeInstance(SPI)); +SPIClass SPI = SPIFakeProxy(ArduinoFakeInstance0(SPI)); diff --git a/src/SerialFake.cpp b/src/SerialFake.cpp index 2404b53..df2f0b9 100644 --- a/src/SerialFake.cpp +++ b/src/SerialFake.cpp @@ -5,84 +5,84 @@ void Serial_::begin(unsigned long baud_count) { - ArduinoFakeInstance(Serial, this)->begin(baud_count); + ArduinoFakeInstance(this)->begin(baud_count); } void Serial_::begin(unsigned long baud_count, byte config) { - ArduinoFakeInstance(Serial, this)->begin(baud_count, config); + ArduinoFakeInstance(this)->begin(baud_count, config); } void Serial_::end(void) { - ArduinoFakeInstance(Serial, this)->end(); + ArduinoFakeInstance(this)->end(); } int Serial_::available(void) { - return ArduinoFakeInstance(Serial, this)->available(); + return ArduinoFakeInstance(this)->available(); } int Serial_::peek(void) { - return ArduinoFakeInstance(Serial, this)->peek(); + return ArduinoFakeInstance(this)->peek(); } int Serial_::read(void) { - return ArduinoFakeInstance(Serial, this)->read(); + return ArduinoFakeInstance(this)->read(); } void Serial_::flush(void) { - ArduinoFakeInstance(Serial, this)->flush(); + ArduinoFakeInstance(this)->flush(); } size_t Serial_::write(uint8_t c) { - return ArduinoFakeInstance(Serial, this)->write(c); + return ArduinoFakeInstance(this)->write(c); } size_t Serial_::write(const uint8_t *buffer, size_t size) { - return ArduinoFakeInstance(Serial, this)->write(buffer, size); + return ArduinoFakeInstance(this)->write(buffer, size); } uint32_t Serial_::baud() { - return ArduinoFakeInstance(Serial, this)->baud(); + return ArduinoFakeInstance(this)->baud(); } uint8_t Serial_::stopbits() { - return ArduinoFakeInstance(Serial, this)->stopbits(); + return ArduinoFakeInstance(this)->stopbits(); } uint8_t Serial_::paritytype() { - return ArduinoFakeInstance(Serial, this)->paritytype(); + return ArduinoFakeInstance(this)->paritytype(); } uint8_t Serial_::numbits() { - return ArduinoFakeInstance(Serial, this)->numbits(); + return ArduinoFakeInstance(this)->numbits(); } bool Serial_::dtr() { - return ArduinoFakeInstance(Serial, this)->dtr(); + return ArduinoFakeInstance(this)->dtr(); } bool Serial_::rts() { - return ArduinoFakeInstance(Serial, this)->rts(); + return ArduinoFakeInstance(this)->rts(); } int32_t Serial_::readBreak() { - return ArduinoFakeInstance(Serial, this)->readBreak(); + return ArduinoFakeInstance(this)->readBreak(); } -Serial_ Serial = SerialFakeProxy(ArduinoFakeInstance(Serial)); +Serial_ Serial = SerialFakeProxy(ArduinoFakeInstance0(Serial)); #endif // USBCON \ No newline at end of file diff --git a/src/StreamFake.cpp b/src/StreamFake.cpp index e8cd545..f1d3bf1 100644 --- a/src/StreamFake.cpp +++ b/src/StreamFake.cpp @@ -3,55 +3,55 @@ void Stream::setTimeout(unsigned long timeout) { - ArduinoFakeInstance(Stream, this)->setTimeout(timeout); + ArduinoFakeInstance(this)->setTimeout(timeout); } bool Stream::find(const char *target) { - return ArduinoFakeInstance(Stream, this)->find(target); + return ArduinoFakeInstance(this)->find(target); } bool Stream::find(const char *target, size_t length) { - return ArduinoFakeInstance(Stream, this)->find(target, length); + return ArduinoFakeInstance(this)->find(target, length); } bool Stream::findUntil(const char *target, const char *terminator) { - return ArduinoFakeInstance(Stream, this)->findUntil(target, terminator); + return ArduinoFakeInstance(this)->findUntil(target, terminator); } bool Stream::findUntil(const char *target, size_t targetLen, const char *terminator, size_t termLen) { - return ArduinoFakeInstance(Stream, this)->findUntil(target, targetLen, terminator, termLen); + return ArduinoFakeInstance(this)->findUntil(target, targetLen, terminator, termLen); } long Stream::parseInt(LookaheadMode lookahead, char ignore) { - return ArduinoFakeInstance(Stream, this)->parseInt(lookahead, ignore); + return ArduinoFakeInstance(this)->parseInt(lookahead, ignore); } float Stream::parseFloat(LookaheadMode lookahead, char ignore) { - return ArduinoFakeInstance(Stream, this)->parseFloat(lookahead, ignore); + return ArduinoFakeInstance(this)->parseFloat(lookahead, ignore); } size_t Stream::readBytes(char *buffer, size_t length) { - return ArduinoFakeInstance(Stream, this)->readBytes(buffer, length); + return ArduinoFakeInstance(this)->readBytes(buffer, length); } size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) { - return ArduinoFakeInstance(Stream, this)->readBytesUntil(terminator, buffer, length); + return ArduinoFakeInstance(this)->readBytesUntil(terminator, buffer, length); } String Stream::readString() { - return ArduinoFakeInstance(Stream, this)->readString(); + return ArduinoFakeInstance(this)->readString(); } String Stream::readStringUntil(char terminator) { - return ArduinoFakeInstance(Stream, this)->readStringUntil(terminator); + return ArduinoFakeInstance(this)->readStringUntil(terminator); } diff --git a/src/WireFake.cpp b/src/WireFake.cpp index b67fa71..0296bc0 100644 --- a/src/WireFake.cpp +++ b/src/WireFake.cpp @@ -1,93 +1,91 @@ #include "ArduinoFake.h" #include "WireFake.h" -void TwoWire::begin(void) { ArduinoFakeInstance(Wire, this)->begin(); } +void TwoWire::begin(void) { ArduinoFakeInstance(this)->begin(); } void TwoWire::begin(uint8_t address) { - ArduinoFakeInstance(Wire, this)->begin(address); + ArduinoFakeInstance(this)->begin(address); } void TwoWire::begin(int address) { - ArduinoFakeInstance(Wire, this)->begin(address); + ArduinoFakeInstance(this)->begin(address); } -void TwoWire::end(void) { ArduinoFakeInstance(Wire, this)->end(); } +void TwoWire::end(void) { ArduinoFakeInstance(this)->end(); } void TwoWire::setClock(uint32_t clock) { - ArduinoFakeInstance(Wire, this)->setClock(clock); + ArduinoFakeInstance(this)->setClock(clock); } void TwoWire::setWireTimeout(uint32_t timeout, bool reset_with_timeout) { - ArduinoFakeInstance(Wire, this)->setWireTimeout(timeout, reset_with_timeout); + ArduinoFakeInstance(this)->setWireTimeout(timeout, reset_with_timeout); } bool TwoWire::getWireTimeoutFlag(void) { - return ArduinoFakeInstance(Wire, this)->getWireTimeoutFlag(); + return ArduinoFakeInstance(this)->getWireTimeoutFlag(); } void TwoWire::clearWireTimeoutFlag(void) { - ArduinoFakeInstance(Wire, this)->clearWireTimeoutFlag(); + ArduinoFakeInstance(this)->clearWireTimeoutFlag(); } uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint32_t iaddress, uint8_t isize, uint8_t sendStop) { - return ArduinoFakeInstance(Wire, this) - ->requestFrom(address, quantity, iaddress, isize, sendStop); + return ArduinoFakeInstance(this)->requestFrom(address, quantity, iaddress, isize, sendStop); } uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) { - return ArduinoFakeInstance(Wire, this) - ->requestFrom(address, quantity, sendStop); + return ArduinoFakeInstance(this)->requestFrom(address, quantity, sendStop); } uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) { - return ArduinoFakeInstance(Wire, this)->requestFrom(address, quantity); + return ArduinoFakeInstance(this)->requestFrom(address, quantity); } void TwoWire::beginTransmission(uint8_t address) { - ArduinoFakeInstance(Wire, this)->beginTransmission(address); + ArduinoFakeInstance(this)->beginTransmission(address); } void TwoWire::beginTransmission(int address) { - ArduinoFakeInstance(Wire, this)->beginTransmission(address); + ArduinoFakeInstance(this)->beginTransmission(address); } uint8_t TwoWire::endTransmission(bool sendStop) { - return ArduinoFakeInstance(Wire, this)->endTransmission(sendStop); + return ArduinoFakeInstance(this)->endTransmission(sendStop); } uint8_t TwoWire::endTransmission(void) { - return ArduinoFakeInstance(Wire, this)->endTransmission(); + return ArduinoFakeInstance(this)->endTransmission(); } size_t TwoWire::write(uint8_t data) { - return ArduinoFakeInstance(Wire, this)->write(data); + return ArduinoFakeInstance(this)->write(data); } size_t TwoWire::write(const uint8_t *data, size_t quantity) { - return ArduinoFakeInstance(Wire, this)->write(data, quantity); + return ArduinoFakeInstance(this)->write(data, quantity); } int TwoWire::available(void) { - return ArduinoFakeInstance(Wire, this)->available(); + return ArduinoFakeInstance(this)->available(); } -int TwoWire::read(void) { return ArduinoFakeInstance(Wire, this)->read(); } +int TwoWire::read(void) { return ArduinoFakeInstance(this)->read(); } -int TwoWire::peek(void) { return ArduinoFakeInstance(Wire, this)->peek(); } +int TwoWire::peek(void) { return ArduinoFakeInstance(this)->peek(); } -void TwoWire::flush(void) { ArduinoFakeInstance(Wire, this)->flush(); } +void TwoWire::flush(void) { ArduinoFakeInstance(this)->flush(); } void TwoWire::onReceive(void (*function)(int)) { - ArduinoFakeInstance(Wire, this)->onReceive(function); + ArduinoFakeInstance(this)->onReceive(function); } void TwoWire::onRequest(void (*function)(void)) { - ArduinoFakeInstance(Wire, this)->onRequest(function); + ArduinoFakeInstance(this)->onRequest(function); } -TwoWire Wire = WireFakeProxy(ArduinoFakeInstance(Wire)); \ No newline at end of file +TwoWire Wire = WireFakeProxy(ArduinoFakeInstance0(Wire)); \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index 3e063cc..0000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -include_directories(../src) - -file(GLOB cpp_test_files *.cpp) - -add_definitions(-DUNIT_TEST) - -foreach(filename ${cpp_test_files}) - - get_filename_component(target ${filename} NAME_WE) - add_executable(${target} ${filename}) - - set_target_properties(${target} PROPERTIES DEBUG_POSTFIX "-d") - target_link_libraries(${target} ${PROJECT_NAME} unity) - add_test(NAME ${target} COMMAND ${target}) - -endforeach(filename) diff --git a/test/test_OverrideableProxiedArduinoFake_t.cpp b/test/test_OverrideableProxiedArduinoFake_t.cpp index 69da63c..218be55 100644 --- a/test/test_OverrideableProxiedArduinoFake_t.cpp +++ b/test/test_OverrideableProxiedArduinoFake_t.cpp @@ -32,7 +32,7 @@ static void test_getFake(void) TEST_ASSERT_EQUAL_PTR(proxy.getFake(), subject.getFake(&proxy)); // Should return the alternate, since it's now overriden - fakeit::Mock alternateFake; + ProxiedArduinoFake_t alternateFake; overrides.setOverride(&proxy, &alternateFake); TEST_ASSERT_EQUAL_PTR(&alternateFake.get(), subject.getFake(&proxy)); } diff --git a/test/test_client.cpp b/test/test_client.cpp index c0a2ede..a6ddcac 100644 --- a/test/test_client.cpp +++ b/test/test_client.cpp @@ -31,7 +31,7 @@ static void test_basics(void) When(Method(ArduinoFake(Client), connected)).Return(0, 1); When(OverloadedMethod(ArduinoFake(Client), connect, int(const char*, uint16_t))).Return(1); - Client* client = ArduinoFakeMock(Client); + std::shared_ptr client(ArduinoFakeMock(Client)); TEST_ASSERT_EQUAL(0, client->connected()); TEST_ASSERT_EQUAL(1, client->connect(localhost, 8080)); @@ -56,7 +56,7 @@ static void test_connect(void) IPAddress ipAddress1(62, 145, 182, 225); IPAddress ipAddress2(221, 155, 131, 19); - Client* client = ArduinoFakeMock(Client); + std::shared_ptr client(ArduinoFakeMock(Client)); TEST_ASSERT_EQUAL(1, client->connect(localhost, 8080)); TEST_ASSERT_EQUAL(0, client->connect(localhost, 80)); @@ -82,7 +82,7 @@ static void test_write(void) When(OverloadedMethod(ArduinoFake(Client), write, size_t(uint8_t))).Return(1, 0); When(OverloadedMethod(ArduinoFake(Client), write, size_t(const uint8_t*, size_t))).Return(0, 1); - Client* client = ArduinoFakeMock(Client); + std::shared_ptr client(ArduinoFakeMock(Client)); TEST_ASSERT_EQUAL(1, client->write(val1)); TEST_ASSERT_EQUAL(0, client->write(val2)); @@ -108,7 +108,7 @@ static void test_read(void) When(OverloadedMethod(ArduinoFake(Client), read, int())).Return(10, 20); When(OverloadedMethod(ArduinoFake(Client), read, int(uint8_t*, size_t))).Return(30, 400); - Client* client = ArduinoFakeMock(Client); + std::shared_ptr client(ArduinoFakeMock(Client)); TEST_ASSERT_EQUAL(10, client->read()); TEST_ASSERT_EQUAL(20, client->read()); @@ -129,9 +129,9 @@ static void test_inject_instance(void) When(OverloadedMethod(ArduinoFake(Client), write, size_t(uint8_t))).Return(11, 22); - Client* client = ArduinoFakeMock(Client); + std::shared_ptr client(ArduinoFakeMock(Client)); - MyService service(client); + MyService service(client.get()); TEST_ASSERT_EQUAL(11, service.send(val1)); TEST_ASSERT_EQUAL(22, service.send(val2)); diff --git a/test/test_context.cpp b/test/test_context.cpp index 8d367a2..3b5ba5c 100644 --- a/test/test_context.cpp +++ b/test/test_context.cpp @@ -130,8 +130,8 @@ static void test_function_mock(void) TEST_ASSERT_EQUAL(m1, m2); TEST_ASSERT_EQUAL(m1, m3); - FunctionFake* i1 = ArduinoFakeInstance(Function); - FunctionFake* i2 = ArduinoFakeInstance(Function); + FunctionFake* i1 = ArduinoFakeInstance0(Function); + FunctionFake* i2 = ArduinoFakeInstance0(Function); TEST_ASSERT_NOT_NULL(i1); TEST_ASSERT_NOT_NULL(i2); @@ -147,8 +147,8 @@ static void test_print_mock(void) TEST_ASSERT_NOT_NULL(m2); TEST_ASSERT_EQUAL(m1, m2); - PrintFake* i1 = ArduinoFakeInstance(Print); - PrintFake* i2 = ArduinoFakeInstance(Print); + PrintFake* i1 = ArduinoFakeInstance0(Print); + PrintFake* i2 = ArduinoFakeInstance0(Print); TEST_ASSERT_NOT_NULL(i1); TEST_ASSERT_NOT_NULL(i2); @@ -164,8 +164,8 @@ static void test_stream_mock(void) TEST_ASSERT_NOT_NULL(m2); TEST_ASSERT_EQUAL(m1, m2); - StreamFake* i1 = ArduinoFakeInstance(Stream); - StreamFake* i2 = ArduinoFakeInstance(Stream); + StreamFake* i1 = ArduinoFakeInstance0(Stream); + StreamFake* i2 = ArduinoFakeInstance0(Stream); TEST_ASSERT_NOT_NULL(i1); TEST_ASSERT_NOT_NULL(i2); @@ -181,8 +181,8 @@ static void test_serial_mock(void) TEST_ASSERT_NOT_NULL(m2); TEST_ASSERT_EQUAL(m1, m2); - SerialFake* i1 = ArduinoFakeInstance(Serial); - SerialFake* i2 = ArduinoFakeInstance(Serial); + SerialFake* i1 = ArduinoFakeInstance0(Serial); + SerialFake* i2 = ArduinoFakeInstance0(Serial); TEST_ASSERT_NOT_NULL(i1); TEST_ASSERT_NOT_NULL(i2); @@ -194,7 +194,7 @@ static void test_unknown_instance_exception(void) fakeit::Mock fake; try { - ArduinoFakeInstance(Print, &fake.get()); + ArduinoFakeInstance(&fake.get()); } catch (const std::runtime_error& e) { TEST_ASSERT_EQUAL_STRING("Unknown instance", e.what()); } @@ -202,18 +202,22 @@ static void test_unknown_instance_exception(void) static void test_getter_overload_with_proxy(void) { - Serial_* serial = ArduinoFakeMock(Serial); - PrintFake* fake = ArduinoFakeInstance(Stream, serial); + std::shared_ptr serial(ArduinoFakeMock(Serial)); + PrintFake* serialPrintFake = ArduinoFakeInstance(serial.get()); - TEST_ASSERT_EQUAL(getArduinoFakeContext()->Serial(), fake); + TEST_ASSERT_EQUAL(getArduinoFakeContext()->Serial(), serialPrintFake); + PrintFake* printFake = ArduinoFakeInstance0(Print); + TEST_ASSERT_NOT_EQUAL(printFake, serialPrintFake); } static void test_getter_overload_with_mapping(void) { Serial_* serial = &::Serial; - PrintFake* fake = ArduinoFakeInstance(Stream, serial); + PrintFake* serialPrintFake = ArduinoFakeInstance(serial); - TEST_ASSERT_EQUAL(getArduinoFakeContext()->Serial(), fake); + TEST_ASSERT_EQUAL(getArduinoFakeContext()->Serial(), serialPrintFake); + PrintFake* printFake = ArduinoFakeInstance0(Print); + TEST_ASSERT_NOT_EQUAL(printFake, serialPrintFake); } namespace ArduinoContextTest diff --git a/test/test_print.cpp b/test/test_print.cpp index 08ef3ce..f04c1cc 100644 --- a/test/test_print.cpp +++ b/test/test_print.cpp @@ -8,7 +8,7 @@ static void test_availableForWrite(void) { When(Method(ArduinoFake(Print), availableForWrite)).Return(-100); - Print* print = ArduinoFakeMock(Print); + std::shared_ptr print(ArduinoFakeMock(Print)); int result = print->availableForWrite(); TEST_ASSERT_EQUAL(-100, result); @@ -38,7 +38,7 @@ static void test_print_variables(void) When(OverloadedMethod(ArduinoFake(Print), print, size_t(unsigned int, int))).AlwaysReturn(); When(OverloadedMethod(ArduinoFake(Print), print, size_t(unsigned long, int))).AlwaysReturn(); - Print* print = ArduinoFakeMock(Print); + std::shared_ptr print(ArduinoFakeMock(Print)); print->print(char_var); print->print(char_array_var); @@ -84,7 +84,7 @@ static void test_println_variables(void) When(OverloadedMethod(ArduinoFake(Print), println, size_t(unsigned int, int))).AlwaysReturn(); When(OverloadedMethod(ArduinoFake(Print), println, size_t(unsigned long, int))).AlwaysReturn(); - Print* print = ArduinoFakeMock(Print); + std::shared_ptr print(ArduinoFakeMock(Print)); print->println(); print->println(char_var); diff --git a/test/test_serial.cpp b/test/test_serial.cpp index 5ea0ecc..e89fe6e 100644 --- a/test/test_serial.cpp +++ b/test/test_serial.cpp @@ -7,8 +7,8 @@ using namespace fakeit; static void test_extends_stream(void) { TEST_ASSERT_NOT_EQUAL( - ArduinoFakeInstance(Stream), - ArduinoFakeInstance(Serial) + ArduinoFakeInstance0(Stream), + ArduinoFakeInstance0(Serial) ); char print_char_var = 'A'; @@ -23,8 +23,8 @@ static void test_extends_stream(void) When(OverloadedMethod(ArduinoFake(Serial), print, size_t(char))).AlwaysReturn(); When(OverloadedMethod(ArduinoFake(Serial), print, size_t(int, int))).AlwaysReturn(); - Stream* stream = ArduinoFakeMock(Stream); - Serial_* serial = ArduinoFakeMock(Serial); + std::shared_ptr stream(ArduinoFakeMock(Stream)); + std::shared_ptr serial(ArduinoFakeMock(Serial)); stream->print(stream_char_var); stream->print(stream_int_var, DEC); diff --git a/test/test_stream.cpp b/test/test_stream.cpp index c077e59..2d549e3 100644 --- a/test/test_stream.cpp +++ b/test/test_stream.cpp @@ -7,8 +7,8 @@ using namespace fakeit; static void test_extends_print(void) { TEST_ASSERT_NOT_EQUAL( - ArduinoFakeInstance(Stream), - ArduinoFakeInstance(Print) + ArduinoFakeInstance0(Stream), + ArduinoFakeInstance0(Print) ); char print_char_var = 'A'; @@ -23,8 +23,8 @@ static void test_extends_print(void) When(OverloadedMethod(ArduinoFake(Print), print, size_t(char))).AlwaysReturn(); When(OverloadedMethod(ArduinoFake(Print), print, size_t(int, int))).AlwaysReturn(); - Stream* stream = ArduinoFakeMock(Stream); - Print* print = ArduinoFakeMock(Print); + std::shared_ptr stream(ArduinoFakeMock(Stream)); + std::shared_ptr print(ArduinoFakeMock(Print)); stream->print(stream_char_var); stream->print(stream_int_var, DEC); @@ -48,7 +48,7 @@ static void test_stream_basics(void) When(Method(ArduinoFake(Stream), setTimeout)).AlwaysReturn(); When(Method(ArduinoFake(Stream), getTimeout)).AlwaysReturn(11); - Stream* stream = ArduinoFakeMock(Stream); + std::shared_ptr stream(ArduinoFakeMock(Stream)); TEST_ASSERT_EQUAL(0, stream->available()); TEST_ASSERT_EQUAL(1, stream->available()); @@ -91,7 +91,7 @@ static void test_stream_find(void) When(OverloadedMethod(ArduinoFake(Stream), findUntil, bool(const char*, const char*))).Return(true, false); When(OverloadedMethod(ArduinoFake(Stream), findUntil, bool(const char*, size_t, const char*, size_t))).Return(true, false); - Stream* stream = ArduinoFakeMock(Stream); + std::shared_ptr stream(ArduinoFakeMock(Stream)); TEST_ASSERT_EQUAL(true, stream->find(char_ptr1)); TEST_ASSERT_EQUAL(false, stream->find(char_ptr2)); @@ -117,10 +117,10 @@ static void test_stream_find(void) static void test_stream_parse(void) { - When(Method(ArduinoFake(Stream), parseInt)).Return(10, 11); - When(Method(ArduinoFake(Stream), parseFloat)).Return(2.0, 2.1); + When(OverloadedMethod(ArduinoFake(Stream), parseInt, long(LookaheadMode, char))).Return(10, 11); + When(OverloadedMethod(ArduinoFake(Stream), parseFloat, float(LookaheadMode, char))).Return(2.0, 2.1); - Stream* stream = ArduinoFakeMock(Stream); + std::shared_ptr stream(ArduinoFakeMock(Stream)); TEST_ASSERT_INT_WITHIN(0, 10, stream->parseInt()); TEST_ASSERT_INT_WITHIN(0, 11, stream->parseInt()); @@ -128,8 +128,8 @@ static void test_stream_parse(void) TEST_ASSERT_FLOAT_WITHIN(0, 2.0, stream->parseFloat()); TEST_ASSERT_FLOAT_WITHIN(0, 2.1, stream->parseFloat()); - Verify(Method(ArduinoFake(Stream), parseInt)).Exactly(2_Times); - Verify(Method(ArduinoFake(Stream), parseFloat)).Exactly(2_Times); + Verify(OverloadedMethod(ArduinoFake(Stream), parseInt, long(LookaheadMode, char))).Exactly(2_Times); + Verify(OverloadedMethod(ArduinoFake(Stream), parseFloat, float(LookaheadMode, char))).Exactly(2_Times); } static void test_stream_read(void) @@ -143,12 +143,12 @@ static void test_stream_read(void) char* char_ptr1 = &char_val1; char* char_ptr2 = &char_val2; - When(Method(ArduinoFake(Stream), readBytes)).Return(1, 2); - When(Method(ArduinoFake(Stream), readBytesUntil)).Return(3, 4); + When(OverloadedMethod(ArduinoFake(Stream), readBytes, size_t(char *, size_t))).Return(1, 2); + When(OverloadedMethod(ArduinoFake(Stream), readBytesUntil, size_t(char, char*, size_t))).Return(3, 4); When(Method(ArduinoFake(Stream), readString)).Return(str1, str2); When(Method(ArduinoFake(Stream), readStringUntil)).Return(str1, str2); - Stream* stream = ArduinoFakeMock(Stream); + std::shared_ptr stream(ArduinoFakeMock(Stream)); TEST_ASSERT_EQUAL_INT(1, stream->readBytes(char_ptr1, 10)); TEST_ASSERT_EQUAL_INT(2, stream->readBytes(char_ptr2, 20)); @@ -162,14 +162,14 @@ static void test_stream_read(void) TEST_ASSERT_TRUE(str1.equals(stream->readStringUntil(terminator))); TEST_ASSERT_TRUE(str2.equals(stream->readStringUntil(terminator))); - Verify(Method(ArduinoFake(Stream), readBytes).Using(char_ptr1, 10)).Once(); - Verify(Method(ArduinoFake(Stream), readBytes).Using(char_ptr2, 20)).Once(); + Verify(OverloadedMethod(ArduinoFake(Stream), readBytes, size_t(char *, size_t)).Using(char_ptr1, 10)).Once(); + Verify(OverloadedMethod(ArduinoFake(Stream), readBytes, size_t(char *, size_t)).Using(char_ptr2, 20)).Once(); - Verify(Method(ArduinoFake(Stream), readBytesUntil).Using(terminator, char_ptr1, 10)).Once(); - Verify(Method(ArduinoFake(Stream), readBytesUntil).Using(terminator, char_ptr2, 20)).Once(); + Verify(OverloadedMethod(ArduinoFake(Stream), readBytesUntil, size_t(char, char*, size_t)).Using(terminator, char_ptr1, 10)).Once(); + Verify(OverloadedMethod(ArduinoFake(Stream), readBytesUntil, size_t(char, char*, size_t)).Using(terminator, char_ptr2, 20)).Once(); Verify(Method(ArduinoFake(Stream), readString)).Exactly(2_Times); - Verify(Method(ArduinoFake(Stream), readBytesUntil)).Exactly(2_Times); + Verify(OverloadedMethod(ArduinoFake(Stream), readBytesUntil, size_t(char, char*, size_t))).Exactly(2_Times); } namespace StreamTest diff --git a/test/test_wire.cpp b/test/test_wire.cpp index e9c1ff8..a2d1622 100644 --- a/test/test_wire.cpp +++ b/test/test_wire.cpp @@ -5,7 +5,7 @@ using namespace fakeit; static void test_extends_stream(void) { - TEST_ASSERT_NOT_EQUAL(ArduinoFakeInstance(Stream), ArduinoFakeInstance(Wire)); + TEST_ASSERT_NOT_EQUAL(ArduinoFakeInstance0(Stream), ArduinoFakeInstance0(Wire)); char print_char_var = 'A'; char stream_char_var = 'B'; @@ -22,8 +22,8 @@ static void test_extends_stream(void) { When(OverloadedMethod(ArduinoFake(Wire), print, size_t(int, int))) .AlwaysReturn(); - Stream *stream = ArduinoFakeMock(Stream); - TwoWire *wire = ArduinoFakeMock(Wire); + std::shared_ptr stream(ArduinoFakeMock(Stream)); + std::shared_ptr wire(ArduinoFakeMock(Wire)); stream->print(stream_char_var); stream->print(stream_int_var, DEC);