$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r50710 - trunk/libs/scope_exit/test
From: Alexander.Nasonov_at_[hidden]
Date: 2009-01-21 15:03:11
Author: nasonov
Date: 2009-01-21 15:03:11 EST (Wed, 21 Jan 2009)
New Revision: 50710
URL: http://svn.boost.org/trac/boost/changeset/50710
Log:
Pass-by-value tests.
Text files modified: 
   trunk/libs/scope_exit/test/native.cpp |    49 +++++++++++++++++++++++++++++++++++++++ 
   1 files changed, 48 insertions(+), 1 deletions(-)
Modified: trunk/libs/scope_exit/test/native.cpp
==============================================================================
--- trunk/libs/scope_exit/test/native.cpp	(original)
+++ trunk/libs/scope_exit/test/native.cpp	2009-01-21 15:03:11 EST (Wed, 21 Jan 2009)
@@ -31,6 +31,20 @@
     // ... and one local variable as well:
     int i = 0;
 
+    BOOST_SCOPE_EXIT( (i) )
+    {
+        BOOST_CHECK(i == 0);
+        BOOST_CHECK(Holder<>::g_long == 3);
+        BOOST_CHECK(g_str == "try: g_str");
+    } BOOST_SCOPE_EXIT_END
+
+    BOOST_SCOPE_EXIT( (&i) )
+    {
+        BOOST_CHECK(i == 3);
+        BOOST_CHECK(Holder<>::g_long == 3);
+        BOOST_CHECK(g_str == "try: g_str");
+    } BOOST_SCOPE_EXIT_END
+
     {
         g_str = "";
         Holder<>::g_long = 1;
@@ -60,6 +74,20 @@
     BOOST_CHECK(g_str == "g_str");
     BOOST_CHECK(i == 1); // Check that first declared is executed last
 
+    BOOST_SCOPE_EXIT( (&i) )
+    {
+        BOOST_CHECK(i == 3);
+        BOOST_CHECK(Holder<>::g_long == 3);
+        BOOST_CHECK(g_str == "try: g_str");
+    } BOOST_SCOPE_EXIT_END
+
+    BOOST_SCOPE_EXIT( (i) )
+    {
+        BOOST_CHECK(i == 1);
+        BOOST_CHECK(Holder<>::g_long == 3);
+        BOOST_CHECK(g_str == "try: g_str");
+    } BOOST_SCOPE_EXIT_END
+
     try
     {
         BOOST_SCOPE_EXIT( (&i) )
@@ -95,7 +123,7 @@
 
 void test_types()
 {
-    bool (*pf)() = &foo;
+    bool (*pf)() = 0;
     bool (&rf)() = foo;
     bool results[2] = {};
 
@@ -107,12 +135,31 @@
         }
         BOOST_SCOPE_EXIT_END
 
+        pf = &foo;
+
         BOOST_CHECK(results[0] == false);
         BOOST_CHECK(results[1] == false);
     }
 
     BOOST_CHECK(results[0] == true);
     BOOST_CHECK(results[1] == true);
+
+    {
+        BOOST_SCOPE_EXIT( (&results)(pf) )
+        {
+            results[0] = !pf();
+            results[1] = !pf();
+        }
+        BOOST_SCOPE_EXIT_END
+
+        pf = 0;
+
+        BOOST_CHECK(results[0] == true);
+        BOOST_CHECK(results[1] == true);
+    }
+
+    BOOST_CHECK(results[0] == false);
+    BOOST_CHECK(results[1] == false);
 }
 
 test_suite* init_unit_test_suite( int, char* [] )