Mercurial > irccd
annotate tests/util/main.cpp @ 281:7227203a9a70
Tests: fix js-timer
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 22 Oct 2016 16:08:22 +0200 |
parents | 6635b9187d71 |
children | c6fbb6e0e06d |
rev | line source |
---|---|
0 | 1 /* |
2 * main.cpp -- test util functions | |
3 * | |
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
19 #include <cstdint> |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
20 |
0 | 21 #include <gtest/gtest.h> |
22 | |
95
1125d90b3b44
Misc: switch to .hpp, #477
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
23 #include <irccd/util.hpp> |
1125d90b3b44
Misc: switch to .hpp, #477
David Demelier <markand@malikania.fr>
parents:
75
diff
changeset
|
24 #include <irccd/system.hpp> |
0 | 25 |
26 namespace irccd { | |
27 | |
28 /* -------------------------------------------------------- | |
29 * util::format function | |
30 * -------------------------------------------------------- */ | |
31 | |
32 TEST(Format, nothing) | |
33 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
34 std::string expected = "hello world!"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
35 std::string result = util::format("hello world!"); |
0 | 36 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
37 ASSERT_EQ(expected, result); |
0 | 38 } |
39 | |
118
2a63c8ec45cd
Irccd: fix some errors in util::format, #408
David Demelier <markand@malikania.fr>
parents:
114
diff
changeset
|
40 TEST(Format, escape) |
2a63c8ec45cd
Irccd: fix some errors in util::format, #408
David Demelier <markand@malikania.fr>
parents:
114
diff
changeset
|
41 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
42 util::Substitution params; |
118
2a63c8ec45cd
Irccd: fix some errors in util::format, #408
David Demelier <markand@malikania.fr>
parents:
114
diff
changeset
|
43 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
44 params.keywords.emplace("target", "hello"); |
118
2a63c8ec45cd
Irccd: fix some errors in util::format, #408
David Demelier <markand@malikania.fr>
parents:
114
diff
changeset
|
45 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
46 ASSERT_EQ("$@#", util::format("$@#")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
47 ASSERT_EQ(" $ @ # ", util::format(" $ @ # ")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
48 ASSERT_EQ("#", util::format("#")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
49 ASSERT_EQ(" # ", util::format(" # ")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
50 ASSERT_EQ("#@", util::format("#@")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
51 ASSERT_EQ("##", util::format("##")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
52 ASSERT_EQ("#!", util::format("#!")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
53 ASSERT_EQ("#{target}", util::format("##{target}")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
54 ASSERT_EQ("@hello", util::format("@#{target}", params)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
55 ASSERT_EQ("hello#", util::format("#{target}#", params)); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
56 ASSERT_ANY_THROW(util::format("#{failure")); |
118
2a63c8ec45cd
Irccd: fix some errors in util::format, #408
David Demelier <markand@malikania.fr>
parents:
114
diff
changeset
|
57 } |
2a63c8ec45cd
Irccd: fix some errors in util::format, #408
David Demelier <markand@malikania.fr>
parents:
114
diff
changeset
|
58 |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
59 TEST(Format, disableDate) |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
60 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
61 util::Substitution params; |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
62 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
63 params.flags &= ~(util::Substitution::Date); |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
64 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
65 ASSERT_EQ("%H:%M", util::format("%H:%M", params)); |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
66 } |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
67 |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
68 TEST(Format, disableKeywords) |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
69 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
70 util::Substitution params; |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
71 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
72 params.keywords.emplace("target", "hello"); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
73 params.flags &= ~(util::Substitution::Keywords); |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
74 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
75 ASSERT_EQ("#{target}", util::format("#{target}", params)); |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
76 } |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
77 |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
78 TEST(Format, disableEnv) |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
79 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
80 util::Substitution params; |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
81 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
82 params.flags &= ~(util::Substitution::Env); |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
83 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
84 ASSERT_EQ("${HOME}", util::format("${HOME}", params)); |
119
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
85 } |
b39573fc066e
Irccd: improve util::format to disable some features, #408
David Demelier <markand@malikania.fr>
parents:
118
diff
changeset
|
86 |
0 | 87 TEST(Format, keywordSimple) |
88 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
89 util::Substitution params; |
0 | 90 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
91 params.keywords.insert({"target", "irccd"}); |
0 | 92 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
93 std::string expected = "hello irccd!"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
94 std::string result = util::format("hello #{target}!", params); |
0 | 95 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
96 ASSERT_EQ(expected, result); |
0 | 97 } |
98 | |
99 TEST(Format, keywordMultiple) | |
100 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
101 util::Substitution params; |
0 | 102 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
103 params.keywords.insert({"target", "irccd"}); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
104 params.keywords.insert({"source", "nightmare"}); |
0 | 105 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
106 std::string expected = "hello irccd from nightmare!"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
107 std::string result = util::format("hello #{target} from #{source}!", params); |
0 | 108 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
109 ASSERT_EQ(expected, result); |
0 | 110 } |
111 | |
112 TEST(Format, keywordAdjTwice) | |
113 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
114 util::Substitution params; |
0 | 115 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
116 params.keywords.insert({"target", "irccd"}); |
0 | 117 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
118 std::string expected = "hello irccdirccd!"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
119 std::string result = util::format("hello #{target}#{target}!", params); |
0 | 120 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
121 ASSERT_EQ(expected, result); |
0 | 122 } |
123 | |
124 TEST(Format, keywordMissing) | |
125 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
126 std::string expected = "hello !"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
127 std::string result = util::format("hello #{target}!"); |
0 | 128 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
129 ASSERT_EQ(expected, result); |
0 | 130 } |
131 | |
132 TEST(Format, envSimple) | |
133 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
134 std::string home = sys::env("HOME"); |
0 | 135 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
136 if (!home.empty()) { |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
137 std::string expected = "my home is " + home; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
138 std::string result = util::format("my home is ${HOME}"); |
0 | 139 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
140 ASSERT_EQ(expected, result); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
141 } |
0 | 142 } |
143 | |
144 TEST(Format, envMissing) | |
145 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
146 std::string expected = "value is "; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
147 std::string result = util::format("value is ${HOPE_THIS_VAR_NOT_EXIST}"); |
0 | 148 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
149 ASSERT_EQ(expected, result); |
0 | 150 } |
151 | |
152 /* -------------------------------------------------------- | |
153 * util::split function | |
154 * -------------------------------------------------------- */ | |
155 | |
156 using List = std::vector<std::string>; | |
157 | |
158 TEST(Split, simple) | |
159 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
160 List expected { "a", "b" }; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
161 List result = util::split("a;b", ";"); |
0 | 162 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
163 ASSERT_EQ(expected, result); |
0 | 164 } |
165 | |
166 TEST(Split, cut) | |
167 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
168 List expected { "msg", "#staff", "foo bar baz" }; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
169 List result = util::split("msg;#staff;foo bar baz", ";", 3); |
0 | 170 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
171 ASSERT_EQ(expected, result); |
0 | 172 } |
173 | |
174 /* -------------------------------------------------------- | |
175 * util::strip function | |
176 * -------------------------------------------------------- */ | |
177 | |
178 TEST(Strip, left) | |
179 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
180 std::string value = " 123"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
181 std::string result = util::strip(value); |
0 | 182 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
183 ASSERT_EQ("123", result); |
0 | 184 } |
185 | |
186 TEST(Strip, right) | |
187 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
188 std::string value = "123 "; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
189 std::string result = util::strip(value); |
0 | 190 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
191 ASSERT_EQ("123", result); |
0 | 192 } |
193 | |
194 TEST(Strip, both) | |
195 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
196 std::string value = " 123 "; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
197 std::string result = util::strip(value); |
0 | 198 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
199 ASSERT_EQ("123", result); |
0 | 200 } |
201 | |
202 TEST(Strip, none) | |
203 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
204 std::string value = "without"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
205 std::string result = util::strip(value); |
0 | 206 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
207 ASSERT_EQ("without", result); |
0 | 208 } |
209 | |
210 TEST(Strip, betweenEmpty) | |
211 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
212 std::string value = "one list"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
213 std::string result = util::strip(value); |
0 | 214 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
215 ASSERT_EQ("one list", result); |
0 | 216 } |
217 | |
218 TEST(Strip, betweenLeft) | |
219 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
220 std::string value = " space at left"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
221 std::string result = util::strip(value); |
0 | 222 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
223 ASSERT_EQ("space at left", result); |
0 | 224 } |
225 | |
226 TEST(Strip, betweenRight) | |
227 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
228 std::string value = "space at right "; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
229 std::string result = util::strip(value); |
0 | 230 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
231 ASSERT_EQ("space at right", result); |
0 | 232 } |
233 | |
234 TEST(Strip, betweenBoth) | |
235 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
236 std::string value = " space at both "; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
237 std::string result = util::strip(value); |
0 | 238 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
239 ASSERT_EQ("space at both", result); |
0 | 240 } |
241 | |
242 TEST(Strip, empty) | |
243 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
244 std::string value = " "; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
245 std::string result = util::strip(value); |
0 | 246 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
247 ASSERT_EQ("", result); |
0 | 248 } |
249 | |
250 /* -------------------------------------------------------- | |
251 * util::join function | |
252 * -------------------------------------------------------- */ | |
253 | |
254 TEST(Join, empty) | |
255 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
256 std::string expected = ""; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
257 std::string result = util::join<int>({}); |
0 | 258 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
259 ASSERT_EQ(expected, result); |
0 | 260 } |
261 | |
262 TEST(Join, one) | |
263 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
264 std::string expected = "1"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
265 std::string result = util::join({1}); |
0 | 266 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
267 ASSERT_EQ(expected, result); |
0 | 268 } |
269 | |
270 TEST(Join, two) | |
271 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
272 std::string expected = "1:2"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
273 std::string result = util::join({1, 2}); |
0 | 274 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
275 ASSERT_EQ(expected, result); |
0 | 276 } |
277 | |
278 TEST(Join, delimiterString) | |
279 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
280 std::string expected = "1;;2;;3"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
281 std::string result = util::join({1, 2, 3}, ";;"); |
0 | 282 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
283 ASSERT_EQ(expected, result); |
0 | 284 } |
285 | |
286 TEST(Join, delimiterChar) | |
287 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
288 std::string expected = "1@2@3@4"; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
289 std::string result = util::join({1, 2, 3, 4}, '@'); |
0 | 290 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
291 ASSERT_EQ(expected, result); |
0 | 292 } |
293 | |
294 /* -------------------------------------------------------- | |
295 * util::isIdentifierValid function | |
296 * -------------------------------------------------------- */ | |
297 | |
298 TEST(IsIdentifierValid, correct) | |
299 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
300 ASSERT_TRUE(util::isIdentifierValid("localhost")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
301 ASSERT_TRUE(util::isIdentifierValid("localhost2")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
302 ASSERT_TRUE(util::isIdentifierValid("localhost2-4_")); |
0 | 303 } |
304 | |
305 TEST(IsIdentifierValid, incorrect) | |
306 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
307 ASSERT_FALSE(util::isIdentifierValid("")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
308 ASSERT_FALSE(util::isIdentifierValid("localhost with spaces")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
309 ASSERT_FALSE(util::isIdentifierValid("localhost*")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
310 ASSERT_FALSE(util::isIdentifierValid("&&")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
311 ASSERT_FALSE(util::isIdentifierValid("@'")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
312 ASSERT_FALSE(util::isIdentifierValid("##")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
313 ASSERT_FALSE(util::isIdentifierValid("===++")); |
0 | 314 } |
315 | |
316 /* -------------------------------------------------------- | |
317 * util::isBoolean function | |
318 * -------------------------------------------------------- */ | |
319 | |
320 TEST(IsBoolean, correct) | |
321 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
322 // true |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
323 ASSERT_TRUE(util::isBoolean("true")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
324 ASSERT_TRUE(util::isBoolean("True")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
325 ASSERT_TRUE(util::isBoolean("TRUE")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
326 ASSERT_TRUE(util::isBoolean("TruE")); |
0 | 327 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
328 // yes |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
329 ASSERT_TRUE(util::isBoolean("yes")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
330 ASSERT_TRUE(util::isBoolean("Yes")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
331 ASSERT_TRUE(util::isBoolean("YES")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
332 ASSERT_TRUE(util::isBoolean("YeS")); |
0 | 333 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
334 // on |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
335 ASSERT_TRUE(util::isBoolean("on")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
336 ASSERT_TRUE(util::isBoolean("On")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
337 ASSERT_TRUE(util::isBoolean("oN")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
338 ASSERT_TRUE(util::isBoolean("ON")); |
0 | 339 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
340 // 1 |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
341 ASSERT_TRUE(util::isBoolean("1")); |
0 | 342 } |
343 | |
344 TEST(IsBoolean, incorrect) | |
345 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
346 ASSERT_FALSE(util::isBoolean("false")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
347 ASSERT_FALSE(util::isBoolean("lol")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
348 ASSERT_FALSE(util::isBoolean("")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
349 ASSERT_FALSE(util::isBoolean("0")); |
0 | 350 } |
351 | |
352 /* -------------------------------------------------------- | |
353 * util::isNumber function | |
354 * -------------------------------------------------------- */ | |
355 | |
356 TEST(IsNumber, correct) | |
357 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
358 ASSERT_TRUE(util::isNumber("123")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
359 ASSERT_TRUE(util::isNumber("-123")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
360 ASSERT_TRUE(util::isNumber("123.67")); |
0 | 361 } |
362 | |
363 TEST(IsNumber, incorrect) | |
364 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
365 ASSERT_FALSE(util::isNumber("lol")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
366 ASSERT_FALSE(util::isNumber("this is not a number")); |
0 | 367 } |
368 | |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
369 /* |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
370 * util::toNumber function |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
371 * ------------------------------------------------------------------ |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
372 */ |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
373 |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
374 TEST(ToNumber, correct) |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
375 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
376 /* unsigned */ |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
377 ASSERT_EQ(50u, util::toNumber<std::uint8_t>("50")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
378 ASSERT_EQ(5000u, util::toNumber<std::uint16_t>("5000")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
379 ASSERT_EQ(50000u, util::toNumber<std::uint32_t>("50000")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
380 ASSERT_EQ(500000u, util::toNumber<std::uint64_t>("500000")); |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
381 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
382 /* signed */ |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
383 ASSERT_EQ(-50, util::toNumber<std::int8_t>("-50")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
384 ASSERT_EQ(-500, util::toNumber<std::int16_t>("-500")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
385 ASSERT_EQ(-5000, util::toNumber<std::int32_t>("-5000")); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
386 ASSERT_EQ(-50000, util::toNumber<std::int64_t>("-50000")); |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
387 } |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
388 |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
389 TEST(ToNumber, incorrect) |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
390 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
391 /* unsigned */ |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
392 ASSERT_THROW(util::toNumber<std::uint8_t>("300"), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
393 ASSERT_THROW(util::toNumber<std::uint16_t>("80000"), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
394 ASSERT_THROW(util::toNumber<std::uint8_t>("-125"), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
395 ASSERT_THROW(util::toNumber<std::uint16_t>("-25000"), std::out_of_range); |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
396 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
397 /* signed */ |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
398 ASSERT_THROW(util::toNumber<std::int8_t>("300"), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
399 ASSERT_THROW(util::toNumber<std::int16_t>("80000"), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
400 ASSERT_THROW(util::toNumber<std::int8_t>("-300"), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
401 ASSERT_THROW(util::toNumber<std::int16_t>("-80000"), std::out_of_range); |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
402 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
403 /* not numbers */ |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
404 ASSERT_THROW(util::toNumber<std::uint8_t>("nonono"), std::invalid_argument); |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
405 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
406 /* custom ranges */ |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
407 ASSERT_THROW(util::toNumber<std::uint8_t>("50", 0, 10), std::out_of_range); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
408 ASSERT_THROW(util::toNumber<std::int8_t>("-50", -10, 10), std::out_of_range); |
114
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
409 } |
8cbbce7b4327
Irccd: add util::toNumber function, #489
David Demelier <markand@malikania.fr>
parents:
95
diff
changeset
|
410 |
0 | 411 } // !irccd |
412 | |
413 int main(int argc, char **argv) | |
414 { | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
415 testing::InitGoogleTest(&argc, argv); |
0 | 416 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
119
diff
changeset
|
417 return RUN_ALL_TESTS(); |
0 | 418 } |