# copyright John Maddock 2003

subproject libs/regex/example ;

# bring in the rules for testing
import testing  ;

#
# test for MFC by looking inside VC++ include directories:
#
if ! $(gMFC_CHECK)
{
   gMFC_CHECK = true ;
   if $(VS71COMNTOOLS)
   {
      VS71COMNTOOLS = $(VS71COMNTOOLS:J=" ") ;
      if [ GLOB $(VS71COMNTOOLS)..\\..\\VC7\\atlmfc\\include : cstringt.h ]
      {
         ECHO MFC/ATL regex wrappers will be tested when building with VC7.1 ;
         REGEX_MFC_OPTS += "<vc-7_1><*><define>TEST_MFC=1" ;
      }
   }
   if $(VSCOMNTOOLS)
   {
      VSCOMNTOOLS = $(VSCOMNTOOLS:J=" ") ;
      if [ GLOB $(VSCOMNTOOLS)\\..\\..\\VC7\\atlmfc\\include : cstringt.h ]
      {
         ECHO MFC/ATL regex wrappers will be tested when building with VC7 ;
         REGEX_MFC_OPTS += "<vc7><*><define>TEST_MFC=1" ;
         REGEX_MFC_OPTS += "<vc7-stlport><*><define>TEST_MFC=1" ;
         REGEX_MFC_OPTS += "<vc-7_0><*><define>TEST_MFC=1" ;
         REGEX_MFC_OPTS += "<vc-7_0-stlport><*><define>TEST_MFC=1" ;
      }
   }
   if $(VS80COMNTOOLS)
   {
      VS80COMNTOOLS = $(VS80COMNTOOLS:J=" ") ;
      if [ GLOB $(VS80COMNTOOLS)..\\..\\VC8\\atlmfc\\include : cstringt.h ]
      {
         ECHO MFC/ATL regex wrappers will be tested when building with VC8 ;
         REGEX_MFC_OPTS += "<vc-8_0><*><define>TEST_MFC=1" ;
      }
   }
}

rule regex-test-run ( sources + : input * : requirements * )
{
        return [ 
           run
             # sources
             $(sources)
             <template>../build/regex-test-options

             # dependencies
             <lib>../build/boost_regex
         :  # additional args
            $(input)
         :  # test-files
         :  # requirements
         <threading>multi
         $(REGEX_MFC_OPTS)
         $(requirements)
         :  # test name
        ] ;
}

test-suite regex-examples :

[ regex-test-run timer/regex_timer.cpp <template>../build/msvc-stlport-tricky : $(BOOST_ROOT)/libs/regex/example/timer/input_script.txt ]
[ regex-test-run grep/grep.cpp <lib>../../program_options/build/boost_program_options : -n -b $(BOOST_ROOT)/boost/regex.hpp $(BOOST_ROOT)/boost/type_traits.hpp : std::locale-support ]
[ regex-test-run snippets/credit_card_example.cpp ]
[ regex-test-run snippets/mfc_example.cpp ]
[ regex-test-run snippets/icu_example.cpp ]
[ regex-test-run snippets/partial_regex_grep.cpp : $(BOOST_ROOT)/libs/regex/index.htm ]
[ regex-test-run snippets/partial_regex_match.cpp : 1234-5678-8765-4 ]
[ regex-test-run snippets/regex_grep_example_1.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_grep_example_2.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_grep_example_3.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_grep_example_4.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_match_example.cpp : -auto ]
[ regex-test-run snippets/regex_merge_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_replace_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_search_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]
[ regex-test-run snippets/regex_split_example_1.cpp : -auto ]
[ regex-test-run snippets/regex_split_example_2.cpp : $(BOOST_ROOT)/libs/regex/doc/index.html ]
[ regex-test-run snippets/regex_token_iterator_eg_1.cpp : -auto ]
[ regex-test-run snippets/regex_token_iterator_eg_2.cpp : $(BOOST_ROOT)/libs/regex/doc/index.html ]
[ regex-test-run snippets/regex_iterator_example.cpp : $(BOOST_ROOT)/boost/rational.hpp ]

[ run
    # sources
    snippets/captures_example.cpp
    <template>../build/regex-options
    # dependencies
    <lib>../test/captures/boost_regex_extra
 :  # additional args
 :  # test-files
 :  # requirements
    <threading>multi
    <define>BOOST_REGEX_MATCH_EXTRA=1
    <define>BOOST_REGEX_NO_LIB=1
 :  # test name
    captures_example
 ]


;