diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3dcdacf..c3d5866 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,2 +1,2 @@ add_subdirectory(mocks) -add_subdirectory(runner) +add_subdirectory(unit-tests) diff --git a/test/runner/CMakeLists.txt b/test/runner/CMakeLists.txt deleted file mode 100644 index f619c7c..0000000 --- a/test/runner/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -project(test-runner) - -include_directories(${gtest_SOURCE_DIR}/include) - -add_executable(test-runner - test-runner.cpp - test-runner.h - test-runner_Namespace.h - test-runner_Main.cpp - test-runner_Main.h -) -target_link_libraries(test-runner - test-mocks - gtest -) diff --git a/test/runner/test-runner.cpp b/test/runner/test-runner.cpp deleted file mode 100644 index 29269a9..0000000 --- a/test/runner/test-runner.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "test-runner.h" - -BEGIN_TEST_RUNNER_NAMESPACE - -END_TEST_RUNNER_NAMESPACE diff --git a/test/runner/test-runner.h b/test/runner/test-runner.h deleted file mode 100644 index 43b051e..0000000 --- a/test/runner/test-runner.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include "test-runner_Namespace.h" - -BEGIN_TEST_RUNNER_NAMESPACE - -END_TEST_RUNNER_NAMESPACE diff --git a/test/runner/test-runner_Main.h b/test/runner/test-runner_Main.h deleted file mode 100644 index e875f19..0000000 --- a/test/runner/test-runner_Main.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "test-runner.h" - -BEGIN_TEST_RUNNER_NAMESPACE - -END_TEST_RUNNER_NAMESPACE - -int main(int argc, char **argv); diff --git a/test/runner/test-runner_Namespace.h b/test/runner/test-runner_Namespace.h deleted file mode 100644 index 839dbf3..0000000 --- a/test/runner/test-runner_Namespace.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#define TEST_RUNNER_NAMESPACE test_runner -#define BEGIN_TEST_RUNNER_NAMESPACE namespace TEST_RUNNER_NAMESPACE { -#define END_TEST_RUNNER_NAMESPACE } - -#define USING_NAMESPACE_TEST_RUNNER using namespace TEST_RUNNER_NAMESPACE; - -BEGIN_TEST_RUNNER_NAMESPACE - -END_TEST_RUNNER_NAMESPACE diff --git a/test/unit-tests/CMakeLists.txt b/test/unit-tests/CMakeLists.txt new file mode 100644 index 0000000..5b594e4 --- /dev/null +++ b/test/unit-tests/CMakeLists.txt @@ -0,0 +1,22 @@ +project(unit-tests) + +include_directories(${gtest_SOURCE_DIR}/include) + +add_executable(unit-tests + + unit-tests.cpp + unit-tests.h + unit-tests_Namespace.h + unit-tests_MidiMessage.cpp +) + +target_link_libraries(unit-tests + gtest + midi + test-mocks +) + +add_custom_command(TARGET unit-tests POST_BUILD + COMMAND ${unit-tests_BINARY_DIR}/unit-tests +) + diff --git a/test/runner/test-runner_Main.cpp b/test/unit-tests/unit-tests.cpp similarity index 66% rename from test/runner/test-runner_Main.cpp rename to test/unit-tests/unit-tests.cpp index 9691a61..5c8e3d8 100644 --- a/test/runner/test-runner_Main.cpp +++ b/test/unit-tests/unit-tests.cpp @@ -1,5 +1,4 @@ -#include "test-runner_Main.h" -#include +#include "unit-tests.h" int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/test/unit-tests/unit-tests.h b/test/unit-tests/unit-tests.h new file mode 100644 index 0000000..520206b --- /dev/null +++ b/test/unit-tests/unit-tests.h @@ -0,0 +1,8 @@ +#pragma once + +#include "unit-tests_Namespace.h" +#include + +BEGIN_UNIT_TESTS_NAMESPACE + +END_UNIT_TESTS_NAMESPACE diff --git a/test/unit-tests/unit-tests_MidiMessage.cpp b/test/unit-tests/unit-tests_MidiMessage.cpp new file mode 100644 index 0000000..79cfac1 --- /dev/null +++ b/test/unit-tests/unit-tests_MidiMessage.cpp @@ -0,0 +1,75 @@ +#include "unit-tests.h" +#include +#include + +BEGIN_UNNAMED_NAMESPACE + +TEST(MidiMessage, hasTheRightProperties) +{ + typedef midi::Message<42> Message; + const Message message = Message(); + EXPECT_EQ(message.channel, 0); + EXPECT_EQ(message.type, 0); + EXPECT_EQ(message.data1, 0); + EXPECT_EQ(message.data2, 0); + EXPECT_EQ(message.valid, false); + EXPECT_EQ(message.getSysExSize(), 0); +} + +template +inline void setSysExSize(Message& ioMessage, unsigned inSize) +{ + ioMessage.data2 = inSize >> 8; // MSB + ioMessage.data1 = inSize & 0xff; // LSB +} + +TEST(MidiMessage, getSysExSize) +{ + // Small message + { + typedef midi::Message<32> Message; + Message message = Message(); + ASSERT_EQ(Message::getSysExMaxSize(), 32); + ASSERT_EQ(message.getSysExMaxSize(), 32); + + const unsigned sizeUnder = 20; + setSysExSize(message, sizeUnder); + ASSERT_EQ(message.getSysExSize(), sizeUnder); + + const unsigned sizeOver = 64; + setSysExSize(message, sizeOver); + ASSERT_EQ(message.getSysExSize(), 32); + } + // Medium message + { + typedef midi::Message<256> Message; + Message message = Message(); + ASSERT_EQ(Message::getSysExMaxSize(), 256); + ASSERT_EQ(message.getSysExMaxSize(), 256); + + const unsigned sizeUnder = 200; + setSysExSize(message, sizeUnder); + ASSERT_EQ(message.getSysExSize(), sizeUnder); + + const unsigned sizeOver = 300; + setSysExSize(message, sizeOver); + ASSERT_EQ(message.getSysExSize(), 256); + } + // Large message + { + typedef midi::Message<1024> Message; + Message message = Message(); + ASSERT_EQ(Message::getSysExMaxSize(), 1024); + ASSERT_EQ(message.getSysExMaxSize(), 1024); + + const unsigned sizeUnder = 1000; + setSysExSize(message, sizeUnder); + ASSERT_EQ(message.getSysExSize(), sizeUnder); + + const unsigned sizeOver = 2000; + setSysExSize(message, sizeOver); + ASSERT_EQ(message.getSysExSize(), 1024); + } +} + +END_UNNAMED_NAMESPACE diff --git a/test/unit-tests/unit-tests_Namespace.h b/test/unit-tests/unit-tests_Namespace.h new file mode 100644 index 0000000..41ac829 --- /dev/null +++ b/test/unit-tests/unit-tests_Namespace.h @@ -0,0 +1,13 @@ +#pragma once + +#define UNIT_TESTS_NAMESPACE unit_tests +#define BEGIN_UNIT_TESTS_NAMESPACE namespace UNIT_TESTS_NAMESPACE { +#define END_UNIT_TESTS_NAMESPACE } +#define BEGIN_UNNAMED_NAMESPACE namespace { +#define END_UNNAMED_NAMESPACE } + +#define USING_NAMESPACE_UNIT_TESTS using namespace UNIT_TESTS_NAMESPACE; + +BEGIN_UNIT_TESTS_NAMESPACE + +END_UNIT_TESTS_NAMESPACE