testErrorLogger.cc
Go to the documentation of this file.
1 #define DEBUG // to test the debu logging
2 
3 #include <utl/ErrorLogger.h>
4 #include <utl/Verbosity.h>
5 
6 //#include <utl/Test.h>
7 #include <tst/Verify.h>
8 #include <cppunit/extensions/HelperMacros.h>
9 
10 #include <string>
11 #include <sstream>
12 
13 using namespace utl;
14 using namespace tst;
15 
16 
26 class testErrorLogger : public CppUnit::TestFixture {
27 
28  CPPUNIT_TEST_SUITE(testErrorLogger);
29 
30  CPPUNIT_TEST(testSeverityString);
31  CPPUNIT_TEST(testStream);
32  CPPUNIT_TEST(testLowLevel);
33  CPPUNIT_TEST(testMacros);
34  CPPUNIT_TEST(testSeverity);
35  CPPUNIT_TEST(testG4Logging);
36  CPPUNIT_TEST(testVerbosity);
37 
38  CPPUNIT_TEST_SUITE_END();
39 
40 public:
41  void
43  {
44  auto& log = ErrorLogger::GetInstance();
45  log.SetMinSeverity(ErrorLogger::eDebug);
46  log.SetVerbosity(utl::Verbosity::eVerbose);
47  log.SetColorOutput(false);
48  }
49 
50  void tearDown() { }
51 
52  void
54  {
55  auto& log = ErrorLogger::GetInstance();
56  CPPUNIT_ASSERT(log.GetSeverityName(ErrorLogger::eDebug) == "[DEBUG]");
57  CPPUNIT_ASSERT(log.GetSeverityName(ErrorLogger::eInfo) == "[INFO]");
58  CPPUNIT_ASSERT(log.GetSeverityName(ErrorLogger::eError) == "[ERROR]");
59  CPPUNIT_ASSERT(log.GetSeverityName(ErrorLogger::eFatal) == "[FATAL]");
60  }
61 
62  void
64  {
65  std::ostringstream a;
67 
68  INFO("Hi"); const auto line = __LINE__;
69  std::ostringstream b;
70  b << "[INFO] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testStream: Hi\n";
71  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
72  }
73 
74  void
76  {
77  std::ostringstream a;
79 
80  a.str("");
81  utl::ErrorLogger::GetInstance().Log(utl::ErrorLogger::eInfo, "LOW", "LOWLEVEL", 0, "Hello Log terse", utl::Verbosity::eFunction, false);
82  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("LOW: Hello Log terse\n")));
83 
84  a.str("");
85  utl::ErrorLogger::GetInstance().Log(utl::ErrorLogger::eInfo, "LOW", "LOWLEVEL", 0, "Hello Log verbose", utl::Verbosity::eVerbose, false);
86  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("[INFO] LOWLEVEL:0: LOW: Hello Log verbose\n")));
87 
88  a.str("");
89  LOG_MESSAGE_(utl::ErrorLogger::eInfo, "Log again"); const auto line = __LINE__;
90  std::ostringstream b;
91  b << "[INFO] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testLowLevel: Log again\n";
92  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
93  }
94 
95  void
97  {
98  std::ostringstream a;
99  std::ostringstream b;
101  int line = 0;
102 
103  a.str("");
104  DEBUGLOG("Debug"); line = __LINE__;
105  b.str("");
106  b << "[DEBUG] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: Debug\n";
107  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
108 
109  a.str("");
110  INFO("Info"); line = __LINE__;
111  b.str("");
112  b << "[INFO] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: Info\n";
113  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
114 
115  a.str("");
116  WARNING("Warning"); line = __LINE__;
117  b.str("");
118  b << "[WARN] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: Warning\n";
119  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
120 
121  a.str("");
122  ERROR("Error"); line = __LINE__;
123  b.str("");
124  b << "[ERROR] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: Error\n";
125  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
126 
127  a.str("");
128  FATAL("Fatal"); line = __LINE__;
129  b.str("");
130  b << "[FATAL] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: Fatal\n";
131  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
132 
133  a.str("");
134  std::ostringstream info;
135  info << "We are in an ostringstream!";
136  INFO(info); line = __LINE__;
137  b.str("");
138  b << "[INFO] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: We are in an ostringstream!\n";
139  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
140 
141  a.str("");
143  INFO("A terse log message");
144  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("A terse log message\n")));
145 
146  a.str("");
148  WARNING("A verbose warning"); line = __LINE__;
149  b.str("");
150  b << "[WARN] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testMacros: A verbose warning\n";
151  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
152 
153  a.str("");
154  WARNING_TERSE("A terse warning with verbose default");
155  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("testMacros: A terse warning with verbose default\n")));
156  }
157 
158  void
160  {
161  std::ostringstream a;
162  auto& log = ErrorLogger::GetInstance();
163  log.SetStream(a);
164  log.SetMinSeverity(ErrorLogger::eError);
165 
166  DEBUGLOG("debug");
167  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("")));
168 
169  INFO("info");
170  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("")));
171 
172  WARNING("warning");
173  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("")));
174 
175  ERROR("error"); const auto line = __LINE__;
176  std::ostringstream b;
177  b << "[ERROR] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testSeverity: error\n";
178  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
179 
180  FATAL("fatal"); const auto line2 = __LINE__;
181  b << "[FATAL] Utilities/ErrorLogger/testErrorLogger.cc:" << line2 << ": testSeverity: fatal\n";
182  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
183  }
184 
185  void
187  {
188  std::ostringstream a;
190 
191  LOGG4COUT("Geant4 output");
192  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("[INFO] G4COut: Geant4 output\n")));
193 
194  a.str("");
195  LOGG4CERR("Geant4 error");
196  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("[ERROR] G4CErr: Geant4 error\n")));
197  }
198 
199  void
201  {
202  std::ostringstream a;
204 
206  INFO("A log message"); const auto line = __LINE__;
207  std::ostringstream b;
208  b << "[INFO] Utilities/ErrorLogger/testErrorLogger.cc:" << line << ": testVerbosity: A log message\n";
209  CPPUNIT_ASSERT(Verify<Equal>(a.str(), b.str()));
210 
211  a.str("");
213  INFO("A log message");
214  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("[INFO] testVerbosity: A log message\n")));
215 
216  a.str("");
218  INFO("A log message");
219  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("testVerbosity: A log message\n")));
220 
221  a.str("");
223  INFO("A log message");
224  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("A log message\n")));
225 
226  a.str("");
228  INFO("A log message");
229  CPPUNIT_ASSERT(Verify<Equal>(a.str(), std::string("")));
230  }
231 
232 };
233 
234 
void Log(const ESeverityLevel severity, const std::string &functionName, const std::string &fileName, const int lineNumber, const std::string &message, EVerbosity verbosity=Verbosity::eDefault, bool stripBaseDir=true) const
General interface for logging a message.
Definition: ErrorLogger.cc:89
Include filename and line number.
Definition: Verbosity.h:16
General (informational) message.
Definition: ErrorLogger.h:43
void SetVerbosity(const EVerbosity verbosity)
Set the verbosity level.
Definition: ErrorLogger.h:88
#define LOGG4COUT(message)
Definition: ErrorLogger.h:169
Traditional name.
Definition: Verbosity.h:17
#define INFO(message)
Macro for logging informational messages.
Definition: ErrorLogger.h:161
Debugging message.
Definition: ErrorLogger.h:41
void SetStream(std::ostream &stream)
Definition: ErrorLogger.h:85
#define FATAL(message)
Macro for logging fatal messages.
Definition: ErrorLogger.h:167
CPPUNIT_TEST_SUITE_REGISTRATION(testAiresShowerFile)
Include function or facility name.
Definition: Verbosity.h:14
terse output
Definition: Verbosity.h:13
#define DEBUGLOG(message)
Macro for logging debugging messages.
Definition: ErrorLogger.h:157
#define LOG_MESSAGE_(severity, message)
Standard message logging macro.
Definition: ErrorLogger.h:136
#define LOGG4CERR(message)
Definition: ErrorLogger.h:171
#define WARNING(message)
Macro for logging warning messages.
Definition: ErrorLogger.h:163
Report severity level of message.
Definition: Verbosity.h:15
#define WARNING_TERSE(message)
Macro for logging warning messages.
Definition: ErrorLogger.h:177
static ErrorLogger & GetInstance()
Definition: Singleton.h:128
#define ERROR(message)
Macro for logging error messages.
Definition: ErrorLogger.h:165
Error message.
Definition: ErrorLogger.h:45
Fatal error message.
Definition: ErrorLogger.h:46

, generated on Tue Sep 26 2023.