//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // wstring to_wstring(int val); // wstring to_wstring(unsigned val); // wstring to_wstring(long val); // wstring to_wstring(unsigned long val); // wstring to_wstring(long long val); // wstring to_wstring(unsigned long long val); // wstring to_wstring(float val); // wstring to_wstring(double val); // wstring to_wstring(long double val); #include #include #include template void test_signed() { { std::wstring s = std::to_wstring(T(0)); assert(s.size() == 1); assert(s[s.size()] == 0); assert(s == L"0"); } { std::wstring s = std::to_wstring(T(12345)); assert(s.size() == 5); assert(s[s.size()] == 0); assert(s == L"12345"); } { std::wstring s = std::to_wstring(T(-12345)); assert(s.size() == 6); assert(s[s.size()] == 0); assert(s == L"-12345"); } { std::wstring s = std::to_wstring(std::numeric_limits::max()); assert(s.size() == std::numeric_limits::digits10 + 1); std::wistringstream is(s); T t(0); is >> t; assert(t == std::numeric_limits::max()); } { std::wstring s = std::to_wstring(std::numeric_limits::min()); std::wistringstream is(s); T t(0); is >> t; assert(t == std::numeric_limits::min()); } } template void test_unsigned() { { std::wstring s = std::to_wstring(T(0)); assert(s.size() == 1); assert(s[s.size()] == 0); assert(s == L"0"); } { std::wstring s = std::to_wstring(T(12345)); assert(s.size() == 5); assert(s[s.size()] == 0); assert(s == L"12345"); } { std::wstring s = std::to_wstring(std::numeric_limits::max()); assert(s.size() == std::numeric_limits::digits10 + 1); std::wistringstream is(s); T t(0); is >> t; assert(t == std::numeric_limits::max()); } } template void test_float() { { std::wstring s = std::to_wstring(T(0)); assert(s.size() == 8); assert(s[s.size()] == 0); assert(s == L"0.000000"); } { std::wstring s = std::to_wstring(T(12345)); assert(s.size() == 12); assert(s[s.size()] == 0); assert(s == L"12345.000000"); } { std::wstring s = std::to_wstring(T(-12345)); assert(s.size() == 13); assert(s[s.size()] == 0); assert(s == L"-12345.000000"); } } int main() { test_signed(); test_signed(); test_signed(); test_unsigned(); test_unsigned(); test_unsigned(); test_float(); test_float(); test_float(); }