Line data Source code
1 : /*
2 : * Copyright (c) 2006-2019 Made to Order Software Corp. All Rights Reserved
3 : *
4 : * https://snapwebsites.org/project/snaplogger
5 : * contact@m2osw.com
6 : *
7 : * This program is free software; you can redistribute it and/or modify
8 : * it under the terms of the GNU General Public License as published by
9 : * the Free Software Foundation; either version 2 of the License, or
10 : * (at your option) any later version.
11 : *
12 : * This program is distributed in the hope that it will be useful,
13 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : * GNU General Public License for more details.
16 : *
17 : * You should have received a copy of the GNU General Public License along
18 : * with this program; if not, write to the Free Software Foundation, Inc.,
19 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 : */
21 :
22 : // self
23 : //
24 : #include "main.h"
25 :
26 :
27 : // snaplogger lib
28 : //
29 : #include <snaplogger/buffer_appender.h>
30 : #include <snaplogger/exception.h>
31 : #include <snaplogger/format.h>
32 : #include <snaplogger/logger.h>
33 : #include <snaplogger/map_diagnostic.h>
34 : #include <snaplogger/message.h>
35 : #include <snaplogger/severity.h>
36 : #include <snaplogger/version.h>
37 :
38 :
39 : // C lib
40 : //
41 : #include <unistd.h>
42 : #include <netdb.h>
43 : #include <sys/param.h>
44 :
45 :
46 :
47 :
48 :
49 4 : CATCH_TEST_CASE("severity", "[severity]")
50 : {
51 4 : CATCH_START_SECTION("Create Severity")
52 : {
53 1 : snaplogger::severity_t const err_plus_one(static_cast<snaplogger::severity_t>(static_cast<int>(snaplogger::severity_t::SEVERITY_ERROR) + 1));
54 :
55 : // user severity by name
56 : {
57 2 : snaplogger::severity::pointer_t s(std::make_shared<snaplogger::severity>(err_plus_one, "error"));
58 :
59 1 : CATCH_REQUIRE_THROWS_MATCHES(
60 : snaplogger::add_severity(s)
61 : , snaplogger::duplicate_error
62 : , Catch::Matchers::ExceptionMessage(
63 : "a system severity cannot be replaced."));
64 : }
65 :
66 : // system severity by name
67 : {
68 2 : snaplogger::severity::pointer_t s(std::make_shared<snaplogger::severity>(err_plus_one, "error", true));
69 :
70 1 : CATCH_REQUIRE_THROWS_MATCHES(
71 : snaplogger::add_severity(s)
72 : , snaplogger::duplicate_error
73 : , Catch::Matchers::ExceptionMessage(
74 : "a system severity cannot be replaced."));
75 : }
76 :
77 : // user severity by severity
78 : {
79 2 : snaplogger::severity::pointer_t s(std::make_shared<snaplogger::severity>(snaplogger::severity_t::SEVERITY_ERROR, "bad-error"));
80 :
81 1 : CATCH_REQUIRE_THROWS_MATCHES(
82 : snaplogger::add_severity(s)
83 : , snaplogger::duplicate_error
84 : , Catch::Matchers::ExceptionMessage(
85 : "a system severity cannot be replaced."));
86 : }
87 :
88 : // user severity by severity
89 : {
90 2 : snaplogger::severity::pointer_t s(std::make_shared<snaplogger::severity>(snaplogger::severity_t::SEVERITY_ERROR, "bad-error", true));
91 :
92 1 : CATCH_REQUIRE_THROWS_MATCHES(
93 : snaplogger::add_severity(s)
94 : , snaplogger::duplicate_error
95 : , Catch::Matchers::ExceptionMessage(
96 : "a system severity cannot be replaced."));
97 : }
98 :
99 : // actually create a valid severity
100 : {
101 1 : CATCH_REQUIRE(snaplogger::get_severity("bad-error") == nullptr);
102 1 : CATCH_REQUIRE(snaplogger::get_severity("big-error") == nullptr);
103 :
104 1 : snaplogger::severity_t const level(static_cast<snaplogger::severity_t>(205));
105 2 : snaplogger::severity::pointer_t s(std::make_shared<snaplogger::severity>(level, "bad-error"));
106 :
107 1 : CATCH_REQUIRE(s->get_severity() == level);
108 1 : CATCH_REQUIRE(s->get_name() == "bad-error");
109 :
110 1 : CATCH_REQUIRE(s->get_all_names().size() == 1);
111 1 : CATCH_REQUIRE(s->get_all_names()[0] == "bad-error");
112 :
113 1 : CATCH_REQUIRE(snaplogger::get_severity("bad-error") == nullptr);
114 1 : CATCH_REQUIRE(snaplogger::get_severity("big-error") == nullptr);
115 :
116 1 : snaplogger::add_severity(s);
117 :
118 1 : CATCH_REQUIRE(snaplogger::get_severity("bad-error") == s);
119 1 : CATCH_REQUIRE(snaplogger::get_severity("big-error") == nullptr);
120 :
121 1 : s->add_alias("big-error");
122 :
123 1 : CATCH_REQUIRE(s->get_all_names().size() == 2);
124 1 : CATCH_REQUIRE(s->get_all_names()[0] == "bad-error");
125 1 : CATCH_REQUIRE(s->get_all_names()[1] == "big-error");
126 :
127 1 : CATCH_REQUIRE(s->get_description() == "bad-error");
128 :
129 1 : s->set_description("bad error");
130 1 : CATCH_REQUIRE(s->get_description() == "bad error");
131 :
132 1 : s->set_description(std::string());
133 1 : CATCH_REQUIRE(s->get_description() == "bad-error");
134 :
135 1 : CATCH_REQUIRE(snaplogger::get_severity("bad-error") == s);
136 1 : CATCH_REQUIRE(snaplogger::get_severity("big-error") == s);
137 1 : CATCH_REQUIRE(snaplogger::get_severity(level) == s);
138 :
139 1 : s->set_styles("orange");
140 1 : CATCH_REQUIRE(s->get_styles() == "orange");
141 :
142 1 : snaplogger::severity_t const level_plus_one(static_cast<snaplogger::severity_t>(static_cast<int>(level) + 1));
143 1 : CATCH_REQUIRE(snaplogger::get_severity(level_plus_one) == nullptr);
144 :
145 2 : snaplogger::message msg(::snaplogger::severity_t::SEVERITY_ERROR, __FILE__, __func__, __LINE__);
146 1 : CATCH_REQUIRE(snaplogger::get_severity(msg, "bad-error") == s);
147 1 : CATCH_REQUIRE(snaplogger::get_severity(msg, "big-error") == s);
148 : }
149 : }
150 : CATCH_END_SECTION()
151 :
152 4 : CATCH_START_SECTION("Print Severity")
153 : {
154 : {
155 2 : std::stringstream buffer;
156 1 : buffer << ::snaplogger::severity_t::SEVERITY_ERROR;
157 1 : CATCH_REQUIRE(buffer.str() == "error");
158 : }
159 :
160 : {
161 2 : std::stringstream buffer;
162 1 : buffer << static_cast<::snaplogger::severity_t>(254);
163 1 : CATCH_REQUIRE(buffer.str() == "(unknown severity: 254)");
164 : }
165 : }
166 : CATCH_END_SECTION()
167 8 : }
168 :
169 :
170 :
171 : // vim: ts=4 sw=4 et
|