diff tests/util/main.cpp @ 530:7cd7b2cdf923

Common: import to_int / to_uint
author David Demelier <markand@malikania.fr>
date Thu, 16 Nov 2017 23:51:01 +0100
parents e03521cf207b
children d71c59eb04c3
line wrap: on
line diff
--- a/tests/util/main.cpp	Thu Nov 16 23:31:28 2017 +0100
+++ b/tests/util/main.cpp	Thu Nov 16 23:51:01 2017 +0100
@@ -417,47 +417,58 @@
 BOOST_AUTO_TEST_SUITE_END()
 
 /*
- * string_util::to_number function
+ * string_util::to_int function
  * ------------------------------------------------------------------
  */
 
-BOOST_AUTO_TEST_SUITE(to_number)
+BOOST_AUTO_TEST_SUITE(to_int)
 
-BOOST_AUTO_TEST_CASE(correct)
+BOOST_AUTO_TEST_CASE(signed_to_int)
 {
-    /* unsigned */
-    BOOST_REQUIRE_EQUAL(50u, string_util::to_number<std::uint8_t>("50"));
-    BOOST_REQUIRE_EQUAL(5000u, string_util::to_number<std::uint16_t>("5000"));
-    BOOST_REQUIRE_EQUAL(50000u, string_util::to_number<std::uint32_t>("50000"));
-    BOOST_REQUIRE_EQUAL(500000u, string_util::to_number<std::uint64_t>("500000"));
+    BOOST_TEST(to_int("10")                     == 10);
+    BOOST_TEST(to_int<std::int8_t>("-10")       == -10);
+    BOOST_TEST(to_int<std::int8_t>("10")        == 10);
+    BOOST_TEST(to_int<std::int16_t>("-1000")    == -1000);
+    BOOST_TEST(to_int<std::int16_t>("1000")     == 1000);
+    BOOST_TEST(to_int<std::int32_t>("-1000")    == -1000);
+    BOOST_TEST(to_int<std::int32_t>("1000")     == 1000);
+}
 
-    /* signed */
-    BOOST_REQUIRE_EQUAL(-50, string_util::to_number<std::int8_t>("-50"));
-    BOOST_REQUIRE_EQUAL(-500, string_util::to_number<std::int16_t>("-500"));
-    BOOST_REQUIRE_EQUAL(-5000, string_util::to_number<std::int32_t>("-5000"));
-    BOOST_REQUIRE_EQUAL(-50000, string_util::to_number<std::int64_t>("-50000"));
+BOOST_AUTO_TEST_CASE(signed_to_int64)
+{
+    BOOST_TEST(to_int<std::int64_t>("-9223372036854775807") == -9223372036854775807LL);
+    BOOST_TEST(to_int<std::int64_t>("9223372036854775807") == 9223372036854775807LL);
 }
 
-BOOST_AUTO_TEST_CASE(incorrect)
+BOOST_AUTO_TEST_CASE(unsigned_to_uint)
 {
-    /* unsigned */
-    BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("300"), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::uint16_t>("80000"), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("-125"), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::uint16_t>("-25000"), std::out_of_range);
+    BOOST_TEST(to_uint("10")                    == 10U);
+    BOOST_TEST(to_uint<std::uint8_t>("10")       == 10U);
+    BOOST_TEST(to_uint<std::uint16_t>("1000")    == 1000U);
+    BOOST_TEST(to_uint<std::uint32_t>("1000")    == 1000U);
+}
+
+BOOST_AUTO_TEST_CASE(unsigned_to_uint64)
+{
+    BOOST_TEST(to_uint<std::uint64_t>("18446744073709551615") == 18446744073709551615ULL);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
 
-    /* signed */
-    BOOST_REQUIRE_THROW(string_util::to_number<std::int8_t>("300"), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::int16_t>("80000"), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::int8_t>("-300"), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::int16_t>("-80000"), std::out_of_range);
+BOOST_AUTO_TEST_SUITE(errors)
 
-    /* not numbers */
-    BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("nonono"), std::invalid_argument);
+BOOST_AUTO_TEST_CASE(invalid_argument)
+{
+    BOOST_REQUIRE_THROW(to_int("plopation"), std::invalid_argument);
+    BOOST_REQUIRE_THROW(to_uint("plopation"), std::invalid_argument);
+}
 
-    /* custom ranges */
-    BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("50", 0, 10), std::out_of_range);
-    BOOST_REQUIRE_THROW(string_util::to_number<std::int8_t>("-50", -10, 10), std::out_of_range);
+BOOST_AUTO_TEST_CASE(out_of_range)
+{
+    BOOST_REQUIRE_THROW(to_int<std::int8_t>("1000"), std::out_of_range);
+    BOOST_REQUIRE_THROW(to_int<std::int8_t>("-1000"), std::out_of_range);
+    BOOST_REQUIRE_THROW(to_uint<std::uint8_t>("1000"), std::out_of_range);
+    BOOST_REQUIRE_THROW(to_uint<std::uint8_t>("-1000"), std::out_of_range);
 }
 
 BOOST_AUTO_TEST_SUITE_END()