diff --git a/cmake/compiler/msvc.cmake b/cmake/compiler/msvc.cmake index 4e17756..7b8a3f6 100644 --- a/cmake/compiler/msvc.cmake +++ b/cmake/compiler/msvc.cmake @@ -1,9 +1,3 @@ -if (${MSVC_VERSION} LESS 1900) - message(FATAL_ERROR "You are using an unsupported version of Visual Studio " - "which doesn't support all required C++11 features. " - "(Visual Studio 2015 (version >= 1900) is required!)") -endif() - if(CMAKE_SIZEOF_VOID_P MATCHES 8) set(PLATFORM 64) else() @@ -14,7 +8,7 @@ if (PLATFORM EQUAL 64) add_definitions("-D_WIN64") endif() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP /bigobj") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP1 /bigobj") if (TESTS_NO_EXCEPTIONS) add_definitions(-D_HAS_EXCEPTIONS=0) diff --git a/test/unit-test/test-continuable-base-chaining.cpp b/test/unit-test/test-continuable-base-chaining.cpp index c5714c9..1a2aec7 100644 --- a/test/unit-test/test-continuable-base-chaining.cpp +++ b/test/unit-test/test-continuable-base-chaining.cpp @@ -30,41 +30,36 @@ TYPED_TEST(single_dimension_tests, are_chainable) { EXPECT_ASYNC_RESULT(this->supply().then([] { return; // void })); - - // Type chain - { - auto chain = this->supply().then([] { return tag1{}; }); - ASSERT_ASYNC_TYPES(std::move(chain), tag1); - } - - // Pair chain - { - auto chain = this->supply().then([] { - // ... - return std::make_pair(tag1{}, tag2{}); - }); - ASSERT_ASYNC_TYPES(std::move(chain), tag1, tag2); - } - - // Tuple chain - { - auto chain = this->supply().then([] { - // ... - return std::make_tuple(tag1{}, tag2{}, tag3{}); - }); - ASSERT_ASYNC_TYPES(std::move(chain), tag1, tag2, tag3); - } - - // Erasing chain - { - auto chain = this->supply().then(this->supply(tag1{})); - ASSERT_ASYNC_TYPES(std::move(chain), tag1); - } - - // Continuing chain - { - auto chain = this->supply().then([&] { return this->supply(tag1{}); }); - - ASSERT_ASYNC_TYPES(std::move(chain), tag1); - } +} + +TYPED_TEST(single_dimension_tests, are_type_chainable) { + auto chain = this->supply().then([] { return tag1{}; }); + ASSERT_ASYNC_TYPES(std::move(chain), tag1); +} + +TYPED_TEST(single_dimension_tests, are_pair_chainable) { + auto chain = this->supply().then([] { + // ... + return std::make_pair(tag1{}, tag2{}); + }); + ASSERT_ASYNC_TYPES(std::move(chain), tag1, tag2); +} + +TYPED_TEST(single_dimension_tests, are_tuple_chainable) { + auto chain = this->supply().then([] { + // ... + return std::make_tuple(tag1{}, tag2{}, tag3{}); + }); + ASSERT_ASYNC_TYPES(std::move(chain), tag1, tag2, tag3); +} + +TYPED_TEST(single_dimension_tests, are_erasing_chainable) { + auto chain = this->supply().then(this->supply(tag1{})); + ASSERT_ASYNC_TYPES(std::move(chain), tag1); +} + +TYPED_TEST(single_dimension_tests, are_continuing_chainable) { + auto chain = this->supply().then([&] { return this->supply(tag1{}); }); + + ASSERT_ASYNC_TYPES(std::move(chain), tag1); }