diff options
author | Siddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com> | 2025-03-02 20:35:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-02 20:35:40 -0500 |
commit | e3369aad54bce775e2951e71618eb2cbb17972f9 (patch) | |
tree | b9815d43d79b631939cd531512b470829ba16436 /tests/logger.cc | |
parent | ac072708e869970f33f3523dda3051a39a9ba611 (diff) | |
parent | a9af4fd3243e470ff33d50968f998bf78c152717 (diff) |
Merge pull request #8 from bdunahu/bdunahu
Added logger class, tests, arg parsing and cleanup
Diffstat (limited to 'tests/logger.cc')
-rw-r--r-- | tests/logger.cc | 65 |
1 files changed, 65 insertions, 0 deletions
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 <catch2/catch_test_macros.hpp> +#include <iostream> +#include <regex> +#include <sstream> + +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); +} |