spdlog
Loading...
Searching...
No Matches
test_registry.cpp
Go to the documentation of this file.
1#include "includes.h"
2
3static const char *const tested_logger_name = "null_logger";
4static const char *const tested_logger_name2 = "null_logger2";
5
6#ifndef SPDLOG_NO_EXCEPTIONS
7TEST_CASE("register_drop", "[registry]")
8{
10 spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name);
12 // Throw if registering existing name
13 REQUIRE_THROWS_AS(spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name), spdlog::spdlog_ex);
14}
15
16TEST_CASE("explicit register", "[registry]")
17{
22 // Throw if registering existing name
23 REQUIRE_THROWS_AS(spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name), spdlog::spdlog_ex);
24}
25#endif
26
27TEST_CASE("apply_all", "[registry]")
28{
34
35 int counter = 0;
36 spdlog::apply_all([&counter](std::shared_ptr<spdlog::logger>) { counter++; });
37 REQUIRE(counter == 2);
38
39 counter = 0;
42 REQUIRE(l->name() == tested_logger_name);
43 counter++;
44 });
45 REQUIRE(counter == 1);
46}
47
48TEST_CASE("drop", "[registry]")
49{
51 spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name);
54}
55
63
64TEST_CASE("drop_all", "[registry]")
65{
67 spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name);
68 spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name2);
73}
74
75TEST_CASE("drop non existing", "[registry]")
76{
78 spdlog::create<spdlog::sinks::null_sink_mt>(tested_logger_name);
79 spdlog::drop("some_name");
80 REQUIRE_FALSE(spdlog::get("some_name"));
83}
84
92
93TEST_CASE("set_default_logger(nullptr)", "[registry]")
94{
97}
98
99TEST_CASE("disable automatic registration", "[registry]")
100{
101 // set some global parameters
103 spdlog::set_level(log_level);
104 // but disable automatic registration
106 auto logger1 = spdlog::create<spdlog::sinks::daily_file_sink_st>(tested_logger_name, SPDLOG_FILENAME_T("filename"), 11, 59);
107 auto logger2 = spdlog::create_async<spdlog::sinks::stdout_color_sink_mt>(tested_logger_name2);
108 // loggers should not be part of the registry
111 // but make sure they are still initialized according to global defaults
112 REQUIRE(logger1->level() == log_level);
113 REQUIRE(logger2->level() == log_level);
116}
#define TEST_CASE(...)
Definition catch.hpp:15119
#define REQUIRE(...)
Definition catch.hpp:15083
#define REQUIRE_FALSE(...)
Definition catch.hpp:15084
#define REQUIRE_THROWS_AS(expr, exceptionType)
Definition catch.hpp:15087
#define SPDLOG_FILENAME_T(s)
Definition common.h:107
T make_shared(T... args)
SPDLOG_INLINE void register_logger(std::shared_ptr< logger > logger)
Definition spdlog-inl.h:80
std::shared_ptr< logger > null_logger_st(const std::string &logger_name)
Definition null_sink.h:37
SPDLOG_INLINE std::shared_ptr< logger > get(const std::string &name)
Definition spdlog-inl.h:20
SPDLOG_INLINE void set_level(level::level_enum log_level)
Definition spdlog-inl.h:60
SPDLOG_INLINE void set_automatic_registration(bool automatic_registration)
Definition spdlog-inl.h:105
SPDLOG_INLINE std::shared_ptr< spdlog::logger > default_logger()
Definition spdlog-inl.h:110
SPDLOG_INLINE void drop(const std::string &name)
Definition spdlog-inl.h:90
SPDLOG_INLINE void apply_all(const std::function< void(std::shared_ptr< logger >)> &fun)
Definition spdlog-inl.h:85
SPDLOG_INLINE void set_default_logger(std::shared_ptr< spdlog::logger > default_logger)
Definition spdlog-inl.h:120
SPDLOG_INLINE void drop_all()
Definition spdlog-inl.h:95
static const char *const tested_logger_name2
static const char *const tested_logger_name