2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <boost/test/unit_test.hpp>
22 #include <boost/date_time/posix_time/posix_time.hpp>
23 #include <boost/algorithm/string/trim.hpp>
25 // Dirty hack used do get access for private class interiors
26 // for test porpouses.
27 #define private public
28 #define protected public
31 #include "AbstractLogger.h"
33 #define COLOR "\033[41m\033[37m"
35 BOOST_AUTO_TEST_SUITE(logger)
37 struct StubAbstractLogger: tizen_browser::logger::AbstractLogger {
38 StubAbstractLogger() :
41 ~StubAbstractLogger() {
47 void log(const std::string &timeStamp, const std::string &tag,
48 const std::string &msg, bool errorFlag = false) {
50 std::string str = timeStamp + tag + msg;
54 std::string getLog() {
55 std::string ret = ss.str();
64 // simple tests for inherited interface
65 BOOST_AUTO_TEST_CASE(logger_abstract_logger) {
67 ss << boost::unit_test::framework::current_test_case().p_name;
69 StubAbstractLogger sl;
72 BOOST_CHECK(sl.getLog().empty());
74 sl.log("a", "b", "c");
75 BOOST_CHECK_EQUAL(sl.getLog().compare("abc\n"), 0);
78 class StubLogger: public tizen_browser::logger::Logger {
80 virtual ~StubLogger() {
82 static StubLogger& getInstance() {
83 static StubLogger instance;
91 BOOST_AUTO_TEST_CASE(logger_init) {
93 ss << boost::unit_test::framework::current_test_case().p_name;
95 // checks for support functions
96 StubLogger::Logger::getInstance().setProjectName("bla");
97 BOOST_CHECK_EQUAL(StubLogger::Logger::getInstance().m_projectName.compare("bla"), 0);
98 BOOST_CHECK_EQUAL(StubLogger::Logger::getInstance().getProjectName(), "bla");
100 // checks for registering logger functionality
101 StubAbstractLogger *l1 = new StubAbstractLogger;
102 StubAbstractLogger *l2 = new StubAbstractLogger;
104 BOOST_CHECK_EQUAL(l1->initialized, false);
105 BOOST_CHECK_EQUAL(l2->initialized, false);
107 StubLogger::getInstance().registerLogger(l1);
108 StubLogger::getInstance().registerLogger(l2);
109 StubLogger::getInstance().init();
111 BOOST_CHECK_EQUAL(l1->initialized, true);
112 BOOST_CHECK_EQUAL(l2->initialized, true);
114 // checks for logging process
115 std::string msg("Bla");
116 StubLogger::getInstance().log(msg);
118 std::string checker = l1->getLog();
119 checker.erase(checker.begin(), std::find(checker.begin(), checker.end(), ']') + 1);
120 boost::algorithm::trim(checker);
121 BOOST_CHECK_EQUAL(checker, msg);
123 checker = l2->getLog();
124 checker.erase(checker.begin(), std::find(checker.begin(), checker.end(), ']') + 1);
125 boost::algorithm::trim(checker);
126 BOOST_CHECK_EQUAL(checker, msg);
129 ///\todo p.chmielewski
131 BOOST_AUTO_TEST_CASE(logger_levels_getting) {
132 using tizen_browser::logger::Logger;
133 using tizen_browser::logger::LoggerLevel;
135 std::string infoTag = Logger::getLevelTag(LoggerLevel::INFO);
136 BOOST_CHECK_EQUAL(infoTag, "Info");
138 std::string warningTag = Logger::getLevelTag(LoggerLevel::WARN);
139 BOOST_CHECK_EQUAL(warningTag, "Warning");
141 std::string errorTag = Logger::getLevelTag(LoggerLevel::ERROR);
142 BOOST_CHECK_EQUAL(errorTag, "Error");
144 std::string fatalTag = Logger::getLevelTag(LoggerLevel::FATAL);
145 BOOST_CHECK_EQUAL(fatalTag, "Fatal");
147 std::string debugTag = Logger::getLevelTag(LoggerLevel::DEBUG);
148 BOOST_CHECK_EQUAL(debugTag, "Debug");
150 std::string noneTag = Logger::getLevelTag(LoggerLevel::NONE);
151 BOOST_CHECK_EQUAL(noneTag, "");
154 BOOST_AUTO_TEST_CASE(logger_levels_parsing) {
155 using tizen_browser::logger::Logger;
156 using tizen_browser::logger::LoggerLevel;
158 LoggerLevel loggerLevel;
160 loggerLevel = Logger::parseLoggerLevel("INFO");
161 BOOST_CHECK_EQUAL(loggerLevel, LoggerLevel::INFO);
163 loggerLevel = Logger::parseLoggerLevel("WARN");
164 BOOST_CHECK_EQUAL(loggerLevel, LoggerLevel::WARN);
166 loggerLevel = Logger::parseLoggerLevel("ERROR");
167 BOOST_CHECK_EQUAL(loggerLevel, LoggerLevel::ERROR);
169 loggerLevel = Logger::parseLoggerLevel("FATAL");
170 BOOST_CHECK_EQUAL(loggerLevel, LoggerLevel::FATAL);
172 loggerLevel = Logger::parseLoggerLevel("DEBUG");
173 BOOST_CHECK_EQUAL(loggerLevel, LoggerLevel::DEBUG);
175 loggerLevel = Logger::parseLoggerLevel("NONE");
176 BOOST_CHECK_EQUAL(loggerLevel, LoggerLevel::NONE);
179 BOOST_AUTO_TEST_SUITE_END()