Author: sebor
Date: Thu May 15 18:22:17 2008
New Revision: 656916

URL: http://svn.apache.org/viewvc?rev=656916&view=rev
Log:
2008-05-15  Martin Sebor  <[EMAIL PROTECTED]>

        * tests/regress/18.limits.stdcxx-937.cpp: Added a regression
        test for STDCXX-937.

Added:
    stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp   (with props)

Added: stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp?rev=656916&view=auto
==============================================================================
--- stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp (added)
+++ stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp Thu May 15 
18:22:17 2008
@@ -0,0 +1,135 @@
+/************************************************************************
+ *
+ * 18.limits.stdcxx-937.cpp - test case for STDCXX-937
+ *
+ * $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 <cassert>
+#include <limits>
+
+int main()
+{
+    // work extra hard to prevent aggressive optimizers from
+    // optimizing the code away on the assumption that no
+    // object has a null address
+    const void* const fmemaddr[] = {
+        &std::numeric_limits<float>::is_specialized,
+        &std::numeric_limits<float>::digits,
+        &std::numeric_limits<float>::digits10,
+
+        &std::numeric_limits<float>::is_signed,
+        &std::numeric_limits<float>::is_integer,
+        &std::numeric_limits<float>::is_exact,
+        &std::numeric_limits<float>:: radix,
+
+        &std::numeric_limits<float>::min_exponent,
+        &std::numeric_limits<float>::min_exponent10,
+        &std::numeric_limits<float>::max_exponent,
+        &std::numeric_limits<float>::max_exponent10,
+
+        &std::numeric_limits<float>::has_infinity,
+        &std::numeric_limits<float>::has_quiet_NaN,
+        &std::numeric_limits<float>::has_signaling_NaN,
+        &std::numeric_limits<float>::has_denorm,
+        &std::numeric_limits<float>::has_denorm_loss,
+
+        &std::numeric_limits<float>::is_iec559,
+        &std::numeric_limits<float>::is_bounded,
+        &std::numeric_limits<float>::is_modulo,
+
+        &std::numeric_limits<float>::traps,
+        &std::numeric_limits<float>::tinyness_before,
+
+        &std::numeric_limits<float>::round_style
+    };
+
+    const void* const memaddr[] = {
+        &std::numeric_limits<double>::is_specialized,
+        &std::numeric_limits<double>::digits,
+        &std::numeric_limits<double>::digits10,
+
+        &std::numeric_limits<double>::is_signed,
+        &std::numeric_limits<double>::is_integer,
+        &std::numeric_limits<double>::is_exact,
+        &std::numeric_limits<double>:: radix,
+
+        &std::numeric_limits<double>::min_exponent,
+        &std::numeric_limits<double>::min_exponent10,
+        &std::numeric_limits<double>::max_exponent,
+        &std::numeric_limits<double>::max_exponent10,
+
+        &std::numeric_limits<double>::has_infinity,
+        &std::numeric_limits<double>::has_quiet_NaN,
+        &std::numeric_limits<double>::has_signaling_NaN,
+        &std::numeric_limits<double>::has_denorm,
+        &std::numeric_limits<double>::has_denorm_loss,
+
+        &std::numeric_limits<double>::is_iec559,
+        &std::numeric_limits<double>::is_bounded,
+        &std::numeric_limits<double>::is_modulo,
+
+        &std::numeric_limits<double>::traps,
+        &std::numeric_limits<double>::tinyness_before,
+
+        &std::numeric_limits<double>::round_style
+    };
+
+    const void* const ldmemaddr[] = {
+        &std::numeric_limits<long double>::is_specialized,
+        &std::numeric_limits<long double>::digits,
+        &std::numeric_limits<long double>::digits10,
+
+        &std::numeric_limits<long double>::is_signed,
+        &std::numeric_limits<long double>::is_integer,
+        &std::numeric_limits<long double>::is_exact,
+        &std::numeric_limits<long double>:: radix,
+
+        &std::numeric_limits<long double>::min_exponent,
+        &std::numeric_limits<long double>::min_exponent10,
+        &std::numeric_limits<long double>::max_exponent,
+        &std::numeric_limits<long double>::max_exponent10,
+
+        &std::numeric_limits<long double>::has_infinity,
+        &std::numeric_limits<long double>::has_quiet_NaN,
+        &std::numeric_limits<long double>::has_signaling_NaN,
+        &std::numeric_limits<long double>::has_denorm,
+        &std::numeric_limits<long double>::has_denorm_loss,
+
+        &std::numeric_limits<long double>::is_iec559,
+        &std::numeric_limits<long double>::is_bounded,
+        &std::numeric_limits<long double>::is_modulo,
+
+        &std::numeric_limits<long double>::traps,
+        &std::numeric_limits<long double>::tinyness_before,
+
+        &std::numeric_limits<long double>::round_style
+    };
+
+    for (unsigned i = 0; i != sizeof memaddr / sizeof *memaddr; ++i) {
+        assert (fmemaddr [i] != 0);
+        assert (memaddr [i] != 0);
+        assert (ldmemaddr [i] != 0);
+    }
+
+    return 0;
+}

Propchange: stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: stdcxx/branches/4.2.x/tests/regress/18.limits.stdcxx-937.cpp
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to