Mercurial > irccd
comparison tests/util/main.cpp @ 114:8cbbce7b4327
Irccd: add util::toNumber function, #489
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 28 Apr 2016 19:39:51 +0200 |
parents | 1125d90b3b44 |
children | 2a63c8ec45cd |
comparison
equal
deleted
inserted
replaced
113:6a99814c2317 | 114:8cbbce7b4327 |
---|---|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 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 | 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 */ | 17 */ |
18 | 18 |
19 #include <cstdint> | |
20 | |
19 #include <gtest/gtest.h> | 21 #include <gtest/gtest.h> |
20 | 22 |
21 #include <irccd/util.hpp> | 23 #include <irccd/util.hpp> |
22 #include <irccd/system.hpp> | 24 #include <irccd/system.hpp> |
23 | 25 |
315 { | 317 { |
316 ASSERT_FALSE(util::isNumber("lol")); | 318 ASSERT_FALSE(util::isNumber("lol")); |
317 ASSERT_FALSE(util::isNumber("this is not a number")); | 319 ASSERT_FALSE(util::isNumber("this is not a number")); |
318 } | 320 } |
319 | 321 |
322 /* | |
323 * util::toNumber function | |
324 * ------------------------------------------------------------------ | |
325 */ | |
326 | |
327 TEST(ToNumber, correct) | |
328 { | |
329 /* unsigned */ | |
330 ASSERT_EQ(50u, util::toNumber<std::uint8_t>("50")); | |
331 ASSERT_EQ(5000u, util::toNumber<std::uint16_t>("5000")); | |
332 ASSERT_EQ(50000u, util::toNumber<std::uint32_t>("50000")); | |
333 ASSERT_EQ(500000u, util::toNumber<std::uint64_t>("500000")); | |
334 | |
335 /* signed */ | |
336 ASSERT_EQ(-50, util::toNumber<std::int8_t>("-50")); | |
337 ASSERT_EQ(-500, util::toNumber<std::int16_t>("-500")); | |
338 ASSERT_EQ(-5000, util::toNumber<std::int32_t>("-5000")); | |
339 ASSERT_EQ(-50000, util::toNumber<std::int64_t>("-50000")); | |
340 } | |
341 | |
342 TEST(ToNumber, incorrect) | |
343 { | |
344 /* unsigned */ | |
345 ASSERT_THROW(util::toNumber<std::uint8_t>("300"), std::out_of_range); | |
346 ASSERT_THROW(util::toNumber<std::uint16_t>("80000"), std::out_of_range); | |
347 ASSERT_THROW(util::toNumber<std::uint8_t>("-125"), std::out_of_range); | |
348 ASSERT_THROW(util::toNumber<std::uint16_t>("-25000"), std::out_of_range); | |
349 | |
350 /* signed */ | |
351 ASSERT_THROW(util::toNumber<std::int8_t>("300"), std::out_of_range); | |
352 ASSERT_THROW(util::toNumber<std::int16_t>("80000"), std::out_of_range); | |
353 ASSERT_THROW(util::toNumber<std::int8_t>("-300"), std::out_of_range); | |
354 ASSERT_THROW(util::toNumber<std::int16_t>("-80000"), std::out_of_range); | |
355 | |
356 /* not numbers */ | |
357 ASSERT_THROW(util::toNumber<std::uint8_t>("nonono"), std::invalid_argument); | |
358 | |
359 /* custom ranges */ | |
360 ASSERT_THROW(util::toNumber<std::uint8_t>("50", 0, 10), std::out_of_range); | |
361 ASSERT_THROW(util::toNumber<std::int8_t>("-50", -10, 10), std::out_of_range); | |
362 } | |
363 | |
320 } // !irccd | 364 } // !irccd |
321 | 365 |
322 int main(int argc, char **argv) | 366 int main(int argc, char **argv) |
323 { | 367 { |
324 testing::InitGoogleTest(&argc, argv); | 368 testing::InitGoogleTest(&argc, argv); |