locale_string_cat.pass.cpp revision c0d0cbad9ed434267a7af9531bdeeae52eb6d706
19085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org//===----------------------------------------------------------------------===// 29085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org// 39085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org// The LLVM Compiler Infrastructure 45ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// 55ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// This file is dual licensed under the MIT and the University of Illinois Open 65ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// Source Licenses. See LICENSE.TXT for details. 75ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// 89085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org//===----------------------------------------------------------------------===// 99085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 109085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org// <locale> 119085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 129085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org// locale(const locale& other, const string& std_name, category cat); 139085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 149085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <locale> 159085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <new> 169085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <cassert> 179085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 189085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include "../../../../platform_support.h" // locale name macros 199085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 209085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgint new_called = 0; 219085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 229085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgvoid* operator new(std::size_t s) throw(std::bad_alloc) 239085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org{ 249085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org ++new_called; 259085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org return std::malloc(s); 269085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 279085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 289085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgvoid operator delete(void* p) throw() 299085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org{ 309085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org --new_called; 319085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org std::free(p); 329085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 3356454717593e7552d6846198b8e0f661fa36a3cayangguo@chromium.org 349085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgvoid check(const std::locale& loc) 359085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org{ 369085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert(std::has_facet<std::collate<char> >(loc)); 379085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert(std::has_facet<std::collate<wchar_t> >(loc)); 389085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 399085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert(std::has_facet<std::ctype<char> >(loc)); 40196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org assert(std::has_facet<std::ctype<wchar_t> >(loc)); 41c4c927273ae2b690c4a015b4640a2a469c9a1a69ager@chromium.org assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc))); 4271affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.org assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc))); 4371affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.org assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc))); 449085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc))); 45e2902be65446e26fd63a3b4eab2f14257cf4ebafager@chromium.org 46e2902be65446e26fd63a3b4eab2f14257cf4ebafager@chromium.org assert((std::has_facet<std::moneypunct<char> >(loc))); 479085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::moneypunct<wchar_t> >(loc))); 489085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::money_get<char> >(loc))); 499085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::money_get<wchar_t> >(loc))); 509085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::money_put<char> >(loc))); 519085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::money_put<wchar_t> >(loc))); 529085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 539085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::numpunct<char> >(loc))); 549085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::numpunct<wchar_t> >(loc))); 559085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::num_get<char> >(loc))); 569085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::num_get<wchar_t> >(loc))); 579085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::num_put<char> >(loc))); 589085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::num_put<wchar_t> >(loc))); 599085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 609085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::time_get<char> >(loc))); 619085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::time_get<wchar_t> >(loc))); 629085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::time_put<char> >(loc))); 639085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::time_put<wchar_t> >(loc))); 649085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 659085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::messages<char> >(loc))); 669085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert((std::has_facet<std::messages<wchar_t> >(loc))); 679085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 689085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 699085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgint main() 70a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org{ 71a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { 72a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::locale loc(LOCALE_ru_RU_UTF_8); 73a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org check(loc); 74b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org std::locale loc2(loc, std::string(LOCALE_en_US_UTF_8), std::locale::monetary); 75a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org check(loc2); 76935a7790c70d49e252069bc2d34eaa72f8c6677fmachenbach@chromium.org } 77a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org assert(new_called == 0); 78a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org} 79a6bbcc801f63c451f814d6da77a1a48fba3d36c6yangguo@chromium.org