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