Skip to content

Commit 1d1a101

Browse files
Add more tests
1 parent 6f2408d commit 1d1a101

File tree

3 files changed

+230
-4
lines changed

3 files changed

+230
-4
lines changed

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ project(PlogTest CXX)
44

55
add_executable(${PROJECT_NAME}
66
doctest.h
7+
Conditional.cpp
78
TestAppender.h
89
Main.cpp
910
Printf.cpp

test/Conditional.cpp

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#include "doctest.h"
2+
#include <plog/Log.h>
3+
#include "TestAppender.h"
4+
5+
SCENARIO("conditional logging")
6+
{
7+
GIVEN("logger is initialised")
8+
{
9+
plog::TestAppender testAppender;
10+
plog::Logger<PLOG_DEFAULT_INSTANCE_ID> logger(plog::info);
11+
logger.addAppender(&testAppender);
12+
13+
WHEN("condition is true")
14+
{
15+
int var = 0;
16+
PLOG_INFO_IF(var == 0) << "message";
17+
18+
THEN("the message is printed")
19+
{
20+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("message"));
21+
}
22+
}
23+
24+
WHEN("condition is false")
25+
{
26+
int var = 0;
27+
PLOG_INFO_IF(var != 0) << "message";
28+
29+
THEN("the message is not printed")
30+
{
31+
CHECK(testAppender.getMessage().empty());
32+
}
33+
}
34+
35+
WHEN("log level check is true")
36+
{
37+
int var = 0;
38+
IF_PLOG(plog::info) var = 5; // one line
39+
40+
IF_PLOG(plog::info) // block
41+
{
42+
var++;
43+
}
44+
45+
THEN("statements were executed")
46+
{
47+
CHECK_EQ(var, 5 + 1);
48+
}
49+
}
50+
51+
WHEN("log level check is false")
52+
{
53+
int var = 0;
54+
IF_PLOG(plog::debug) var = 5; // one line
55+
56+
IF_PLOG(plog::debug) // block
57+
{
58+
var++;
59+
}
60+
61+
THEN("statements were not executed")
62+
{
63+
CHECK_EQ(var, 0);
64+
}
65+
}
66+
67+
WHEN("log macros are used in 'then-else' clauses without braces and condition is true")
68+
{
69+
int var = 0;
70+
if (var == 0) PLOGI << "then clause"; else PLOGI << "else clause";
71+
72+
THEN("nothing is broken, 'then' clause is executed")
73+
{
74+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("then clause"));
75+
}
76+
}
77+
78+
WHEN("log macros are used in 'then-else' clauses without braces and condition is false")
79+
{
80+
int var = 0;
81+
if (var != 0) PLOGI << "then clause"; else PLOGI << "else clause";
82+
83+
THEN("nothing is broken, 'else' clause is executed")
84+
{
85+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("else clause"));
86+
}
87+
}
88+
}
89+
}

test/StringTypes.cpp

Lines changed: 140 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,160 @@
22
#include <plog/Log.h>
33
#include "TestAppender.h"
44

5-
SCENARIO("string types")
5+
SCENARIO("string types")
66
{
7-
GIVEN("logger is initialised")
7+
GIVEN("logger is initialised")
88
{
99
plog::TestAppender testAppender;
1010
plog::Logger<PLOG_DEFAULT_INSTANCE_ID> logger(plog::verbose);
1111
logger.addAppender(&testAppender);
1212

13-
WHEN("type is const char*")
13+
WHEN("type is char*")
14+
{
15+
char* var = const_cast<char*>("test");
16+
PLOGI << var;
17+
18+
THEN("the result is as expected")
19+
{
20+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
21+
}
22+
}
23+
24+
WHEN("type is const char*")
1425
{
1526
const char* var = "test";
1627
PLOGI << var;
1728

18-
THEN("the result is as expected")
29+
THEN("the result is as expected")
30+
{
31+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
32+
}
33+
}
34+
35+
WHEN("type is char[]")
36+
{
37+
char var[] = "test";
38+
PLOGI << var;
39+
40+
THEN("the result is as expected")
41+
{
42+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
43+
}
44+
}
45+
46+
WHEN("type is const char[]")
47+
{
48+
const char var[] = "test";
49+
PLOGI << var;
50+
51+
THEN("the result is as expected")
52+
{
53+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
54+
}
55+
}
56+
57+
WHEN("type is std::string")
58+
{
59+
std::string var = "test";
60+
PLOGI << var;
61+
62+
THEN("the result is as expected")
63+
{
64+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
65+
}
66+
}
67+
68+
WHEN("type is const std::string")
69+
{
70+
const std::string var = "test";
71+
PLOGI << var;
72+
73+
THEN("the result is as expected")
74+
{
75+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
76+
}
77+
}
78+
79+
#if PLOG_ENABLE_WCHAR_INPUT
80+
WHEN("type is wchar_t*")
81+
{
82+
wchar_t* var = const_cast<wchar_t*>(L"test");
83+
PLOGI << var;
84+
85+
THEN("the result is as expected")
86+
{
87+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
88+
}
89+
}
90+
91+
WHEN("type is const wchar_t*")
92+
{
93+
const wchar_t* var = L"test";
94+
PLOGI << var;
95+
96+
THEN("the result is as expected")
97+
{
98+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
99+
}
100+
}
101+
102+
WHEN("type is wchar_t[]")
103+
{
104+
wchar_t var[] = L"test";
105+
PLOGI << var;
106+
107+
THEN("the result is as expected")
108+
{
109+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
110+
}
111+
}
112+
113+
WHEN("type is const wchar_t[]")
114+
{
115+
const wchar_t var[] = L"test";
116+
PLOGI << var;
117+
118+
THEN("the result is as expected")
119+
{
120+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
121+
}
122+
}
123+
124+
WHEN("type is std::wstring")
125+
{
126+
std::wstring var = L"test";
127+
PLOGI << var;
128+
129+
THEN("the result is as expected")
130+
{
131+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
132+
}
133+
}
134+
135+
WHEN("type is const std::wstring")
136+
{
137+
const std::wstring var = L"test";
138+
PLOGI << var;
139+
140+
THEN("the result is as expected")
141+
{
142+
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
143+
}
144+
}
145+
#endif
146+
147+
#ifdef __cplusplus_cli
148+
WHEN("type is const System::String^")
149+
{
150+
System::String^ var = "test";
151+
PLOGI << var;
152+
153+
THEN("the result is as expected")
19154
{
20155
CHECK_EQ(testAppender.getMessage(), PLOG_NSTR("test"));
21156
}
22157
}
158+
#endif
23159

24160
//TODO: add more tests
25161
}

0 commit comments

Comments
 (0)