// Copyright (c) 2001-2010 Hartmut Kaiser // // 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) #if !defined(BOOST_SPIRIT_TEST_AUTO_HPP) #define BOOST_SPIRIT_TEST_AUTO_HPP #include #include #include #include #include #include #include #include #include #include #include #include "test.hpp" namespace karma = boost::spirit::karma; namespace traits = boost::spirit::traits; /////////////////////////////////////////////////////////////////////////////// template bool test_create_generator(Char const *expected, T const& t) { std::basic_string generated; std::back_insert_iterator > sink(generated); BOOST_TEST((traits::meta_create_exists::value)); bool result = karma::generate(sink, karma::create_generator(), t); spirit_test::print_if_failed("test_create_generator", result, generated, expected); return result && generated == expected; } template bool test_create_generator_auto(Char const *expected, T const& t) { std::basic_string generated; std::back_insert_iterator > sink(generated); BOOST_TEST((traits::meta_create_exists::value)); bool result = karma::generate(sink, t); spirit_test::print_if_failed("test_create_generator (auto)", result, generated, expected); return result && generated == expected; } template bool test_rule(Char const *expected, Attribute const& attr) { BOOST_TEST((traits::meta_create_exists::value)); typedef typename spirit_test::output_iterator::type sink_type; karma::rule r = karma::create_generator(); return spirit_test::test(expected, r, attr); } template bool test_rule_delimited(Char const *expected, Attribute const& attr , Delimiter const& d) { BOOST_TEST((traits::meta_create_exists::value)); typedef typename spirit_test::output_iterator::type sink_type; karma::rule r = karma::create_generator(); return spirit_test::test_delimited(expected, r, attr, d); } struct my_type {}; #endif