9 #include <gtest/gtest.h>
10 #include <nlohmann/json.hpp>
23 auto trailing_comma = R
"(
26 "type": "valueKeyword",
28 "value": "VALUE STRING"
39 auto keywords_str = R
"(
42 "type": "valueKeyword",
44 "value": "VALUE STRING"
47 "type": "valueKeyword",
52 "type": "valueKeyword",
54 "value": -9223372036854775807
57 "type": "valueKeyword",
59 "value": 9223372036854775807
62 "type": "valueKeyword",
64 "value": 18446744073709551615
67 "type": "valueKeyword",
69 "value": -1.79769313486231e+308
72 "type": "valueKeyword",
74 "value": 1.79769313486231e+308
81 ASSERT_EQ(7u, parsed.size());
82 for (
auto const& kw_var : parsed) {
83 ASSERT_TRUE(std::holds_alternative<ValueKeyword>(kw_var));
88 EXPECT_EQ(
ValueKeyword(
"STRKW", std::string(
"VALUE STRING"), std::nullopt), kw);
92 EXPECT_EQ(
ValueKeyword(
"BOOLKW",
true, std::nullopt), kw);
96 EXPECT_EQ(
ValueKeyword(
"INTMIN", int64_t(-9223372036854775807), std::nullopt), kw);
100 EXPECT_EQ(
ValueKeyword(
"INTMAX", uint64_t(9223372036854775807), std::nullopt), kw);
104 EXPECT_EQ(
ValueKeyword(
"UINTMAX", 18446744073709551615u, std::nullopt), kw);
108 EXPECT_EQ(
ValueKeyword(
"FLOATMIN", -1.79769313486231e+308, std::nullopt), kw);
112 EXPECT_EQ(
ValueKeyword(
"FLOATMAX", 1.79769313486231e+308, std::nullopt), kw);
118 auto keywords_str = R
"(
121 "type": "esoKeyword",
123 "value": "VALUE STRING"
126 "type": "esoKeyword",
131 "type": "esoKeyword",
133 "value": -9223372036854775807
136 "type": "esoKeyword",
138 "value": 9223372036854775807
141 "type": "esoKeyword",
143 "value": 18446744073709551615
146 "type": "esoKeyword",
148 "value": -1.79769313486231e+308
151 "type": "esoKeyword",
153 "value": 1.79769313486231e+308
156 "type": "esoKeyword",
157 "name": "KW WITH SPACE",
165 ASSERT_EQ(8u, parsed.size());
166 for (
auto const& kw_var : parsed) {
167 ASSERT_TRUE(std::holds_alternative<EsoKeyword>(kw_var));
171 EsoKeyword kw = std::get<EsoKeyword>(parsed[0]);
172 EXPECT_EQ(
EsoKeyword(
"STRKW", std::string(
"VALUE STRING"), std::nullopt), kw);
175 EsoKeyword kw = std::get<EsoKeyword>(parsed[1]);
176 EXPECT_EQ(
EsoKeyword(
"BOOLKW",
true, std::nullopt), kw);
179 EsoKeyword kw = std::get<EsoKeyword>(parsed[2]);
180 EXPECT_EQ(
EsoKeyword(
"INTMIN", int64_t(-9223372036854775807), std::nullopt), kw);
183 EsoKeyword kw = std::get<EsoKeyword>(parsed[3]);
184 EXPECT_EQ(
EsoKeyword(
"INTMAX", uint64_t(9223372036854775807), std::nullopt), kw);
187 EsoKeyword kw = std::get<EsoKeyword>(parsed[4]);
188 EXPECT_EQ(
EsoKeyword(
"UINTMAX", 18446744073709551615u, std::nullopt), kw);
191 EsoKeyword kw = std::get<EsoKeyword>(parsed[5]);
192 EXPECT_EQ(
EsoKeyword(
"FLOATMIN", -1.79769313486231e+308, std::nullopt), kw);
195 EsoKeyword kw = std::get<EsoKeyword>(parsed[6]);
196 EXPECT_EQ(
EsoKeyword(
"FLOATMAX", 1.79769313486231e+308, std::nullopt), kw);
199 EsoKeyword kw = std::get<EsoKeyword>(parsed[7]);
200 EXPECT_EQ(
EsoKeyword(
"KW WITH SPACE",
"spaces", std::nullopt), kw);
206 auto keywords_str = R
"(
209 "type": "valueKeyword",
211 "value": "VALUE STRING",
212 "comment": "this is a comment"
215 "type": "esoKeyword",
217 "value": "VALUE STRING",
218 "comment": "this is also a comment"
225 ASSERT_EQ(2u, parsed.size());
226 ASSERT_TRUE(std::holds_alternative<ValueKeyword>(parsed[0]));
227 ASSERT_TRUE(std::holds_alternative<EsoKeyword>(parsed[1]));
231 EXPECT_EQ(
ValueKeyword(
"STRKW1", std::string(
"VALUE STRING"),
"this is a comment"), kw);
234 EsoKeyword kw = std::get<EsoKeyword>(parsed[1]);
235 EXPECT_EQ(
EsoKeyword(
"STRKW2", std::string(
"VALUE STRING"),
"this is also a comment"), kw);
241 auto keywords_str = R
"(
245 EXPECT_EQ(0u, res.size());
250 auto keywords_str = R
"(
252 "type": "valueKeyword",
254 "value": 1.79769313486231e+308
262 auto keywords_str = R
"(
275 auto keywords_str = R
"(
288 auto keywords_str = R
"(
293 "value": 1.79769313486231e+308
302 auto keywords_str = R
"(
307 "value": 1.79769313486231e+308
316 auto keywords_str = R
"(
319 "type": "valueKeyword",
320 "value": 1.79769313486231e+308
329 auto keywords_str = R
"(
332 "type": "valueKeyword",
342 auto keywords_str = R
"(
345 "type": "valueKeyword",
347 "value": {"foo": true}
356 auto keywords_str = R
"(
359 "type": "valueKeyword",
370 auto keywords_str = R
"(
373 "type": "valueKeyword",