diff --git a/.gitignore b/.gitignore index 30f42e5..ee24150 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,6 @@ test/test_all #ignore external lib /lib/gmock/gmock/ /lib/gtest/gtest/ + +#ingore IDE files +.vscode \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index f44785f..70a41f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,8 @@ -cmake_minimum_required (VERSION 2.8.8) +cmake_minimum_required (VERSION 3.20.0) project (arduino_mock) find_package(Threads REQUIRED) add_subdirectory(lib/gtest) -add_subdirectory(lib/gmock) message ("building arduino_mock") message("Gtest include: ${GTEST_INCLUDE_DIRS}") @@ -25,14 +24,13 @@ target_link_libraries(arduino_mock ${CMAKE_THREAD_LIBS_INIT} ) -set_target_properties( arduino_mock - PROPERTIES +set_target_properties(arduino_mock PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/dist/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/dist/lib" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/dist/bin" ) -add_dependencies(arduino_mock gtest gmock) +add_dependencies(arduino_mock gtest) option(test "Build all tests." OFF) diff --git a/build.sh b/build.sh index cf88fa9..8f5f375 100755 --- a/build.sh +++ b/build.sh @@ -4,6 +4,12 @@ set -eu cd -- "$(dirname -- "$0")" mkdir -p build cd build -cmake -Dtest=ON .. + +if [ "$OSTYPE" == "win32" -o "$OSTYPE" == "msys" ] ; then + cmake -Dtest=ON .. -G "MSYS Makefiles"; +else + cmake -Dtest=ON .. -G "Unix Makefiles"; +fi + make ctest -V diff --git a/include/arduino-mock/Arduino.h b/include/Arduino.h similarity index 99% rename from include/arduino-mock/Arduino.h rename to include/Arduino.h index 6247a4f..6796278 100644 --- a/include/arduino-mock/Arduino.h +++ b/include/Arduino.h @@ -5,6 +5,7 @@ #define ARDUINO_H #include +#include #ifdef __cplusplus extern "C" { diff --git a/include/arduino-mock/EEPROM.h b/include/EEPROM.h similarity index 100% rename from include/arduino-mock/EEPROM.h rename to include/EEPROM.h diff --git a/include/arduino-mock/IRremote.h b/include/IRremote.h similarity index 100% rename from include/arduino-mock/IRremote.h rename to include/IRremote.h diff --git a/include/arduino-mock/SPI.h b/include/SPI.h similarity index 97% rename from include/arduino-mock/SPI.h rename to include/SPI.h index 8cdf0ff..92862fb 100644 --- a/include/arduino-mock/SPI.h +++ b/include/SPI.h @@ -18,7 +18,7 @@ class SPISettings { } }; -class SPI_ { +class SPIClass { public: void begin(); void usingInterrupt(uint8_t ); @@ -36,7 +36,7 @@ class SPI_ { void detachInterrupt(); }; -extern SPI_ SPI; +extern SPIClass SPI; class SPIMock { public: diff --git a/include/arduino-mock/Serial.h b/include/Serial.h similarity index 98% rename from include/arduino-mock/Serial.h rename to include/Serial.h index f0b4c8b..db102da 100644 --- a/include/arduino-mock/Serial.h +++ b/include/Serial.h @@ -101,6 +101,9 @@ class Serial_ { static size_t println(const Printable&); */ }; + +class HardwareSerial : public Serial_ {}; + extern Serial_ Serial; SerialMock* serialMockInstance(); diff --git a/include/arduino-mock/Spark.h b/include/Spark.h similarity index 100% rename from include/arduino-mock/Spark.h rename to include/Spark.h diff --git a/include/arduino-mock/WiFi.h b/include/WiFi.h similarity index 100% rename from include/arduino-mock/WiFi.h rename to include/WiFi.h diff --git a/include/arduino-mock/Wire.h b/include/Wire.h similarity index 100% rename from include/arduino-mock/Wire.h rename to include/Wire.h diff --git a/include/arduino-mock/serialHelper.h b/include/serialHelper.h similarity index 100% rename from include/arduino-mock/serialHelper.h rename to include/serialHelper.h diff --git a/lib/gmock/CMakeLists.txt b/lib/gmock/CMakeLists.txt deleted file mode 100644 index 4ca057e..0000000 --- a/lib/gmock/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 2.8.8) -project(gmock_builder C CXX) -include(ExternalProject) - -ExternalProject_Add(gmock - URL https://github.com/paulsapps/gmock-1.7.0/archive/master.zip - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gmock - INSTALL_COMMAND "" -) - -# Specify include dir -ExternalProject_Get_Property(gmock source_dir) -set(GMOCK_INCLUDE_DIRS ${source_dir}/include PARENT_SCOPE) - -# Specify MainTest's link libraries -ExternalProject_Get_Property(gmock binary_dir) -set(GMOCK_LIBS_DIR ${binary_dir} PARENT_SCOPE) diff --git a/lib/gtest/CMakeLists.txt b/lib/gtest/CMakeLists.txt index 59f285f..adf150b 100644 --- a/lib/gtest/CMakeLists.txt +++ b/lib/gtest/CMakeLists.txt @@ -3,15 +3,17 @@ project(gtest_builder C CXX) include(ExternalProject) ExternalProject_Add(gtest - URL https://github.com/google/googletest/archive/release-1.7.0.zip + URL https://github.com/google/googletest/archive/release-1.10.0.zip PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gtest INSTALL_COMMAND "" ) # Specify include dir ExternalProject_Get_Property(gtest source_dir) -set(GTEST_INCLUDE_DIRS ${source_dir}/include PARENT_SCOPE) +set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE) +set(GMOCK_INCLUDE_DIRS ${source_dir}/googlemock/include PARENT_SCOPE) # Specify MainTest's link libraries ExternalProject_Get_Property(gtest binary_dir) -set(GTEST_LIBS_DIR ${binary_dir} PARENT_SCOPE) +set(GTEST_LIBS_DIR ${binary_dir}/lib PARENT_SCOPE) +set(GMOCK_LIBS_DIR ${binary_dir}/lib PARENT_SCOPE) diff --git a/src/Arduino.cc b/src/Arduino.cc index bd0a28e..7b06464 100644 --- a/src/Arduino.cc +++ b/src/Arduino.cc @@ -1,4 +1,4 @@ -#include "arduino-mock/Arduino.h" +#include "Arduino.h" static ArduinoMock* arduinoMock = NULL; ArduinoMock* arduinoMockInstance() { diff --git a/src/EEPROM.cc b/src/EEPROM.cc index f558340..c6f05cf 100644 --- a/src/EEPROM.cc +++ b/src/EEPROM.cc @@ -1,6 +1,6 @@ /** Implementation of EEPROM mock **/ -#include "arduino-mock/EEPROM.h" +#include "EEPROM.h" static EEPROMMock* p_EEPROMMock = NULL; EEPROMMock* EEPROMMockInstance() { diff --git a/src/IRremote.cc b/src/IRremote.cc index e043c1d..40f887a 100644 --- a/src/IRremote.cc +++ b/src/IRremote.cc @@ -1,4 +1,4 @@ -#include "arduino-mock/IRremote.h" +#include "IRremote.h" // Taken from IRremoteInt.h #define ERR 0 diff --git a/src/SPI.cc b/src/SPI.cc index ffd8b7f..2d39408 100644 --- a/src/SPI.cc +++ b/src/SPI.cc @@ -1,4 +1,4 @@ -#include "arduino-mock/SPI.h" +#include "SPI.h" static SPIMock* p_SPIMock = NULL; SPIMock* SPIMockInstance() { @@ -15,62 +15,62 @@ void releaseSPIMock() { } } -void SPI_::begin() { +void SPIClass::begin() { p_SPIMock->begin(); } -void SPI_::usingInterrupt(uint8_t a) { +void SPIClass::usingInterrupt(uint8_t a) { p_SPIMock->usingInterrupt(a); } -void SPI_::notUsingInterrupt(uint8_t a) { +void SPIClass::notUsingInterrupt(uint8_t a) { p_SPIMock->notUsingInterrupt(a); } -void SPI_::beginTransaction(SPISettings a) { +void SPIClass::beginTransaction(SPISettings a) { return p_SPIMock->beginTransaction(a); } -uint8_t SPI_::transfer(uint8_t a) { +uint8_t SPIClass::transfer(uint8_t a) { return p_SPIMock->transfer(a); } -uint16_t SPI_::transfer16(uint16_t a) { +uint16_t SPIClass::transfer16(uint16_t a) { return p_SPIMock->transfer16(a); } -void SPI_::transfer(void * a, size_t b) { +void SPIClass::transfer(void * a, size_t b) { return p_SPIMock->transfer(a, b); } -void SPI_::endTransaction(void) { +void SPIClass::endTransaction(void) { return p_SPIMock->endTransaction(); } -void SPI_::end(void) { +void SPIClass::end(void) { return p_SPIMock->end(); } -void SPI_::setBitOrder(uint8_t a) { +void SPIClass::setBitOrder(uint8_t a) { p_SPIMock->setBitOrder(a); } -void SPI_::setDataMode(uint8_t a) { +void SPIClass::setDataMode(uint8_t a) { p_SPIMock->setDataMode(a); } -void SPI_::setClockDivider(uint8_t a) { +void SPIClass::setClockDivider(uint8_t a) { return p_SPIMock->setClockDivider(a); } -void SPI_::attachInterrupt() { +void SPIClass::attachInterrupt() { return p_SPIMock->attachInterrupt(); } -void SPI_::detachInterrupt() { +void SPIClass::detachInterrupt() { return p_SPIMock->detachInterrupt(); } // Preinstantiate Objects -SPI_ SPI; +SPIClass SPI; diff --git a/src/Serial.cc b/src/Serial.cc index 708ca70..923ee1c 100644 --- a/src/Serial.cc +++ b/src/Serial.cc @@ -1,6 +1,6 @@ // Copyright 2014 http://switchdevice.com -#include "arduino-mock/Serial.h" +#include "Serial.h" static SerialMock* gSerialMock = NULL; SerialMock* serialMockInstance() { diff --git a/src/Spark.cc b/src/Spark.cc index d933b1b..b60ec1f 100644 --- a/src/Spark.cc +++ b/src/Spark.cc @@ -1,6 +1,6 @@ // Copyright 2014 http://switchdevice.com -#include "arduino-mock/Spark.h" +#include "Spark.h" static SparkMock* gSparkMock = NULL; SparkMock* sparkMockInstance() { diff --git a/src/WiFi.cc b/src/WiFi.cc index 3f0ff5c..640678b 100755 --- a/src/WiFi.cc +++ b/src/WiFi.cc @@ -1,4 +1,4 @@ -#include "arduino-mock/WiFi.h" +#include "WiFi.h" static WiFiMock* p_WiFiMock = NULL; WiFiMock* WiFiMockInstance() { diff --git a/src/Wire.cc b/src/Wire.cc index f0a21bd..59ddb3c 100644 --- a/src/Wire.cc +++ b/src/Wire.cc @@ -1,4 +1,4 @@ -#include "arduino-mock/Wire.h" +#include "Wire.h" static WireMock* p_WireMock = NULL; WireMock* WireMockInstance() { diff --git a/src/serialHelper.cc b/src/serialHelper.cc index 1e88fee..dbd3ba8 100644 --- a/src/serialHelper.cc +++ b/src/serialHelper.cc @@ -1,4 +1,4 @@ -#include "arduino-mock/serialHelper.h" +#include "serialHelper.h" stringCapture::stringCapture() : d() { diff --git a/test/Arduino_unittest.cc b/test/Arduino_unittest.cc index c5d3dff..76ce2bf 100644 --- a/test/Arduino_unittest.cc +++ b/test/Arduino_unittest.cc @@ -2,7 +2,7 @@ // This example code is in the public domain. #include "gtest/gtest.h" -#include "arduino-mock/Arduino.h" +#include "Arduino.h" using ::testing::Return; TEST(digitalRead, 2) { diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 85d98b9..a583a13 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -9,6 +9,7 @@ target_link_libraries(test_all ${GTEST_LIBS_DIR}/libgtest.a ${GTEST_LIBS_DIR}/libgtest_main.a ${GMOCK_LIBS_DIR}/libgmock.a + ${GMOCK_LIBS_DIR}/libgmock_main.a ${CMAKE_THREAD_LIBS_INIT} ) diff --git a/test/EEPROM_unittest.cc b/test/EEPROM_unittest.cc index 92ce5d3..b90b259 100644 --- a/test/EEPROM_unittest.cc +++ b/test/EEPROM_unittest.cc @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -#include "arduino-mock/EEPROM.h" -#include "arduino-mock/Arduino.h" +#include "EEPROM.h" +#include "Arduino.h" using ::testing::Return; TEST(EEPROM, access) { diff --git a/test/SPI_unittest.cc b/test/SPI_unittest.cc index 50a6758..9b4966c 100644 --- a/test/SPI_unittest.cc +++ b/test/SPI_unittest.cc @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -#include "arduino-mock/SPI.h" -#include "arduino-mock/Arduino.h" +#include "SPI.h" +#include "Arduino.h" using ::testing::Return; diff --git a/test/Serial_unittest.cc b/test/Serial_unittest.cc index d899df2..c4a46f1 100644 --- a/test/Serial_unittest.cc +++ b/test/Serial_unittest.cc @@ -2,9 +2,9 @@ // This example code is in the public domain. #include "gtest/gtest.h" -#include "arduino-mock/Arduino.h" -#include "arduino-mock/Serial.h" -#include "arduino-mock/serialHelper.h" +#include "Arduino.h" +#include "Serial.h" +#include "serialHelper.h" using ::testing::_; using ::testing::Return; diff --git a/test/Spark_unittest.cc b/test/Spark_unittest.cc index 3acd534..eb0d72e 100644 --- a/test/Spark_unittest.cc +++ b/test/Spark_unittest.cc @@ -5,9 +5,9 @@ #define DEBUG_LOG false #include "gtest/gtest.h" -#include "arduino-mock/Arduino.h" +#include "Arduino.h" -#include "arduino-mock/Spark.h" +#include "Spark.h" using ::testing::StrCaseEq; diff --git a/test/WiFi_unittest.cc b/test/WiFi_unittest.cc index eff17e6..e9827b5 100755 --- a/test/WiFi_unittest.cc +++ b/test/WiFi_unittest.cc @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -#include "arduino-mock/WiFi.h" -#include "arduino-mock/Arduino.h" +#include "WiFi.h" +#include "Arduino.h" WiFi_ wifi; diff --git a/test/Wire_unittest.cc b/test/Wire_unittest.cc index 63c16fc..ef54249 100644 --- a/test/Wire_unittest.cc +++ b/test/Wire_unittest.cc @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -#include "arduino-mock/Wire.h" -#include "arduino-mock/Arduino.h" +#include "Wire.h" +#include "Arduino.h" using ::testing::Return; TEST(Wire, access) { diff --git a/test/serialHelper_unittest.cc b/test/serialHelper_unittest.cc index d11dce1..d3f42de 100644 --- a/test/serialHelper_unittest.cc +++ b/test/serialHelper_unittest.cc @@ -1,8 +1,8 @@ #include "gtest/gtest.h" -#include "arduino-mock/Arduino.h" -#include "arduino-mock/Serial.h" +#include "Arduino.h" +#include "Serial.h" -#include "arduino-mock/serialHelper.h" +#include "serialHelper.h" using ::testing::_; using ::testing::Return;