Author: sebor Date: Sat Sep 6 12:38:04 2008 New Revision: 692712 URL: http://svn.apache.org/viewvc?rev=692712&view=rev Log: 2008-09-06 Martin Sebor <[EMAIL PROTECTED]>
* tests/locale/22.locale.name.cpp: New test (so far superficially) exercising the interaction of the std::locale(const char*) ctor and the std::locale::name() function. Added: stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp (with props) Added: stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp?rev=692712&view=auto ============================================================================== --- stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp (added) +++ stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp Sat Sep 6 12:38:04 2008 @@ -0,0 +1,149 @@ +/*************************************************************************** + * + * 22.locale.name.cpp - test exercising std::locale::name() + * + * $Id$ + * + *************************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + * + **************************************************************************/ + +#include <cstdio> // for printf() +#include <cstring> // for strcmp() +#include <locale> // for locale + +#include <rw_driver.h> + + +void test_combined_name () +{ + const char name[] = { +#ifdef _AIX + "LC_TIME=EN_US.UTF-8;" + "LC_NUMERIC=C;" + "LC_MONETARY=en_US;" + "LC_MESSAGES=EN_US.UTF-8;" + "LC_CTYPE=C;" + "LC_COLLATE=en_US.ISO8859-1;" +#elif defined __hpux + "LC_TIME=en_US.utf8;" + "LC_NUMERIC=C;" + "LC_MONETARY=en_US.roman8;" + "LC_MESSAGES=en_US.utf8;" + "LC_CTYPE=C;" + "LC_COLLATE=en_US.iso88591;" +#elif defined __linux + "LC_TIME=en_US.utf8;" + "LC_NUMERIC=C;" + "LC_MONETARY=en_US;" + "LC_MESSAGES=en_US.utf8;" + "LC_CTYPE=C;" + "LC_COLLATE=en_US.iso88591;" +#elif defined __osf__ + "C" +#elif defined __sun + "LC_TIME=en_US.UTF-8;" + "LC_NUMERIC=C;" + "LC_MONETARY=en_US;" + "LC_MESSAGES=en_US.UTF-8;" + "LC_CTYPE=C;" + "LC_COLLATE=en_US.ISO8859-1;" +#elif defined _WIN32 + "C" +#else + "C" +#endif + }; + + const char expected_name[] = { +#ifdef _AIX + "en_US.ISO8859-1 " // LC_COLLATE + "C " // LC_CTYPE + "en_US " // LC_MONETARY + "C " // LC_NUMERIC + "EN_US.UTF-8 " // LC_TIME + "EN_US.UTF-8" // LC_MESSAGES +#elif defined __hpux + "en_US.iso88591 " // LC_COLLATE + "C " // LC_CTYPE + "en_US.roman8 " // LC_MONETARY + "C " // LC_NUMERIC + "en_US.utf8 " // LC_TIME + "en_US.utf8" // LC_MESSAGES +#elif defined __linux + "LC_CTYPE=C;" + "LC_NUMERIC=C;" + "LC_TIME=en_US.utf8;" + "LC_COLLATE=en_US.iso88591;" + "LC_MONETARY=en_US;" + "LC_MESSAGES=en_US.utf8" +#elif defined __osf__ + "" +#elif defined __sun + "/C" // LC_COLLATE + "/C" // LC_CTYPE + "/en_US.UTF-8" // LC_MONETARY + "/en_US.ISO8859-1" // LC_NUMERIC + "/en_US" // LC_TIME + "/en_US.UTF-8" // LC_MESSAGES +#elif defined _WIN32 + "C" +#else + "C" +#endif + }; + + std::locale loc; + + try { + // try to create the combined locale + loc = std::locale (name); + } + catch (...) { + rw_error (0, 0, __LINE__, + "std::locale(%#s) threw an exception\n", name); + return; + } + + // verify that the actual locale name matches the expected name + const int cmp = std::strcmp (loc.name ().c_str (), expected_name); + + rw_assert (0 == cmp, 0, __LINE__, + "std::locale(%#s).name() == %#s, got %#s", + name, expected_name, loc.name ().c_str ()); +} + + +static int +run_test (int, char**) +{ + test_combined_name (); + + return 0; +} + + +int main (int argc, char *argv[]) +{ + return rw_test (argc, argv, __FILE__, + "[lib.locale]", + "name()", // comment + run_test, "", 0); +} + Propchange: stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp ------------------------------------------------------------------------------ svn:eol-style = native Propchange: stdcxx/branches/4.2.x/tests/localization/22.locale.name.cpp ------------------------------------------------------------------------------ svn:keywords = Id