NewLang Project
Yet another programm language
Loading...
Searching...
No Matches
logger_test.cpp
Go to the documentation of this file.
1#ifdef BUILD_UNITTEST
2
3#include "warning_push.h"
4#include <gtest/gtest.h>
5#include "warning_pop.h"
6
7#include "logger.h"
8
9using namespace newlang;
10
11TEST(Logger, Logger) {
12
13 LOG_DUMP("LOG_DEBUG");
14
15 LOG_DEBUG("LOG_DEBUG");
16 LOG_DEBUG("LOG_DEBUG %s", "sssssssssss");
17 LOG_DEBUG("LOG_DEBUG %i", 11111111);
18
19 LOG_ERROR("LOG_ERROR");
20 LOG_ERROR("LOG_ERROR %f", 333.3333);
21
22 LOG_INFO("LOG_INFO %s %s %s\n\n", "a", "bb", "ccc");
23
24}
25
26TEST(Logger, HexToByte) {
27 EXPECT_EQ(HexToByte('0'), 0);
28 EXPECT_EQ(HexToByte('1'), 1);
29 EXPECT_EQ(HexToByte('2'), 2);
30 EXPECT_EQ(HexToByte('3'), 3);
31 EXPECT_EQ(HexToByte('4'), 4);
32 EXPECT_EQ(HexToByte('5'), 5);
33 EXPECT_EQ(HexToByte('6'), 6);
34 EXPECT_EQ(HexToByte('7'), 7);
35 EXPECT_EQ(HexToByte('8'), 8);
36 EXPECT_EQ(HexToByte('9'), 9);
37
38 EXPECT_EQ(HexToByte('A'), 0xA);
39 EXPECT_EQ(HexToByte('B'), 0xB);
40 EXPECT_EQ(HexToByte('C'), 0xC);
41 EXPECT_EQ(HexToByte('D'), 0xD);
42 EXPECT_EQ(HexToByte('E'), 0xE);
43 EXPECT_EQ(HexToByte('F'), 0xF);
44
45 EXPECT_EQ(HexToByte('a'), 0xA);
46 EXPECT_EQ(HexToByte('b'), 0xB);
47 EXPECT_EQ(HexToByte('c'), 0xC);
48 EXPECT_EQ(HexToByte('d'), 0xD);
49 EXPECT_EQ(HexToByte('e'), 0xE);
50 EXPECT_EQ(HexToByte('f'), 0xF);
51
52 EXPECT_THROW(HexToByte('w'), std::runtime_error);
53 EXPECT_THROW(HexToByte('+'), std::runtime_error);
54 EXPECT_THROW(HexToByte('S'), std::runtime_error);
55}
56
57TEST(Logger, HexToBin) {
58 std::array<uint8_t, 100> buffer;
59
60 EXPECT_EQ(0, HexToBin("", buffer.data(), buffer.size()));
61 EXPECT_EQ(0, HexToBin("12", buffer.data(), 0));
62 EXPECT_EQ(1, HexToBin("01", buffer.data(), buffer.size()));
63 EXPECT_EQ(2, HexToBin("2345", buffer.data(), buffer.size()));
64 EXPECT_EQ(3, HexToBin("678910", buffer.data(), buffer.size()));
65
66 EXPECT_EQ(2, HexToBin("ABCD", buffer.data(), 2));
67
68 EXPECT_EQ(11, HexToBin("0123456789ABCDEFabcdef", buffer.data(), buffer.size()));
69 EXPECT_EQ(buffer[0], 0x01);
70 EXPECT_EQ(buffer[1], 0x23);
71 EXPECT_EQ(buffer[2], 0x45);
72 EXPECT_EQ(buffer[3], 0x67);
73 EXPECT_EQ(buffer[4], 0x89);
74 EXPECT_EQ(buffer[5], 0xAB);
75 EXPECT_EQ(buffer[6], 0xCD);
76 EXPECT_EQ(buffer[7], 0xEF);
77 EXPECT_EQ(buffer[8], 0xAB);
78 EXPECT_EQ(buffer[9], 0xCD);
79 EXPECT_EQ(buffer[10], 0xEF);
80
81 EXPECT_TRUE(HexToBinEq("", buffer.data(), 0));
82 EXPECT_TRUE(HexToBinEq("01", buffer.data(), 1));
83 EXPECT_TRUE(HexToBinEq("0123", buffer.data(), 2));
84 EXPECT_TRUE(HexToBinEq("012345", buffer.data(), 3));
85 EXPECT_TRUE(HexToBinEq("0123456789ABCDEFabcdef", buffer.data(), 11));
86
87 EXPECT_FALSE(HexToBinEq("11", buffer.data(), 1));
88 EXPECT_FALSE(HexToBinEq("0123456789ABCDEFabcdef", buffer.data(), 12));
89 EXPECT_FALSE(HexToBinEq("0123456789ABCDEFabcdefFF", buffer.data(), 11));
90
91
92 // EXPECT_THROW(HexToBin(nullptr, buffer.data(), buffer.size()), std::runtime_error);
93 // EXPECT_THROW(HexToBin(nullptr, nullptr, buffer.size()), std::runtime_error);
94 // EXPECT_THROW(HexToBin("", nullptr, buffer.size()), std::runtime_error);
95
96 uint8_t buf[17] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0xF, 0};
97 EXPECT_STREQ(BinToHex(buf, sizeof (buf)).c_str(), "0102030405060708090A0B0C0D0E0F0F00");
98}
99
100
101std::string test_log_out;
102
103void test_log_callback(void *, Logger::LogLevelType, const char * str, bool) {
104 test_log_out.append(str);
105}
106
107TEST(Logger, Duplicate) {
108
109 Logger::Instance()->SetLogLevel(LOG_LEVEL_DEBUG);
110 Logger::Instance()->SetCallback(&test_log_callback, nullptr);
111
112 LOG_DEBUG("Test 1");
113 EXPECT_TRUE(test_log_out.find("D:Test 1 (logger_test.cpp:") == 0);
114 test_log_out.clear();
115 LOG_DEBUG("Test");
116 EXPECT_TRUE(test_log_out.find("D:Test (logger_test.cpp:") == 0);
117 test_log_out.clear();
118
119 Logger::Instance()->SetLogLevel(LOG_LEVEL_NORMAL);
120 LOG_INFO("123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 ");
121 EXPECT_STREQ(test_log_out.c_str(), "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 \n");
122 test_log_out.clear();
123
124 Logger::Instance()->SetLogLevel(LOG_LEVEL_MAX);
125 LOG_INFO("123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 ");
126 EXPECT_TRUE(test_log_out.find("123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 (logger_test.cpp:") == 0);
127 test_log_out.clear();
128
129 Logger::Instance()->SetCallback(nullptr, nullptr);
130
131}
132
133TEST(Logger, StringMatcher) {
134
135 StringMatcher *matcher = nullptr;
136
137 StringMatcher test1("");
138 matcher = &test1;
139 ASSERT_TRUE(matcher->MatchesName("")) << matcher->filter_;
140 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
141 ASSERT_FALSE(matcher->MatchesName("aa")) << matcher->filter_;
142 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
143 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
144
145 StringMatcher test2("*");
146 matcher = &test2;
147 ASSERT_TRUE(matcher->MatchesName("")) << matcher->filter_;
148 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
149 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
150 ASSERT_TRUE(matcher->MatchesName("b")) << matcher->filter_;
151 ASSERT_TRUE(matcher->MatchesName("bb")) << matcher->filter_;
152
153 StringMatcher test3("?");
154 matcher = &test3;
155 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
156 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
157 ASSERT_FALSE(matcher->MatchesName("aa")) << matcher->filter_;
158 ASSERT_TRUE(matcher->MatchesName("b")) << matcher->filter_;
159 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
160
161 StringMatcher test4("*a");
162 matcher = &test4;
163 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
164 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
165 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
166 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
167 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
168
169 StringMatcher test5("?a");
170 matcher = &test5;
171 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
172 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
173 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
174 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
175 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
176
177 StringMatcher test6("a*");
178 matcher = &test6;
179 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
180 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
181 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
182 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
183 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
184
185 StringMatcher test7("a?");
186 matcher = &test7;
187 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
188 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
189 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
190 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
191 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
192
193 {
194 StringMatcher test1("W:");
195 matcher = &test1;
196 ASSERT_TRUE(matcher->MatchesName("")) << matcher->filter_;
197 ASSERT_TRUE(matcher->MatchesName("W")) << matcher->filter_;
198 ASSERT_FALSE(matcher->MatchesName("aa")) << matcher->filter_;
199 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
200 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
201
202 StringMatcher test2("W:*");
203 matcher = &test2;
204 ASSERT_TRUE(matcher->MatchesName("")) << matcher->filter_;
205 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
206 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
207 ASSERT_TRUE(matcher->MatchesName("b")) << matcher->filter_;
208 ASSERT_TRUE(matcher->MatchesName("bb")) << matcher->filter_;
209
210 StringMatcher test3("W:?");
211 matcher = &test3;
212 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
213 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
214 ASSERT_FALSE(matcher->MatchesName("aa")) << matcher->filter_;
215 ASSERT_TRUE(matcher->MatchesName("b")) << matcher->filter_;
216 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
217
218 StringMatcher test4("W:*a");
219 matcher = &test4;
220 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
221 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
222 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
223 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
224 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
225
226 StringMatcher test5("W:?a");
227 matcher = &test5;
228 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
229 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
230 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
231 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
232 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
233
234 StringMatcher test6("W:a*");
235 matcher = &test6;
236 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
237 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
238 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
239 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
240 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
241
242 StringMatcher test7("W:a?");
243 matcher = &test7;
244 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
245 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
246 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
247 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
248 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
249 }
250
251 {
252 StringMatcher test1("W;", ';');
253 matcher = &test1;
254 ASSERT_TRUE(matcher->MatchesName("")) << matcher->filter_;
255 ASSERT_TRUE(matcher->MatchesName("W")) << matcher->filter_;
256 ASSERT_FALSE(matcher->MatchesName("aa")) << matcher->filter_;
257 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
258 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
259
260 StringMatcher test2("W;*",';');
261 matcher = &test2;
262 ASSERT_TRUE(matcher->MatchesName("")) << matcher->filter_;
263 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
264 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
265 ASSERT_TRUE(matcher->MatchesName("b")) << matcher->filter_;
266 ASSERT_TRUE(matcher->MatchesName("bb")) << matcher->filter_;
267
268 StringMatcher test3("W;?",';');
269 matcher = &test3;
270 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
271 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
272 ASSERT_FALSE(matcher->MatchesName("aa")) << matcher->filter_;
273 ASSERT_TRUE(matcher->MatchesName("b")) << matcher->filter_;
274 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
275
276 StringMatcher test4("W;*a",';');
277 matcher = &test4;
278 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
279 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
280 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
281 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
282 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
283
284 StringMatcher test5("W;?a",';');
285 matcher = &test5;
286 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
287 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
288 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
289 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
290 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
291
292 StringMatcher test6("W;a*",';');
293 matcher = &test6;
294 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
295 ASSERT_TRUE(matcher->MatchesName("a")) << matcher->filter_;
296 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
297 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
298 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
299
300 StringMatcher test7("W;a?",';');
301 matcher = &test7;
302 ASSERT_FALSE(matcher->MatchesName("")) << matcher->filter_;
303 ASSERT_FALSE(matcher->MatchesName("a")) << matcher->filter_;
304 ASSERT_TRUE(matcher->MatchesName("aa")) << matcher->filter_;
305 ASSERT_FALSE(matcher->MatchesName("b")) << matcher->filter_;
306 ASSERT_FALSE(matcher->MatchesName("bb")) << matcher->filter_;
307 }
308}
309#endif
uint8_t LogLevelType
Definition logger.h:319
const std::string_view filter_
Definition logger.h:264
bool MatchesName(const std::string &name) const
Definition logger.h:253
size_t HexToBin(const char *str, uint8_t *buf, const size_t size)
Definition logger.cpp:130
std::string BinToHex(const uint8_t *buf, const size_t size)
Definition logger.cpp:168
uint8_t HexToByte(const char c)
Definition logger.cpp:117
int HexToBinEq(const char *str, const uint8_t *buf, size_t size)
Definition logger.cpp:147
#define LOG_LEVEL_DEBUG
Definition logger.h:86
#define LOG_INFO(...)
Definition logger.h:120
#define LOG_DEBUG(...)
Definition logger.h:119
#define LOG_LEVEL_MAX
Definition logger.h:101
#define LOG_DUMP(...)
Definition logger.h:118
#define LOG_ERROR(...)
Definition logger.h:122
#define LOG_LEVEL_NORMAL
Definition logger.h:113
Definition nlc.h:59