diff --git a/Tests/CMakeLib/CMakeLists.txt b/Tests/CMakeLib/CMakeLists.txt index 008a7d94fc..5b189e7e34 100644 --- a/Tests/CMakeLib/CMakeLists.txt +++ b/Tests/CMakeLib/CMakeLists.txt @@ -9,6 +9,7 @@ include_directories( ) set(CMakeLib_TESTS + testAssert.cxx testArgumentParser.cxx testCTestBinPacker.cxx testCTestResourceAllocator.cxx diff --git a/Tests/CMakeLib/testArgumentParser.cxx b/Tests/CMakeLib/testArgumentParser.cxx index 880f3ee4e7..d4e2bd2b5f 100644 --- a/Tests/CMakeLib/testArgumentParser.cxx +++ b/Tests/CMakeLib/testArgumentParser.cxx @@ -1,9 +1,6 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ -#include -#include -#include #include #include #include diff --git a/Tests/CMakeLib/testAssert.cxx b/Tests/CMakeLib/testAssert.cxx new file mode 100644 index 0000000000..3d2e839f1c --- /dev/null +++ b/Tests/CMakeLib/testAssert.cxx @@ -0,0 +1,56 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ + +#include + +#include "testCommon.h" + +namespace { + +class WrapFailureInBlockFixture +{ +public: + WrapFailureInBlockFixture() + { + std::cout << "---[ BEGIN Expected Failure Output]---\n"; + } + ~WrapFailureInBlockFixture() + { + std::cout << "---[ END Expected Failure Output]---\n"; + } +}; + +bool testASSERT_EQUAL() +{ + ASSERT_EQUAL(7 == 7, 42 == 42); + { + std::string actual = "Hello Africa!"; + ASSERT_EQUAL(actual, "Hello Africa!"); + } + return true; +} + +bool testASSERT_EQUALFail() +{ + WrapFailureInBlockFixture fx; + static_cast(fx); + + auto fail_int = [](const int unexpected) -> bool { + ASSERT_EQUAL(unexpected, 42); + return true; + }; + + auto fail_string = [](const std::string& unexpected) -> bool { + ASSERT_EQUAL(unexpected, "Hello Africa!"); + return true; + }; + + return !(fail_int(7) || fail_string("Habari Afrika!")); +} + +} // anonymous namespace + +int testAssert(int /*unused*/, char* /*unused*/[]) +{ + return runTests({ testASSERT_EQUAL, testASSERT_EQUALFail }); +} diff --git a/Tests/CMakeLib/testCMFilesystemPath.cxx b/Tests/CMakeLib/testCMFilesystemPath.cxx index 1da592521c..66d2c18729 100644 --- a/Tests/CMakeLib/testCMFilesystemPath.cxx +++ b/Tests/CMakeLib/testCMFilesystemPath.cxx @@ -2,7 +2,6 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include -#include #include #include #include diff --git a/Tests/CMakeLib/testCMakePath.cxx b/Tests/CMakeLib/testCMakePath.cxx index 9b11286e89..d2f6661a47 100644 --- a/Tests/CMakeLib/testCMakePath.cxx +++ b/Tests/CMakeLib/testCMakePath.cxx @@ -3,7 +3,6 @@ #include "cmConfigure.h" // IWYU pragma: keep -#include #include #include diff --git a/Tests/CMakeLib/testCommon.h b/Tests/CMakeLib/testCommon.h index c1d2b3ce5f..de4a6895f4 100644 --- a/Tests/CMakeLib/testCommon.h +++ b/Tests/CMakeLib/testCommon.h @@ -2,9 +2,9 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once -#include -#include -#include +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export #define ASSERT_TRUE(x) \ do { \ @@ -14,6 +14,17 @@ } \ } while (false) +#define ASSERT_EQUAL(actual, expected) \ + do { \ + if (!((actual) == (expected))) { \ + std::cout << "ASSERT_EQUAL(" #actual ", " #expected ") failed on line " \ + << __LINE__ << '\n'; \ + std::cout << " Actual: '" << (actual) << "'\n"; \ + std::cout << "Expected: '" << (expected) << "'\n"; \ + return false; \ + } \ + } while (false) + #define BOOL_STRING(b) ((b) ? "TRUE" : "FALSE") namespace { diff --git a/Tests/CMakeLib/testDebuggerAdapter.cxx b/Tests/CMakeLib/testDebuggerAdapter.cxx index d585250d10..a055cb7c6e 100644 --- a/Tests/CMakeLib/testDebuggerAdapter.cxx +++ b/Tests/CMakeLib/testDebuggerAdapter.cxx @@ -3,7 +3,6 @@ #include #include -#include #include #include #include diff --git a/Tests/CMakeLib/testDebuggerAdapterPipe.cxx b/Tests/CMakeLib/testDebuggerAdapterPipe.cxx index 5b41be9eae..364708855b 100644 --- a/Tests/CMakeLib/testDebuggerAdapterPipe.cxx +++ b/Tests/CMakeLib/testDebuggerAdapterPipe.cxx @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include diff --git a/Tests/CMakeLib/testDebuggerVariables.cxx b/Tests/CMakeLib/testDebuggerVariables.cxx index 1193778b46..ca8bf39e1e 100644 --- a/Tests/CMakeLib/testDebuggerVariables.cxx +++ b/Tests/CMakeLib/testDebuggerVariables.cxx @@ -2,7 +2,6 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include -#include #include #include #include diff --git a/Tests/CMakeLib/testJSONHelpers.cxx b/Tests/CMakeLib/testJSONHelpers.cxx index 05404fa15f..8dbfc5ec78 100644 --- a/Tests/CMakeLib/testJSONHelpers.cxx +++ b/Tests/CMakeLib/testJSONHelpers.cxx @@ -1,4 +1,3 @@ -#include #include #include #include diff --git a/Tests/CMakeLib/testList.cxx b/Tests/CMakeLib/testList.cxx index 4bff2174af..2864c9142b 100644 --- a/Tests/CMakeLib/testList.cxx +++ b/Tests/CMakeLib/testList.cxx @@ -1,7 +1,6 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ -#include #include #include #include diff --git a/Tests/CMakeLib/testOptional.cxx b/Tests/CMakeLib/testOptional.cxx index eba2dd564a..0276ed30ff 100644 --- a/Tests/CMakeLib/testOptional.cxx +++ b/Tests/CMakeLib/testOptional.cxx @@ -1,4 +1,3 @@ -#include #include #include diff --git a/Tests/CMakeLib/testString.cxx b/Tests/CMakeLib/testString.cxx index a6489ab488..b6723f5644 100644 --- a/Tests/CMakeLib/testString.cxx +++ b/Tests/CMakeLib/testString.cxx @@ -2,7 +2,6 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include -#include #include #include #include