/*============================================================================= Copyright (c) 2014 Joel de Guzman 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_X3_TESTING_JUNE_05_2014_00422PM) #define BOOST_SPIRIT_X3_TESTING_JUNE_05_2014_00422PM namespace boost { namespace spirit { namespace x3 { namespace testing { //////////////////////////////////////////////////////////////////////////// // // Test utility // // The test function accepts a file loaded in memory. The 'test_file' // range param points to the data contained in the file. This file // contains two parts. // // 1) The source input for testing // 2) The expected result. // // The first part of the file is sent to the generator function // 'gen' which returns a string. This generated string is then compared // to the contents of the second (expected result) part. // // The second part is demarcated by the string parameter 'demarcation' // which defaults to "<**expected**>". The expected template may include // embedded regular expressions marked-up within re_prefix and re_suffix // parameter tags. For example, given the default RE markup ("<%" and // "%>"), this template: // // <%[0-9]+%> // // will match any integer in the source input being tested. The function // will return the first non-matching position. The flag full_match // indicates a full match. It is possible for returned pos to be // at the end of in (in.end()) while still returning full_match == // false. In that case, we have a partial match. // // Here's an example of a test file: // // Hello World, I am Joel. This is a test. // // <**expected**> // Hello World, I am <%[a-zA-Z]+%>. This is a test. // //////////////////////////////////////////////////////////////////////////// template struct test_result { Iterator pos; bool full_match; }; template test_result test( Range test_file , F gen , char const* demarcation = "<**expected**>" , char const* re_prefix = "<%" , char const* re_suffix = "%>" ); }}}} #endif