$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r85511 - in branches/release: boost libs/any libs/any/test
From: antoshkka_at_[hidden]
Date: 2013-08-29 07:30:58
Author: apolukhin
Date: 2013-08-29 07:30:58 EDT (Thu, 29 Aug 2013)
New Revision: 85511
URL: http://svn.boost.org/trac/boost/changeset/85511
Log:
Merge tests of Boost.Any from trunk (refs #6999)
Added:
   branches/release/libs/any/test/any_test_cv_to_rv_failed.cpp
      - copied unchanged from r85233, trunk/libs/any/test/any_test_cv_to_rv_failed.cpp
   branches/release/libs/any/test/any_test_temporary_to_ref_failed.cpp
      - copied unchanged from r85233, trunk/libs/any/test/any_test_temporary_to_ref_failed.cpp
Properties modified: 
   branches/release/boost/any.hpp   (props changed)
   branches/release/libs/any/   (props changed)
Text files modified: 
   branches/release/libs/any/any_test.cpp                              |    42 ++++++++++++++++++++++++++++++--------- 
   branches/release/libs/any/test/Jamfile.v2                           |     2 +                                       
   branches/release/libs/any/test/any_test_cv_to_rv_failed.cpp         |    39 +++++++++++++++++++++++++++++++++++++   
   branches/release/libs/any/test/any_test_temporary_to_ref_failed.cpp |    38 ++++++++++++++++++++++++++++++++++++    
   4 files changed, 111 insertions(+), 10 deletions(-)
Modified: branches/release/libs/any/any_test.cpp
==============================================================================
--- branches/release/libs/any/any_test.cpp	Thu Aug 29 04:39:09 2013	(r85510)
+++ branches/release/libs/any/any_test.cpp	2013-08-29 07:30:58 EDT (Thu, 29 Aug 2013)	(r85511)
@@ -1,6 +1,6 @@
 // what:  unit tests for variant type boost::any
 // who:   contributed by Kevlin Henney
-// when:  July 2001
+// when:  July 2001, 2013
 // where: tested with BCC 5.5, MSVC 6.0, and g++ 2.95
 
 #include <cstdlib>
@@ -38,6 +38,7 @@
     void test_cast_to_reference();
     void test_with_array();
     void test_with_func();
+    void test_clear();
 
     const test_case test_cases[] =
     {
@@ -51,7 +52,8 @@
         { "copying operations on a null",   test_null_copying      },
         { "cast to reference types",        test_cast_to_reference },
         { "storing an array inside",        test_with_array        },
-        { "implicit cast of returned value",test_with_func         }
+        { "implicit cast of returned value",test_with_func         },
+        { "clear() methods",                test_clear             }
     };
 
     const test_case_iterator begin = test_cases;
@@ -286,26 +288,46 @@
         std::string s;
         s = any_cast<std::string>(returning_string1());
         s = any_cast<const std::string&>(returning_string1());
-        //s = any_cast<std::string&>(returning_string1());
 
         s = any_cast<std::string>(returning_string2());
         s = any_cast<const std::string&>(returning_string2());
-        //s = any_cast<std::string&>(returning_string2());
 
-#if !defined(_MSC_VER) || _MSC_VER != 1600
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-        //s = static_cast<std::string&&>(any_cast<std::string&>(returning_string1()));
+#if (!defined(_MSC_VER) || _MSC_VER != 1600) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) 
+#if !defined(__INTEL_COMPILER) && !defined(__ICL)
+        // Intel compiler thinks that it must choose the `any_cast(const any&)` function 
+        // instead of the `any_cast(const any&&)`.
+        // Bug was not reported because of missing premier support account + annoying 
+        // registrations requirements.
         s = any_cast<std::string&&>(returning_string1());
-
-        //s = static_cast<std::string&&>(any_cast<std::string&>(returning_string2()));
-        s = any_cast<std::string&&>(returning_string2());
 #endif
+        s = any_cast<std::string&&>(returning_string2());
 #endif
     }
 
+    
+    void test_clear()
+    {
+        std::string text = "test message";
+        any value = text;
+
+        check_false(value.empty(), "empty");
+        
+        value.clear();
+        check_true(value.empty(), "non-empty after clear");
+
+        value.clear();
+        check_true(value.empty(), "non-empty after second clear");
+
+        value = text;
+        check_false(value.empty(), "empty");
+        
+        value.clear();
+        check_true(value.empty(), "non-empty after clear");
+    }
 }
 
 // Copyright Kevlin Henney, 2000, 2001. All rights reserved.
+// Copyright Antony Polukhin, 2013.
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at
Modified: branches/release/libs/any/test/Jamfile.v2
==============================================================================
--- branches/release/libs/any/test/Jamfile.v2	Thu Aug 29 04:39:09 2013	(r85510)
+++ branches/release/libs/any/test/Jamfile.v2	2013-08-29 07:30:58 EDT (Thu, 29 Aug 2013)	(r85511)
@@ -10,6 +10,8 @@
     [ run ../any_test.cpp ]
     [ run any_test_rv.cpp ]
     [ compile-fail any_cast_cv_failed.cpp ]
+    [ compile-fail any_test_temporary_to_ref_failed.cpp ]
+    [ compile-fail any_test_cv_to_rv_failed.cpp ]
     ;
 
 
Copied: branches/release/libs/any/test/any_test_cv_to_rv_failed.cpp (from r85233, trunk/libs/any/test/any_test_cv_to_rv_failed.cpp)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/release/libs/any/test/any_test_cv_to_rv_failed.cpp	2013-08-29 07:30:58 EDT (Thu, 29 Aug 2013)	(r85511, copy of r85233, trunk/libs/any/test/any_test_cv_to_rv_failed.cpp)
@@ -0,0 +1,39 @@
+//  Unit test for boost::any.
+//
+//  See http://www.boost.org for most recent version, including documentation.
+//
+//  Copyright Antony Polukhin, 2013.
+//
+//  Distributed under the Boost
+//  Software License, Version 1.0. (See accompanying file
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).
+
+#include <cstdlib>
+#include <string>
+#include <utility>
+
+#include "boost/any.hpp"
+#include "../test.hpp"
+#include <boost/move/move.hpp>
+
+#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
+
+int main() 
+{
+    BOOST_STATIC_ASSERT(false);
+    return EXIT_SUCCESS;
+}
+
+#else 
+
+
+int main()
+{
+    boost::any const cvalue(10);
+    int i = boost::any_cast<int&&>(cvalue);
+    (void)i;
+    return EXIT_SUCCESS;
+}
+
+#endif
+
Copied: branches/release/libs/any/test/any_test_temporary_to_ref_failed.cpp (from r85233, trunk/libs/any/test/any_test_temporary_to_ref_failed.cpp)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/release/libs/any/test/any_test_temporary_to_ref_failed.cpp	2013-08-29 07:30:58 EDT (Thu, 29 Aug 2013)	(r85511, copy of r85233, trunk/libs/any/test/any_test_temporary_to_ref_failed.cpp)
@@ -0,0 +1,38 @@
+//  Unit test for boost::any.
+//
+//  See http://www.boost.org for most recent version, including documentation.
+//
+//  Copyright Antony Polukhin, 2013.
+//
+//  Distributed under the Boost
+//  Software License, Version 1.0. (See accompanying file
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).
+
+#include <cstdlib>
+#include <string>
+#include <utility>
+
+#include "boost/any.hpp"
+#include "../test.hpp"
+#include <boost/move/move.hpp>
+
+#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
+
+int main() 
+{
+    BOOST_STATIC_ASSERT(false);
+    return EXIT_SUCCESS;
+}
+
+#else 
+
+
+int main()
+{
+    int i = boost::any_cast<int&>(10);
+    (void)i;
+    return EXIT_SUCCESS;
+}
+
+#endif
+