comparison 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
comparison
equal deleted inserted replaced
529:b3a0f61a35fe 530:7cd7b2cdf923
415 } 415 }
416 416
417 BOOST_AUTO_TEST_SUITE_END() 417 BOOST_AUTO_TEST_SUITE_END()
418 418
419 /* 419 /*
420 * string_util::to_number function 420 * string_util::to_int function
421 * ------------------------------------------------------------------ 421 * ------------------------------------------------------------------
422 */ 422 */
423 423
424 BOOST_AUTO_TEST_SUITE(to_number) 424 BOOST_AUTO_TEST_SUITE(to_int)
425 425
426 BOOST_AUTO_TEST_CASE(correct) 426 BOOST_AUTO_TEST_CASE(signed_to_int)
427 { 427 {
428 /* unsigned */ 428 BOOST_TEST(to_int("10") == 10);
429 BOOST_REQUIRE_EQUAL(50u, string_util::to_number<std::uint8_t>("50")); 429 BOOST_TEST(to_int<std::int8_t>("-10") == -10);
430 BOOST_REQUIRE_EQUAL(5000u, string_util::to_number<std::uint16_t>("5000")); 430 BOOST_TEST(to_int<std::int8_t>("10") == 10);
431 BOOST_REQUIRE_EQUAL(50000u, string_util::to_number<std::uint32_t>("50000")); 431 BOOST_TEST(to_int<std::int16_t>("-1000") == -1000);
432 BOOST_REQUIRE_EQUAL(500000u, string_util::to_number<std::uint64_t>("500000")); 432 BOOST_TEST(to_int<std::int16_t>("1000") == 1000);
433 433 BOOST_TEST(to_int<std::int32_t>("-1000") == -1000);
434 /* signed */ 434 BOOST_TEST(to_int<std::int32_t>("1000") == 1000);
435 BOOST_REQUIRE_EQUAL(-50, string_util::to_number<std::int8_t>("-50")); 435 }
436 BOOST_REQUIRE_EQUAL(-500, string_util::to_number<std::int16_t>("-500")); 436
437 BOOST_REQUIRE_EQUAL(-5000, string_util::to_number<std::int32_t>("-5000")); 437 BOOST_AUTO_TEST_CASE(signed_to_int64)
438 BOOST_REQUIRE_EQUAL(-50000, string_util::to_number<std::int64_t>("-50000")); 438 {
439 } 439 BOOST_TEST(to_int<std::int64_t>("-9223372036854775807") == -9223372036854775807LL);
440 440 BOOST_TEST(to_int<std::int64_t>("9223372036854775807") == 9223372036854775807LL);
441 BOOST_AUTO_TEST_CASE(incorrect) 441 }
442 { 442
443 /* unsigned */ 443 BOOST_AUTO_TEST_CASE(unsigned_to_uint)
444 BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("300"), std::out_of_range); 444 {
445 BOOST_REQUIRE_THROW(string_util::to_number<std::uint16_t>("80000"), std::out_of_range); 445 BOOST_TEST(to_uint("10") == 10U);
446 BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("-125"), std::out_of_range); 446 BOOST_TEST(to_uint<std::uint8_t>("10") == 10U);
447 BOOST_REQUIRE_THROW(string_util::to_number<std::uint16_t>("-25000"), std::out_of_range); 447 BOOST_TEST(to_uint<std::uint16_t>("1000") == 1000U);
448 448 BOOST_TEST(to_uint<std::uint32_t>("1000") == 1000U);
449 /* signed */ 449 }
450 BOOST_REQUIRE_THROW(string_util::to_number<std::int8_t>("300"), std::out_of_range); 450
451 BOOST_REQUIRE_THROW(string_util::to_number<std::int16_t>("80000"), std::out_of_range); 451 BOOST_AUTO_TEST_CASE(unsigned_to_uint64)
452 BOOST_REQUIRE_THROW(string_util::to_number<std::int8_t>("-300"), std::out_of_range); 452 {
453 BOOST_REQUIRE_THROW(string_util::to_number<std::int16_t>("-80000"), std::out_of_range); 453 BOOST_TEST(to_uint<std::uint64_t>("18446744073709551615") == 18446744073709551615ULL);
454 454 }
455 /* not numbers */ 455
456 BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("nonono"), std::invalid_argument); 456 BOOST_AUTO_TEST_SUITE_END()
457 457
458 /* custom ranges */ 458 BOOST_AUTO_TEST_SUITE(errors)
459 BOOST_REQUIRE_THROW(string_util::to_number<std::uint8_t>("50", 0, 10), std::out_of_range); 459
460 BOOST_REQUIRE_THROW(string_util::to_number<std::int8_t>("-50", -10, 10), std::out_of_range); 460 BOOST_AUTO_TEST_CASE(invalid_argument)
461 {
462 BOOST_REQUIRE_THROW(to_int("plopation"), std::invalid_argument);
463 BOOST_REQUIRE_THROW(to_uint("plopation"), std::invalid_argument);
464 }
465
466 BOOST_AUTO_TEST_CASE(out_of_range)
467 {
468 BOOST_REQUIRE_THROW(to_int<std::int8_t>("1000"), std::out_of_range);
469 BOOST_REQUIRE_THROW(to_int<std::int8_t>("-1000"), std::out_of_range);
470 BOOST_REQUIRE_THROW(to_uint<std::uint8_t>("1000"), std::out_of_range);
471 BOOST_REQUIRE_THROW(to_uint<std::uint8_t>("-1000"), std::out_of_range);
461 } 472 }
462 473
463 BOOST_AUTO_TEST_SUITE_END() 474 BOOST_AUTO_TEST_SUITE_END()
464 475
465 /* 476 /*