brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 7881a2b Raw
57 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// REQUIRES: locale.en_US.UTF-810// REQUIRES: locale.zh_CN.UTF-811 12// <locale>13 14// Test locale name construction for the following constructors:15// locale(const locale& other, const char* std_name, category cat);16// locale(const locale& other, const string& std_name, category cat);17// locale(const locale& other, const locale& one, category cats);18 19// This test exercises the fix for locale name construction (http://llvm.org/D119441 aka 643b7bcdb404),20// which isn't in the dylib for some systems.21// XFAIL: using-built-library-before-llvm-1722 23#include <locale>24#include <cassert>25#include "platform_support.h" // locale name macros26 27int main(int, char**) {28    std::locale en(LOCALE_en_US_UTF_8);29    std::locale zh(LOCALE_zh_CN_UTF_8);30    std::locale unnamed(std::locale(), new std::ctype<char>);31    {32        std::locale loc(unnamed, en, std::locale::time);33        assert(loc.name() == "*");34    }35    {36        std::locale loc(en, unnamed, std::locale::none);37        assert(loc.name() == "*");38    }39    {40        std::locale loc(en, "", std::locale::none);41        assert(loc.name() == en.name());42    }43    {44        std::locale loc(en, zh, std::locale::none);45        assert(loc.name() == en.name());46    }47    {48        std::locale loc(en, LOCALE_en_US_UTF_8, std::locale::time);49        assert(loc.name() == en.name());50    }51    {52        std::locale loc(en, std::string(LOCALE_en_US_UTF_8), std::locale::collate);53        assert(loc.name() == en.name());54    }55  return 0;56}57