string.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===// 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// ��������������������The LLVM Compiler Infrastructure 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// License. See LICENSE.TXT for details. 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)//===----------------------------------------------------------------------===// 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// <locale> 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// explicit locale(const string& std_name); 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <locale> 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <new> 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <cassert> 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int new_called = 0; 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void* operator new(std::size_t s) throw(std::bad_alloc) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++new_called; 2353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return std::malloc(s); 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 25c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void operator delete(void* p) throw() 275d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles){ 2851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) --new_called; 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) std::free(p); 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 325d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)void check(const std::locale& loc) 335d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles){ 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) assert(std::has_facet<std::collate<char> >(loc)); 35 assert(std::has_facet<std::collate<wchar_t> >(loc)); 36 37 assert(std::has_facet<std::ctype<char> >(loc)); 38 assert(std::has_facet<std::ctype<wchar_t> >(loc)); 39 assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc))); 40 assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc))); 41 assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc))); 42 assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc))); 43 44 assert((std::has_facet<std::moneypunct<char> >(loc))); 45 assert((std::has_facet<std::moneypunct<wchar_t> >(loc))); 46 assert((std::has_facet<std::money_get<char> >(loc))); 47 assert((std::has_facet<std::money_get<wchar_t> >(loc))); 48 assert((std::has_facet<std::money_put<char> >(loc))); 49 assert((std::has_facet<std::money_put<wchar_t> >(loc))); 50 51 assert((std::has_facet<std::numpunct<char> >(loc))); 52 assert((std::has_facet<std::numpunct<wchar_t> >(loc))); 53 assert((std::has_facet<std::num_get<char> >(loc))); 54 assert((std::has_facet<std::num_get<wchar_t> >(loc))); 55 assert((std::has_facet<std::num_put<char> >(loc))); 56 assert((std::has_facet<std::num_put<wchar_t> >(loc))); 57 58 assert((std::has_facet<std::time_get<char> >(loc))); 59 assert((std::has_facet<std::time_get<wchar_t> >(loc))); 60 assert((std::has_facet<std::time_put<char> >(loc))); 61 assert((std::has_facet<std::time_put<wchar_t> >(loc))); 62 63 assert((std::has_facet<std::messages<char> >(loc))); 64 assert((std::has_facet<std::messages<wchar_t> >(loc))); 65} 66 67int main() 68{ 69 { 70 std::locale loc(std::string("ru_RU")); 71 check(loc); 72 std::locale loc2(std::string("ru_RU")); 73 check(loc2); 74 assert(loc == loc2); 75 std::locale loc3(std::string("zh_CN")); 76 check(loc3); 77 assert(!(loc == loc3)); 78 assert(loc != loc3); 79 } 80 assert(new_called == 0); 81} 82