Commit Terje's changes

[SVN r17982]
This commit is contained in:
Dave Abrahams
2003-03-18 23:55:14 +00:00
parent aad1bfda73
commit 62014cf4b6
2 changed files with 19 additions and 41 deletions

View File

@@ -18,7 +18,7 @@
#include <typeinfo> #include <typeinfo>
#include <boost/config.hpp> #include <boost/config.hpp>
#include <boost/limits.hpp> #include <boost/limits.hpp>
#include <boost/type_traits.hpp> #include <boost/type_traits/is_pointer.hpp>
#ifdef BOOST_NO_STRINGSTREAM #ifdef BOOST_NO_STRINGSTREAM
#include <strstream> #include <strstream>
@@ -28,10 +28,15 @@
#if defined(BOOST_NO_STRINGSTREAM) || \ #if defined(BOOST_NO_STRINGSTREAM) || \
defined(BOOST_NO_STD_WSTRING) || \ defined(BOOST_NO_STD_WSTRING) || \
defined(BOOST_NO_INTRINSIC_WCHAR_T) defined(BOOST_NO_STD_LOCALE) || \
defined(BOOST_NO_CWCHAR)
#define DISABLE_WIDE_CHAR_SUPPORT #define DISABLE_WIDE_CHAR_SUPPORT
#endif #endif
#ifdef BOOST_NO_INTRINSIC_WCHAR_T
#include <cwchar>
#endif
namespace boost namespace boost
{ {
// exception used to indicate runtime lexical_cast failure // exception used to indicate runtime lexical_cast failure
@@ -169,6 +174,8 @@ namespace boost
#if defined(BOOST_NO_STRINGSTREAM) #if defined(BOOST_NO_STRINGSTREAM)
std::strstream stream; std::strstream stream;
#elif defined(BOOST_NO_STD_LOCALE)
std::stringstream stream;
#else #else
std::basic_stringstream<char_type> stream; std::basic_stringstream<char_type> stream;
#endif #endif

View File

@@ -13,7 +13,7 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
#pragma warning(disable: 383 488 981 1418 1419) #pragma warning(disable: 193 383 488 981 1418 1419)
#elif defined(BOOST_MSVC) #elif defined(BOOST_MSVC)
#pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800) #pragma warning(disable: 4097 4100 4121 4127 4146 4244 4245 4511 4512 4701 4800)
#endif #endif
@@ -21,10 +21,12 @@
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include <boost/test/floating_point_comparison.hpp> #include <boost/test/floating_point_comparison.hpp>
#include <boost/test/included/unit_test_framework.hpp> #include <boost/test/included/unit_test_framework.hpp>
#include <boost/detail/workaround.hpp>
#if defined(BOOST_NO_STRINGSTREAM) || \ #if defined(BOOST_NO_STRINGSTREAM) || \
defined(BOOST_NO_STD_WSTRING) || \ defined(BOOST_NO_STD_WSTRING) || \
defined(BOOST_NO_INTRINSIC_WCHAR_T) defined(BOOST_NO_STD_LOCALE) || \
defined(BOOST_NO_CWCHAR)
#define DISABLE_WIDE_CHAR_SUPPORT #define DISABLE_WIDE_CHAR_SUPPORT
#endif #endif
@@ -74,10 +76,6 @@ void test_conversion_to_char()
BOOST_CHECK_EQUAL(' ', lexical_cast<char>(" ")); BOOST_CHECK_EQUAL(' ', lexical_cast<char>(" "));
BOOST_CHECK_THROW(lexical_cast<char>(""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<char>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<char>("Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<char>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL('A', lexical_cast<char>("A"));
BOOST_CHECK_EQUAL(' ', lexical_cast<char>(" "));
BOOST_CHECK_THROW(lexical_cast<char>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<char>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL('A', lexical_cast<char>(std::string("A"))); BOOST_CHECK_EQUAL('A', lexical_cast<char>(std::string("A")));
BOOST_CHECK_EQUAL(' ', lexical_cast<char>(std::string(" "))); BOOST_CHECK_EQUAL(' ', lexical_cast<char>(std::string(" ")));
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
@@ -108,8 +106,6 @@ void test_conversion_to_int()
BOOST_CHECK_THROW(lexical_cast<int>(""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<int>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>("Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<int>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(123, lexical_cast<int>("123")); BOOST_CHECK_EQUAL(123, lexical_cast<int>("123"));
BOOST_CHECK_THROW(lexical_cast<int>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(123,lexical_cast<int>(std::string("123"))); BOOST_CHECK_EQUAL(123,lexical_cast<int>(std::string("123")));
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
lexical_cast<int>(std::string(" 123")), boost::bad_lexical_cast); lexical_cast<int>(std::string(" 123")), boost::bad_lexical_cast);
@@ -134,9 +130,6 @@ void test_conversion_to_double()
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>("1.23")); BOOST_CHECK_EQUAL(1.23, lexical_cast<double>("1.23"));
BOOST_CHECK_THROW(lexical_cast<double>(""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<double>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>("Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<double>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>("1.23"));
BOOST_CHECK_THROW(lexical_cast<double>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(std::string("1.23"))); BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(std::string("1.23")));
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
lexical_cast<double>(std::string("")), boost::bad_lexical_cast); lexical_cast<double>(std::string("")), boost::bad_lexical_cast);
@@ -162,8 +155,6 @@ void test_conversion_to_bool()
BOOST_CHECK_THROW(lexical_cast<bool>("Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<bool>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>("1")); BOOST_CHECK_EQUAL(true, lexical_cast<bool>("1"));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>("0")); BOOST_CHECK_EQUAL(false, lexical_cast<bool>("0"));
BOOST_CHECK_THROW(lexical_cast<bool>(""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>("Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(std::string("1"))); BOOST_CHECK_EQUAL(true, lexical_cast<bool>(std::string("1")));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(std::string("0"))); BOOST_CHECK_EQUAL(false, lexical_cast<bool>(std::string("0")));
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
@@ -184,9 +175,6 @@ void test_conversion_to_string()
BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>("Test")); BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>("Test"));
BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(" ")); BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(" "));
BOOST_CHECK_EQUAL("", lexical_cast<std::string>("")); BOOST_CHECK_EQUAL("", lexical_cast<std::string>(""));
BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>("Test"));
BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(" "));
BOOST_CHECK_EQUAL("", lexical_cast<std::string>(""));
BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>(std::string("Test"))); BOOST_CHECK_EQUAL("Test", lexical_cast<std::string>(std::string("Test")));
BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(std::string(" "))); BOOST_CHECK_EQUAL(" ", lexical_cast<std::string>(std::string(" ")));
BOOST_CHECK_EQUAL("", lexical_cast<std::string>(std::string(""))); BOOST_CHECK_EQUAL("", lexical_cast<std::string>(std::string("")));
@@ -206,9 +194,6 @@ void test_conversion_from_wchar_t()
BOOST_CHECK_EQUAL(1, lexical_cast<int>(L'1')); BOOST_CHECK_EQUAL(1, lexical_cast<int>(L'1'));
BOOST_CHECK_THROW(lexical_cast<int>(L'A'), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<int>(L'A'), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(123, lexical_cast<int>(L"123"));
BOOST_CHECK_THROW(lexical_cast<int>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>(L"Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(123, lexical_cast<int>(L"123")); BOOST_CHECK_EQUAL(123, lexical_cast<int>(L"123"));
BOOST_CHECK_THROW(lexical_cast<int>(L""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<int>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<int>(L"Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<int>(L"Test"), boost::bad_lexical_cast);
@@ -216,9 +201,6 @@ void test_conversion_from_wchar_t()
BOOST_CHECK_EQUAL(1.0, lexical_cast<double>(L'1')); BOOST_CHECK_EQUAL(1.0, lexical_cast<double>(L'1'));
BOOST_CHECK_THROW(lexical_cast<double>(L'A'), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<double>(L'A'), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(L"1.23"));
BOOST_CHECK_THROW(lexical_cast<double>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>(L"Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(L"1.23")); BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(L"1.23"));
BOOST_CHECK_THROW(lexical_cast<double>(L""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<double>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<double>(L"Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<double>(L"Test"), boost::bad_lexical_cast);
@@ -230,10 +212,6 @@ void test_conversion_from_wchar_t()
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(L"0")); BOOST_CHECK_EQUAL(false, lexical_cast<bool>(L"0"));
BOOST_CHECK_THROW(lexical_cast<bool>(L""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<bool>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(L"Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<bool>(L"Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(L"1"));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(L"0"));
BOOST_CHECK_THROW(lexical_cast<bool>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<bool>(L"Test"), boost::bad_lexical_cast);
#endif #endif
} }
@@ -242,7 +220,9 @@ void test_conversion_to_wchar_t()
#ifndef DISABLE_WIDE_CHAR_SUPPORT #ifndef DISABLE_WIDE_CHAR_SUPPORT
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(1)); BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(1));
BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(0)); BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(0));
#if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1200))
BOOST_CHECK_THROW(lexical_cast<wchar_t>(123), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<wchar_t>(123), boost::bad_lexical_cast);
#endif
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(1.0)); BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(1.0));
BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(0.0)); BOOST_CHECK_EQUAL(L'0', lexical_cast<wchar_t>(0.0));
BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(true)); BOOST_CHECK_EQUAL(L'1', lexical_cast<wchar_t>(true));
@@ -252,18 +232,18 @@ void test_conversion_to_wchar_t()
BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(L"A")); BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(L"A"));
BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(L" ")); BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(L" "));
BOOST_CHECK_THROW(lexical_cast<wchar_t>(L""), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<wchar_t>(L""), boost::bad_lexical_cast);
#if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1200))
BOOST_CHECK_THROW(lexical_cast<wchar_t>(L"Test"), boost::bad_lexical_cast); BOOST_CHECK_THROW(lexical_cast<wchar_t>(L"Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(L"A")); #endif
BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(L" "));
BOOST_CHECK_THROW(lexical_cast<wchar_t>(L""), boost::bad_lexical_cast);
BOOST_CHECK_THROW(lexical_cast<wchar_t>(L"Test"), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(std::wstring(L"A"))); BOOST_CHECK_EQUAL(L'A', lexical_cast<wchar_t>(std::wstring(L"A")));
BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(std::wstring(L" "))); BOOST_CHECK_EQUAL(L' ', lexical_cast<wchar_t>(std::wstring(L" ")));
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
lexical_cast<wchar_t>(std::wstring(L"")), boost::bad_lexical_cast); lexical_cast<wchar_t>(std::wstring(L"")), boost::bad_lexical_cast);
#if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1200))
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
lexical_cast<wchar_t>(std::wstring(L"Test")), boost::bad_lexical_cast); lexical_cast<wchar_t>(std::wstring(L"Test")), boost::bad_lexical_cast);
#endif #endif
#endif
} }
void test_conversion_from_wstring() void test_conversion_from_wstring()
@@ -275,12 +255,6 @@ void test_conversion_from_wstring()
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
lexical_cast<int>(std::wstring(L"Test")), boost::bad_lexical_cast); lexical_cast<int>(std::wstring(L"Test")), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(1.23, lexical_cast<double>(std::wstring(L"1.23")));
BOOST_CHECK_THROW(
lexical_cast<double>(std::wstring(L"")), boost::bad_lexical_cast);
BOOST_CHECK_THROW(
lexical_cast<double>(std::wstring(L"Test")), boost::bad_lexical_cast);
BOOST_CHECK_EQUAL(true, lexical_cast<bool>(std::wstring(L"1"))); BOOST_CHECK_EQUAL(true, lexical_cast<bool>(std::wstring(L"1")));
BOOST_CHECK_EQUAL(false, lexical_cast<bool>(std::wstring(L"0"))); BOOST_CHECK_EQUAL(false, lexical_cast<bool>(std::wstring(L"0")));
BOOST_CHECK_THROW( BOOST_CHECK_THROW(
@@ -303,9 +277,6 @@ void test_conversion_to_wstring()
BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(L"Test")); BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(L"Test"));
BOOST_CHECK(L" " == lexical_cast<std::wstring>(L" ")); BOOST_CHECK(L" " == lexical_cast<std::wstring>(L" "));
BOOST_CHECK(L"" == lexical_cast<std::wstring>(L"")); BOOST_CHECK(L"" == lexical_cast<std::wstring>(L""));
BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(L"Test"));
BOOST_CHECK(L" " == lexical_cast<std::wstring>(L" "));
BOOST_CHECK(L"" == lexical_cast<std::wstring>(L""));
BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(std::wstring(L"Test"))); BOOST_CHECK(L"Test" == lexical_cast<std::wstring>(std::wstring(L"Test")));
BOOST_CHECK(L" " == lexical_cast<std::wstring>(std::wstring(L" "))); BOOST_CHECK(L" " == lexical_cast<std::wstring>(std::wstring(L" ")));
BOOST_CHECK(L"" == lexical_cast<std::wstring>(std::wstring(L""))); BOOST_CHECK(L"" == lexical_cast<std::wstring>(std::wstring(L"")));