// Testing boost::lexical_cast with boost::container::string. // // See http://www.boost.org for most recent version, including documentation. // // Copyright Antony Polukhin, 2011-2019. // // Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). #include #include #include void testing_boost_containers_basic_string(); void testing_boost_containers_string_std_string(); void testing_boost_containers_string_widening(); using namespace boost; boost::unit_test::test_suite *init_unit_test_suite(int, char *[]) { unit_test::test_suite *suite = BOOST_TEST_SUITE("Testing boost::lexical_cast with boost::container::string"); suite->add(BOOST_TEST_CASE(testing_boost_containers_basic_string)); suite->add(BOOST_TEST_CASE(testing_boost_containers_string_std_string)); suite->add(BOOST_TEST_CASE(testing_boost_containers_string_widening)); return suite; } void testing_boost_containers_basic_string() { BOOST_CHECK("100" == lexical_cast("100")); BOOST_CHECK(L"100" == lexical_cast(L"100")); BOOST_CHECK("100" == lexical_cast(100)); boost::container::string str("1000"); BOOST_CHECK(1000 == lexical_cast(str)); } #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING) #define BOOST_LCAST_NO_WCHAR_T #endif void testing_boost_containers_string_std_string() { std::string std_str("std_str"); boost::container::string boost_str("boost_str"); BOOST_CHECK(boost::lexical_cast(boost_str) == "boost_str"); BOOST_CHECK(boost::lexical_cast(std_str) == "std_str"); #ifndef BOOST_LCAST_NO_WCHAR_T std::wstring std_wstr(L"std_wstr"); boost::container::wstring boost_wstr(L"boost_wstr"); BOOST_CHECK(boost::lexical_cast(boost_wstr) == L"boost_wstr"); BOOST_CHECK(boost::lexical_cast(std_wstr) == L"std_wstr"); #endif } void testing_boost_containers_string_widening() { const char char_array[] = "Test string"; #ifndef BOOST_LCAST_NO_WCHAR_T const wchar_t wchar_array[] = L"Test string"; BOOST_CHECK(boost::lexical_cast(char_array) == wchar_array); #endif #if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES) const char16_t char16_array[] = u"Test string"; BOOST_CHECK(boost::lexical_cast >(char_array) == char16_array); #endif #if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS) && defined(BOOST_STL_SUPPORTS_NEW_UNICODE_LOCALES) const char32_t char32_array[] = U"Test string"; BOOST_CHECK(boost::lexical_cast >(char_array) == char32_array); #endif }