$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r56746 - branches/release/libs/spirit/test/qi
From: hartmut.kaiser_at_[hidden]
Date: 2009-10-12 12:46:39
Author: hkaiser
Date: 2009-10-12 12:46:39 EDT (Mon, 12 Oct 2009)
New Revision: 56746
URL: http://svn.boost.org/trac/boost/changeset/56746
Log:
Spirit: merging tests for bug fixes from trunk
Properties modified: 
   branches/release/libs/spirit/test/qi/optional.cpp   (contents, props changed)
Text files modified: 
   branches/release/libs/spirit/test/qi/optional.cpp |    22 ++++++++++++++++++++++                  
   1 files changed, 22 insertions(+), 0 deletions(-)
Modified: branches/release/libs/spirit/test/qi/optional.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/optional.cpp	(original)
+++ branches/release/libs/spirit/test/qi/optional.cpp	2009-10-12 12:46:39 EDT (Mon, 12 Oct 2009)
@@ -13,10 +13,23 @@
 #include <boost/spirit/include/support_argument.hpp>
 #include <boost/spirit/include/phoenix_core.hpp>
 #include <boost/spirit/include/phoenix_operator.hpp>
+#include <boost/fusion/adapted/struct.hpp>
 
 #include <iostream>
 #include "test.hpp"
 
+struct adata
+{
+    int a;
+    boost::optional<int> b;
+};
+
+BOOST_FUSION_ADAPT_STRUCT(
+    adata,
+    (int, a)
+    (boost::optional<int>, b)
+)
+
 int
 main()
 {
@@ -65,5 +78,14 @@
         BOOST_TEST(!n);
     }
 
+    {
+        std::vector<adata> v;
+        BOOST_TEST((test_attr("a 1 2 a 2", *("a" >> int_ >> -int_), v
+          , char_(' '))));
+        BOOST_TEST(2 == v.size() && 
+            1 == v[0].a && v[0].b && 2 == *(v[0].b) &&
+            2 == v[1].a && !v[1].b);
+    }
+
     return boost::report_errors();
 }