197 lines
5.5 KiB
C++
197 lines
5.5 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// test3.hpp
|
|
//
|
|
// Copyright 2008 Eric Niebler. 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)
|
|
|
|
#include "./test.hpp"
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// get_test_cases
|
|
//
|
|
template<typename BidiIterT>
|
|
boost::iterator_range<xpr_test_case<BidiIterT> const *> get_test_cases()
|
|
{
|
|
typedef typename boost::iterator_value<BidiIterT>::type char_type;
|
|
typedef xpr_test_case<BidiIterT> xpr_test_case;
|
|
typedef basic_regex<BidiIterT> regex_type;
|
|
|
|
static char_type const *nilbr = 0;
|
|
static xpr_test_case const test_cases[] =
|
|
{
|
|
xpr_test_case
|
|
(
|
|
"test41"
|
|
, L("foobarFOObarfoo")
|
|
, regex_type((s1= icase(L("FOO"))) >> (s2= -*_) >> s1)
|
|
, backrefs(L("foobarFOObarfoo"), L("foo"), L("barFOObar"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test42"
|
|
, L("foobarFOObarfoo")
|
|
, regex_type((s1= icase(L("FOO"))) >> (s2= -*_) >> icase(s1))
|
|
, backrefs(L("foobarFOO"), L("foo"), L("bar"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test42.1"
|
|
, L("fooFOOOFOOOOObar")
|
|
, regex_type(+(s1= L("foo") | icase(s1 >> L('O'))))
|
|
, backrefs(L("fooFOOOFOOOO"), L("FOOOO"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test43"
|
|
, L("zoo")
|
|
, regex_type(bos >> set[range(L('A'),L('Z')) | range(L('a'),L('m'))])
|
|
, no_match
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test44"
|
|
, L("Here is a URL: http://www.cnn.com. OK?")
|
|
, regex_type((s1= L("http") >> !as_xpr(L('s')) >> L(":/") | L("www."))
|
|
>> +set[_w | (set=L('.'),L('/'),L(','),L('?'),L('@'),L('#'),L('%'),L('!'),L('_'),L('='),L('~'),L('&'),L('-'))]
|
|
>> _w)
|
|
, backrefs(L("http://www.cnn.com"), L("http:/"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test45"
|
|
, L("fooooooooo")
|
|
, regex_type(L('f') >> repeat<2,5>(L('o')))
|
|
, backrefs(L("fooooo"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test46"
|
|
, L("fooooooooo")
|
|
, regex_type(L('f') >> -repeat<2,5>(L('o')))
|
|
, backrefs(L("foo"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test45.1"
|
|
, L("fooooooooo")
|
|
, regex_type(L('f') >> repeat<2,5>(L('o')) >> L('o'))
|
|
, backrefs(L("foooooo"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test46.1"
|
|
, L("fooooooooo")
|
|
, regex_type(L('f') >> -repeat<2,5>(L('o')) >> L('o'))
|
|
, backrefs(L("fooo"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test47"
|
|
, L("{match this}")
|
|
, regex_type(bos >> L('{') >> *_ >> L('}') >> eos)
|
|
, backrefs(L("{match this}"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test48"
|
|
, L("+-+-")
|
|
, regex_type(+(set=L('+'),L('-')))
|
|
, backrefs(L("+-+-"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test49"
|
|
, L("+-+-")
|
|
, regex_type(+(set=L('-'),L('+')))
|
|
, backrefs(L("+-+-"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test50"
|
|
, L("\\05g-9e")
|
|
, regex_type(+set[_d | L('-') | L('g')])
|
|
, backrefs(L("05g-9"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test51"
|
|
, L("\\05g-9e")
|
|
, regex_type(+set[_d | L('-') | L('g')])
|
|
, backrefs(L("05g-9"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test52"
|
|
, L("\\05g-9e")
|
|
, regex_type(+set[L('g') | as_xpr(L('-')) | _d])
|
|
, backrefs(L("05g-9"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test53"
|
|
, L("\\05g-9e")
|
|
, regex_type(+set[L('g') | as_xpr(L('-')) | _d])
|
|
, backrefs(L("05g-9"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test54"
|
|
, L("aBcdefg\\")
|
|
, regex_type(icase(+range(L('a'),L('g'))))
|
|
, backrefs(L("aBcdefg"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test55"
|
|
, L("ab/.-ba")
|
|
, regex_type(+range(L('-'),L('/')))
|
|
, backrefs(L("/.-"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test56"
|
|
, L("ab+,-ba")
|
|
, regex_type(+range(L('+'),L('-')))
|
|
, backrefs(L("+,-"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test56.1"
|
|
, L("aaabbbb----")
|
|
, regex_type(+range(L('b'),L('b')))
|
|
, backrefs(L("bbbb"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test57"
|
|
, L("foobarFOO5")
|
|
, regex_type(icase((s1= L("foo")) >> *_ >> L('\15')))
|
|
, no_match
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test58"
|
|
, L("Her number is 804-867-5309.")
|
|
, regex_type(repeat<2>(repeat<3>(_d) >> L('-')) >> repeat<4>(_d))
|
|
, backrefs(L("804-867-5309"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test59"
|
|
, L("foo")
|
|
, regex_type(L('f') >> +as_xpr(L('o')))
|
|
, backrefs(L("foo"), nilbr)
|
|
)
|
|
, xpr_test_case
|
|
(
|
|
"test60"
|
|
, L("fooFOObar")
|
|
, regex_type(icase(+(s1= L("foo")) >> L("foobar")))
|
|
, backrefs(L("fooFOObar"), L("foo"), nilbr)
|
|
)
|
|
};
|
|
|
|
return boost::make_iterator_range(test_cases);
|
|
}
|