More tests for lexical_cast

This commit is contained in:
Jyrki Vesterinen 2016-12-08 21:16:01 +02:00
parent 28df71d13a
commit 8a80af7ace

View file

@ -212,4 +212,21 @@ BOOST_AUTO_TEST_CASE(test_lexical_cast_result)
BOOST_CHECK_EQUAL(lexical_cast<int>("1"), 1);
BOOST_CHECK_EQUAL(lexical_cast<int>("-1"), -1);
BOOST_CHECK_EQUAL(lexical_cast<unsigned>("1"), 1);
BOOST_CHECK_EQUAL(lexical_cast<double>("1.2"), 1.2);
std::string a = "01234567890123456789";
BOOST_CHECK_EQUAL(lexical_cast<long long>(a), 1234567890123456789ll);
BOOST_CHECK_THROW(lexical_cast<int>(a), bad_lexical_cast);
BOOST_CHECK_EQUAL(lexical_cast<double>(a), 1.23456789012345678e18);
BOOST_CHECK_EQUAL(lexical_cast_default<long long>(a, 0ll), 1234567890123456789ll);
BOOST_CHECK_EQUAL(lexical_cast_default<int>(a, 0), 0);
BOOST_CHECK_EQUAL(lexical_cast_default<double>(a, 0.0), 1.23456789012345678e18);
std::string b = "99999999999999999999";
BOOST_CHECK_THROW(lexical_cast<long long>(b), bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>(b), bad_lexical_cast);
BOOST_CHECK_EQUAL(lexical_cast<double>(b), 1e20);
BOOST_CHECK_EQUAL(lexical_cast_default<long long>(b, 0ll), 0ll);
BOOST_CHECK_EQUAL(lexical_cast_default<int>(b, 0), 0);
BOOST_CHECK_EQUAL(lexical_cast_default<double>(b, 0.0), 1e20);
}