From a9af4fd3243e470ff33d50968f998bf78c152717 Mon Sep 17 00:00:00 2001 From: bd Date: Sun, 2 Mar 2025 13:37:53 -0500 Subject: Added logger class, tests, arg parsing and cleanup --- tests/logger.cc | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/tests.cc | 10 --------- 2 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 tests/logger.cc (limited to 'tests') diff --git a/tests/logger.cc b/tests/logger.cc new file mode 100644 index 0000000..18e4fab --- /dev/null +++ b/tests/logger.cc @@ -0,0 +1,65 @@ +#include "logger.h" +#include +#include +#include +#include + +TEST_CASE("Logger logs higher log level") +{ + std::streambuf *coutBuffer = std::cout.rdbuf(); + std::ostringstream oss; + std::cout.rdbuf(oss.rdbuf()); + + Logger logger(""); + logger.setLevel(INFO); + + logger.log(ERROR, "foo bar baz qux"); + + std::cout.rdbuf(coutBuffer); + + std::string actual = oss.str(); + std::regex expected( + "\\[\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\] ERROR: " + "foo bar baz qux\\n"); + + REQUIRE(std::regex_match(actual, expected)); +} + +TEST_CASE("Logger logs equal log level") +{ + std::streambuf *coutBuffer = std::cout.rdbuf(); + std::ostringstream oss; + std::cout.rdbuf(oss.rdbuf()); + + Logger logger(""); + logger.setLevel(INFO); + + logger.log(INFO, "foo bar baz qux"); + + std::cout.rdbuf(coutBuffer); + + std::string actual = oss.str(); + std::regex expected("\\[\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\] INFO: " + "foo bar baz qux\\n"); + + REQUIRE(std::regex_match(actual, expected)); +} + +TEST_CASE("Logger ignores lower log level") +{ + std::streambuf *coutBuffer = std::cout.rdbuf(); + std::ostringstream oss; + std::cout.rdbuf(oss.rdbuf()); + + Logger logger(""); + logger.setLevel(INFO); + + logger.log(DEBUG, "foo bar baz qux"); + + std::cout.rdbuf(coutBuffer); + + std::string actual = oss.str(); + std::string expected(""); + + REQUIRE(actual == expected); +} diff --git a/tests/tests.cc b/tests/tests.cc index 8a23c4d..7817006 100644 --- a/tests/tests.cc +++ b/tests/tests.cc @@ -1,11 +1 @@ #define CATCH_CONFIG_MAIN -#include "fact.h" -#include - -TEST_CASE( "factorials are computed", "[factorial]") -{ - REQUIRE( factorial(1) == 1 ); - REQUIRE( factorial(2) == 2 ); - REQUIRE( factorial(3) == 6 ); - REQUIRE( factorial(10) == 3628800 ); -} -- cgit v1.2.3