diff options
author | Neil MacIntosh <neilmac@microsoft.com> | 2017-07-13 23:53:56 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-13 23:53:56 +0300 |
commit | b2ee48433448556a7be63074f8aaf45ab47a95c1 (patch) | |
tree | df94d91f17334f50c33dfea4763f3b4b282f5f85 /tests/algorithm_tests.cpp | |
parent | 1f87ef73f1477e8adafa8b10ccee042897612a20 (diff) |
Move from unittest-cpp to catch for unit testing. (#533)
Many thanks to @rianquinn. This should fix #495, #494 and #529.
Diffstat (limited to 'tests/algorithm_tests.cpp')
-rw-r--r-- | tests/algorithm_tests.cpp | 258 |
1 files changed, 126 insertions, 132 deletions
diff --git a/tests/algorithm_tests.cpp b/tests/algorithm_tests.cpp index 7b5f429..045fd3e 100644 --- a/tests/algorithm_tests.cpp +++ b/tests/algorithm_tests.cpp @@ -14,7 +14,7 @@ // /////////////////////////////////////////////////////////////////////////////// -#include <UnitTest++/UnitTest++.h> +#include <catch/catch.hpp> #include <gsl/gsl_algorithm> @@ -23,188 +23,182 @@ using namespace std; using namespace gsl; -SUITE(copy_tests) +TEST_CASE("same_type") { - - TEST(same_type) + // dynamic source and destination span { - // dynamic source and destination span - { - std::array<int, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + std::array<int, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<int> src_span(src); - span<int> dst_span(dst); + span<int> src_span(src); + span<int> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } + } - // static source and dynamic destination span - { - std::array<int, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + // static source and dynamic destination span + { + std::array<int, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<int, 5> src_span(src); - span<int> dst_span(dst); + span<int, 5> src_span(src); + span<int> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } + } - // dynamic source and static destination span - { - std::array<int, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + // dynamic source and static destination span + { + std::array<int, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<int> src_span(src); - span<int, 10> dst_span(dst); + span<int> src_span(src); + span<int, 10> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } + } - // static source and destination span - { - std::array<int, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + // static source and destination span + { + std::array<int, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<int, 5> src_span(src); - span<int, 10> dst_span(dst); + span<int, 5> src_span(src); + span<int, 10> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } } +} - TEST(compatible_type) +TEST_CASE("compatible_type") +{ + // dynamic source and destination span { - // dynamic source and destination span - { - std::array<short, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + std::array<short, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<short> src_span(src); - span<int> dst_span(dst); + span<short> src_span(src); + span<int> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } + } - // static source and dynamic destination span - { - std::array<short, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + // static source and dynamic destination span + { + std::array<short, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<short, 5> src_span(src); - span<int> dst_span(dst); + span<short, 5> src_span(src); + span<int> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } + } - // dynamic source and static destination span - { - std::array<short, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + // dynamic source and static destination span + { + std::array<short, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<short> src_span(src); - span<int, 10> dst_span(dst); + span<short> src_span(src); + span<int, 10> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } + } - // static source and destination span - { - std::array<short, 5> src{1, 2, 3, 4, 5}; - std::array<int, 10> dst{}; + // static source and destination span + { + std::array<short, 5> src{1, 2, 3, 4, 5}; + std::array<int, 10> dst{}; - span<short, 5> src_span(src); - span<int, 10> dst_span(dst); + span<short, 5> src_span(src); + span<int, 10> dst_span(dst); - copy(src_span, dst_span); - copy(src_span, dst_span.subspan(src_span.size())); + copy(src_span, dst_span); + copy(src_span, dst_span.subspan(src_span.size())); - for (std::size_t i = 0; i < src.size(); ++i) { - CHECK(dst[i] == src[i]); - CHECK(dst[i + src.size()] == src[i]); - } + for (std::size_t i = 0; i < src.size(); ++i) { + CHECK(dst[i] == src[i]); + CHECK(dst[i + src.size()] == src[i]); } } +} #ifdef CONFIRM_COMPILATION_ERRORS - TEST(incompatible_type) - { - std::array<int, 4> src{1, 2, 3, 4}; - std::array<int*, 12> dst{}; - - span<int> src_span_dyn(src); - span<int, 4> src_span_static(src); - span<int*> dst_span_dyn(dst); - span<int*, 4> dst_span_static(dst); - - // every line should produce a compilation error - copy(src_span_dyn, dst_span_dyn); - copy(src_span_dyn, dst_span_static); - copy(src_span_static, dst_span_dyn); - copy(src_span_static, dst_span_static); - } +TEST_CASE("incompatible_type") +{ + std::array<int, 4> src{1, 2, 3, 4}; + std::array<int*, 12> dst{}; + + span<int> src_span_dyn(src); + span<int, 4> src_span_static(src); + span<int*> dst_span_dyn(dst); + span<int*, 4> dst_span_static(dst); + + // every line should produce a compilation error + copy(src_span_dyn, dst_span_dyn); + copy(src_span_dyn, dst_span_static); + copy(src_span_static, dst_span_dyn); + copy(src_span_static, dst_span_static); +} #endif - TEST(small_destination_span) - { - std::array<int, 12> src{1, 2, 3, 4}; - std::array<int, 4> dst{}; +TEST_CASE("small_destination_span") +{ + std::array<int, 12> src{1, 2, 3, 4}; + std::array<int, 4> dst{}; - span<int> src_span_dyn(src); - span<int, 12> src_span_static(src); - span<int> dst_span_dyn(dst); - span<int, 4> dst_span_static(dst); + span<int> src_span_dyn(src); + span<int, 12> src_span_static(src); + span<int> dst_span_dyn(dst); + span<int, 4> dst_span_static(dst); - CHECK_THROW(copy(src_span_dyn, dst_span_dyn), fail_fast); - CHECK_THROW(copy(src_span_dyn, dst_span_static), fail_fast); - CHECK_THROW(copy(src_span_static, dst_span_dyn), fail_fast); + CHECK_THROWS_AS(copy(src_span_dyn, dst_span_dyn), fail_fast); + CHECK_THROWS_AS(copy(src_span_dyn, dst_span_static), fail_fast); + CHECK_THROWS_AS(copy(src_span_static, dst_span_dyn), fail_fast); #ifdef CONFIRM_COMPILATION_ERRORS - copy(src_span_static, dst_span_static); + copy(src_span_static, dst_span_static); #endif - } } - -int main() { return UnitTest::RunAllTests(); } |