annotate tests/util/main.cpp @ 394:c6fbb6e0e06d

Happy new year!
author David Demelier <markand@malikania.fr>
date Sun, 01 Jan 2017 15:29:41 +0100
parents 6635b9187d71
children 7e273b7f4f92
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test util functions
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
394
c6fbb6e0e06d Happy new year!
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <gtest/gtest.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 namespace irccd {
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 * util::format function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 TEST(Format, nothing)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 TEST(Format, keywordSimple)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 119
diff changeset
89 util::Substitution params;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 TEST(Format, keywordMultiple)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 119
diff changeset
101 util::Substitution params;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 TEST(Format, keywordAdjTwice)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 119
diff changeset
114 util::Substitution params;
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 TEST(Format, keywordMissing)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 TEST(Format, envSimple)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 TEST(Format, envMissing)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 * util::split function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 using List = std::vector<std::string>;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 TEST(Split, simple)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 TEST(Split, cut)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 * util::strip function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 TEST(Strip, left)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 TEST(Strip, right)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
193
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 TEST(Strip, both)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 TEST(Strip, none)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 TEST(Strip, betweenEmpty)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
217
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 TEST(Strip, betweenLeft)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
225
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 TEST(Strip, betweenRight)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
233
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 TEST(Strip, betweenBoth)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
241
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 TEST(Strip, empty)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
246
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 119
diff changeset
247 ASSERT_EQ("", result);
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
249
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 * util::join function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
253
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 TEST(Join, empty)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
261
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 TEST(Join, one)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
269
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 TEST(Join, two)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
277
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 TEST(Join, delimiterString)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
285
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 TEST(Join, delimiterChar)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
293
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 * util::isIdentifierValid function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
297
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 TEST(IsIdentifierValid, correct)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
304
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 TEST(IsIdentifierValid, incorrect)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
315
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 * util::isBoolean function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
319
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 TEST(IsBoolean, correct)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
342 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
343
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 TEST(IsBoolean, incorrect)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
350 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
351
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 /* --------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 * util::isNumber function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
354 * -------------------------------------------------------- */
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
355
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
356 TEST(IsNumber, correct)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
362
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
363 TEST(IsNumber, incorrect)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 }
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
411 } // !irccd
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
412
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
413 int main(int argc, char **argv)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
418 }