source: molecuilder/src/unittests/logunittest.cpp@ 41c00d

Last change on this file since 41c00d was 12f57b, checked in by Frederik Heber <heber@…>, 16 years ago

Log() and eLog() are prepended by a DoLog()/DoeLog() construct.

  • Most of the run time (95%) is spent on verbosity that it is discarded anyway due to a low verbosity setting. However, the operator << is evaluated from the right-hand side, hence the whole message is constructed and then thrown away.
  • DoLog() and DoeLog() are new functions that check the verbosity beforehand and are used as follows: DoLog(2) && (Log() << verbose(2) << "message" << endl);

Signed-off-by: Frederik Heber <heber@…>

  • Property mode set to 100644
File size: 1.9 KB
Line 
1/*
2 * logunittest.cpp
3 */
4
5
6using namespace std;
7
8#include <cppunit/CompilerOutputter.h>
9#include <cppunit/extensions/TestFactoryRegistry.h>
10#include <cppunit/ui/text/TestRunner.h>
11
12#include "logunittest.hpp"
13#include "log.hpp"
14#include "defs.hpp"
15#include "verbose.hpp"
16
17/********************************************** Test classes **************************************/
18
19// Registers the fixture into the 'registry'
20CPPUNIT_TEST_SUITE_REGISTRATION( LogTest );
21
22
23void LogTest::setUp()
24{
25};
26
27void LogTest::tearDown()
28{
29};
30
31/**
32 * UnitTest for log()
33 */
34void LogTest::logTest()
35{
36 logger::getInstance()->setVerbosity(2);
37 Log() << Verbose(0) << "Verbosity level is set to 2." << endl;
38 Log() << Verbose(0) << "Test level 0" << endl;
39 Log() << Verbose(1) << "Test level 1" << endl;
40 Log() << Verbose(2) << "Test level 2" << endl;
41 Log() << Verbose(3) << "Test level 3" << endl;
42 Log() << Verbose(4) << "Test level 4" << endl;
43
44 Log() << Verbose(0) << "Output a log message." << endl;
45 DoeLog(0) && (eLog()<< Verbose(0) << "Output an error message." << endl);
46 setVerbosity(3);
47 Log() << Verbose(4) << "This should not be printed." << endl;
48 DoeLog(4) && (eLog()<< Verbose(4) << "This should not be printed." << endl);
49};
50
51
52/********************************************** Main routine **************************************/
53
54int main(int argc, char **argv)
55{
56 // Get the top level suite from the registry
57 CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
58
59 // Adds the test to the list of test to run
60 CppUnit::TextUi::TestRunner runner;
61 runner.addTest( suite );
62
63 // Change the default outputter to a compiler error format outputter
64 runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
65 std::cerr ) );
66 // Run the tests.
67 bool wasSucessful = runner.run();
68
69 // Return error code 1 if the one of test failed.
70 return wasSucessful ? 0 : 1;
71};
Note: See TracBrowser for help on using the repository browser.