├── .gitignore ├── .gitmodules ├── DigitalReadSerial.ino ├── README.md └── test ├── CMakeLists.txt ├── DigitalReadSerial_unittest.cc ├── arduino_mock └── CMakeLists.txt ├── build.sh └── build └── .gitignore /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .*.un~ 3 | *~ 4 | .DS_Store 5 | *.o 6 | *.a 7 | /test/DigitalReadSerial_unittest 8 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikeyasu/arduino-gmock-sample/a6e8e6796ef4ca2f0fd2a2619c757e98959db66a/.gitmodules -------------------------------------------------------------------------------- /DigitalReadSerial.ino: -------------------------------------------------------------------------------- 1 | /* 2 | DigitalReadSerial 3 | Reads a digital input on pin 2, prints the result to the serial monitor 4 | 5 | This example code is in the public domain. 6 | */ 7 | 8 | // digital pin 2 has a pushbutton attached to it. Give it a name: 9 | int pushButton = 2; 10 | 11 | // the setup routine runs once when you press reset: 12 | void setup() { 13 | // initialize serial communication at 9600 bits per second: 14 | Serial.begin(9600); 15 | // make the pushbutton's pin an input: 16 | pinMode(pushButton, INPUT); 17 | } 18 | 19 | // the loop routine runs over and over again forever: 20 | void loop() { 21 | // read the input pin: 22 | int buttonState = digitalRead(pushButton); 23 | // print out the state of the button: 24 | Serial.println(buttonState); 25 | delay(1); // delay in between reads for stability 26 | } 27 | 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | arduino-gmock-sample 2 | ==================== 3 | 4 | This is a unittest example using gmock and google test. 5 | 6 | Regarding license, please refer to subfolders. 7 | -------------------------------------------------------------------------------- /test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8.8) 2 | project (arduino_mock_sample) 3 | 4 | add_subdirectory(arduino_mock) 5 | 6 | include_directories( 7 | ${ARDUINO_MOCK_INCLUDE_DIRS} 8 | ${ARDUINO_MOCK_LIBS_DIR}/lib/gtest/gtest/src/gtest/include 9 | ${ARDUINO_MOCK_LIBS_DIR}/lib/gmock/gmock/src/gmock/include 10 | ) 11 | 12 | file(GLOB SRC "DigitalReadSerial_unittest.cc") 13 | add_executable(arduino_mock_sample DigitalReadSerial_unittest.cc) 14 | 15 | target_link_libraries(arduino_mock_sample 16 | ${ARDUINO_MOCK_LIBS_DIR}/lib/gtest/gtest/src/gtest-build/libgtest.a 17 | ${ARDUINO_MOCK_LIBS_DIR}/lib/gmock/gmock/src/gmock-build/libgmock.a 18 | ${ARDUINO_MOCK_LIBS_DIR}/dist/lib/libarduino_mock.a 19 | ${CMAKE_THREAD_LIBS_INIT} 20 | ) 21 | 22 | add_dependencies(arduino_mock_sample arduino_mock) 23 | 24 | enable_testing() 25 | add_test(arduino_mock_sample_1 arduino_mock_sample) 26 | -------------------------------------------------------------------------------- /test/DigitalReadSerial_unittest.cc: -------------------------------------------------------------------------------- 1 | // Copyright 2014 http://switchdevice.com 2 | // This example code is in the public domain. 3 | 4 | #include "gtest/gtest.h" 5 | #include "arduino-mock/Arduino.h" 6 | #include "arduino-mock/Serial.h" 7 | 8 | #include "../DigitalReadSerial.ino" 9 | 10 | using ::testing::Return; 11 | TEST(loop, pushed) { 12 | ArduinoMock* arduinoMock = arduinoMockInstance(); 13 | SerialMock* serialMock = serialMockInstance(); 14 | EXPECT_CALL(*arduinoMock, digitalRead(2)) 15 | .WillOnce(Return(1)); 16 | EXPECT_CALL(*serialMock, println(1, 10)); 17 | EXPECT_CALL(*arduinoMock, delay(1)); 18 | loop(); 19 | releaseSerialMock(); 20 | releaseArduinoMock(); 21 | } 22 | 23 | int main(int argc, char* argv[]) { 24 | ::testing::InitGoogleTest(&argc, argv); 25 | return RUN_ALL_TESTS(); 26 | } 27 | -------------------------------------------------------------------------------- /test/arduino_mock/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.8) 2 | project(arduino_mock_builder C CXX) 3 | include(ExternalProject) 4 | 5 | ExternalProject_Add(arduino_mock 6 | URL https://github.com/ikeyasu/arduino-mock/archive/0.0.1.zip 7 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/arduino_mock 8 | INSTALL_COMMAND "" 9 | ) 10 | 11 | ExternalProject_Get_Property(arduino_mock source_dir) 12 | set(ARDUINO_MOCK_INCLUDE_DIRS ${source_dir}/include PARENT_SCOPE) 13 | 14 | ExternalProject_Get_Property(arduino_mock binary_dir) 15 | set(ARDUINO_MOCK_LIBS_DIR ${binary_dir} PARENT_SCOPE) 16 | 17 | -------------------------------------------------------------------------------- /test/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | cd -- "$(dirname -- "$0")" 5 | cd build 6 | cmake .. 7 | make 8 | ctest -V 9 | -------------------------------------------------------------------------------- /test/build/.gitignore: -------------------------------------------------------------------------------- 1 | # CMake files 2 | CMakeCache.txt 3 | CMakeFiles/ 4 | CTestTestfile.cmake 5 | Makefile 6 | Testing/ 7 | arduino_mock/ 8 | arduino_mock_sample 9 | cmake_install.cmake 10 | dist/ 11 | --------------------------------------------------------------------------------