stdcxx-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From se...@apache.org
Subject svn commit: r653287 - /stdcxx/branches/4.2.x/tests/self/0.locale.cpp
Date Mon, 05 May 2008 00:44:59 GMT
Author: sebor
Date: Sun May  4 17:44:59 2008
New Revision: 653287

URL: http://svn.apache.org/viewvc?rev=653287&view=rev
Log:
2008-05-04  Martin Sebor  <sebor@roguewave.com>

	* tests/self/0.locale.cpp: New test exercising the test driver locale
	helpers, including STDCXX-910.

Added:
    stdcxx/branches/4.2.x/tests/self/0.locale.cpp   (with props)

Added: stdcxx/branches/4.2.x/tests/self/0.locale.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/self/0.locale.cpp?rev=653287&view=auto
==============================================================================
--- stdcxx/branches/4.2.x/tests/self/0.locale.cpp (added)
+++ stdcxx/branches/4.2.x/tests/self/0.locale.cpp Sun May  4 17:44:59 2008
@@ -0,0 +1,115 @@
+/************************************************************************
+ *
+ * 0.locale.cpp - test exercising the test driver locale helpers
+ *
+ * $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.
+ *
+ * Copyright 2008 Rogue Wave Software, Inc.
+ * 
+ **************************************************************************/
+
+#include <cstdio>        // for remove()
+#include <cstdlib>       // for getenv()
+
+#include <environ.h>     // for rw_putenv()
+#include <file.h>        // for rw_fwrite()
+#include <driver.h>      // for rw_test(), etc.
+#include <rw_locale.h>   // for rw_localedef()
+#include <rw_printf.h>   // for rw_fprintf()
+
+/**************************************************************************/
+
+static int
+test_localedef ()
+{
+    // the root of the locale directory (RWSTD_LOCALE_ROOT)
+    static const char* const locale_root = rw_set_locale_root ();
+
+    static int inx;
+
+    const int id = inx++;
+
+    // create a temporary locale definition file
+    char srcfname [1024];
+    if (rw_snprintf (srcfname, sizeof srcfname, "%s%c%s.%d",
+                     locale_root, _RWSTD_PATH_SEP, "locale", id) < 0)
+        return -1;
+
+    // create a temporary character map file
+    char cmfname [1024];
+    if (rw_snprintf (cmfname, sizeof cmfname, "%s%c%s.%d.src",
+                     locale_root, _RWSTD_PATH_SEP, "charmap", id) < 0)
+        return -1;
+
+    rw_fwrite (srcfname, "LC_CTYPE\nEND LC_CTYPE\n");
+    rw_fwrite (cmfname, "CHARMAP\nEND CHARMAP\n");
+
+    const char opts[]    = "-w";
+    char locname[40];
+    rw_snprintf (locname, sizeof locname, "%s.%d", "locale", id);
+
+    // try to create the locale
+    const char* const ret =
+        rw_localedef (opts, srcfname, cmfname, locname);
+
+    const char* const topdir = std::getenv ("TOPDIR");
+
+    rw_assert (0 != ret, 0, __LINE__,
+               "rw_localedef(%s, %#s, %#s, %#s) failed with TOPDIR=%#s",
+               opts, srcfname, cmfname, locname, topdir);
+
+    // remove temporary files
+    std::remove (cmfname);
+    std::remove (srcfname);
+
+    return 0;
+}
+
+/**************************************************************************/
+
+static int
+run_test (int, char*[])
+{
+    // exercise with the default setting of TOPDIR
+    rw_error (0 == test_localedef (), 0, __LINE__, "");
+
+    // exercise with TOPDIR set but empty
+    rw_putenv ("TOPDIR=");
+    rw_error (0 == test_localedef (), 0, __LINE__, "");
+
+    // exercise with TOPDIR unset
+    rw_putenv ("TOPDIR");
+    rw_error (0 == test_localedef (), 0, __LINE__, "");
+
+    return 0;
+}
+
+/**************************************************************************/
+
+int main (int argc, char *argv[])
+{
+    return rw_test (argc, argv, __FILE__,
+                    0 /* no section */,
+                    0 /* no comment */,
+                    run_test,
+                    "",
+                    0);
+}

Propchange: stdcxx/branches/4.2.x/tests/self/0.locale.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: stdcxx/branches/4.2.x/tests/self/0.locale.cpp
------------------------------------------------------------------------------
    svn:keywords = Id



Mime
View raw message