Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56705 - trunk/libs/spirit/test/qi
From: hartmut.kaiser_at_[hidden]
Date: 2009-10-10 11:09:52


Author: hkaiser
Date: 2009-10-10 11:09:52 EDT (Sat, 10 Oct 2009)
New Revision: 56705
URL: http://svn.boost.org/trac/boost/changeset/56705

Log:
Spirit: improved fix for re-initialization of optionals, added tests
Text files modified:
   trunk/libs/spirit/test/qi/optional.cpp | 22 ++++++++++++++++++++++
   1 files changed, 22 insertions(+), 0 deletions(-)

Modified: trunk/libs/spirit/test/qi/optional.cpp
==============================================================================
--- trunk/libs/spirit/test/qi/optional.cpp (original)
+++ trunk/libs/spirit/test/qi/optional.cpp 2009-10-10 11:09:52 EDT (Sat, 10 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();
 }


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk