diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f776b803d439452058cf5e76ccddbc2d7512f918..13833beb32c06257a9ba425d760d5c5eeb5525b2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,6 +50,7 @@ add_executable (unit_tests test_BuiltinFunctionEmbedderTable.cpp test_BuiltinFunctionProcessor.cpp test_CastArray.cpp + test_ConsoleManager.cpp test_CG.cpp test_ContinueProcessor.cpp test_ConcatExpressionProcessor.cpp diff --git a/tests/test_ConsoleManager.cpp b/tests/test_ConsoleManager.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2661852186f6d4bafd89b2f58d5f59b9b3fd0927 --- /dev/null +++ b/tests/test_ConsoleManager.cpp @@ -0,0 +1,37 @@ +#ifndef TEST_CONSOLE_MANAGER_HPP +#define TEST_CONSOLE_MANAGER_HPP + +#include <catch2/catch.hpp> + +#include <utils/ConsoleManager.hpp> + +#include <rang.hpp> + +// clazy:excludeall=non-pod-global-static + +TEST_CASE("ConsoleManager", "[utils]") +{ + SECTION("is terminal") + { + const bool is_terminal = rang::rang_implementation::isTerminal(std::cout.rdbuf()); + + REQUIRE(is_terminal == ConsoleManager::isTerminal(std::cout)); + } + + SECTION("control settings") + { + const rang::control saved_control = rang::rang_implementation::controlMode(); + + ConsoleManager::init(true); + + REQUIRE(rang::rang_implementation::controlMode() == rang::control::Force); + + ConsoleManager::init(false); + + REQUIRE(rang::rang_implementation::controlMode() == rang::control::Off); + + rang::setControlMode(saved_control); + } +} + +#endif // TEST_CONSOLE_MANAGER_HPP