• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 ///////////////////////////////////////////////////////////////////////////////
2 // test3.hpp
3 //
4 //  Copyright 2008 Eric Niebler. Distributed under the Boost
5 //  Software License, Version 1.0. (See accompanying file
6 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 
8 #include "./test.hpp"
9 
10 ///////////////////////////////////////////////////////////////////////////////
11 // get_test_cases
12 //
13 template<typename BidiIterT>
get_test_cases()14 boost::iterator_range<xpr_test_case<BidiIterT> const *> get_test_cases()
15 {
16     typedef typename boost::iterator_value<BidiIterT>::type char_type;
17     typedef xpr_test_case<BidiIterT> xpr_test_case;
18     typedef basic_regex<BidiIterT> regex_type;
19 
20     static char_type const *nilbr = 0;
21     static xpr_test_case const test_cases[] =
22     {
23         xpr_test_case
24         (
25             "test41"
26           , L("foobarFOObarfoo")
27           , regex_type((s1= icase(L("FOO"))) >> (s2= -*_) >> s1)
28           , backrefs(L("foobarFOObarfoo"), L("foo"), L("barFOObar"), nilbr)
29         )
30       , xpr_test_case
31         (
32             "test42"
33           , L("foobarFOObarfoo")
34           , regex_type((s1= icase(L("FOO"))) >> (s2= -*_) >> icase(s1))
35           , backrefs(L("foobarFOO"), L("foo"), L("bar"), nilbr)
36         )
37       , xpr_test_case
38         (
39             "test42.1"
40           , L("fooFOOOFOOOOObar")
41           , regex_type(+(s1= L("foo") | icase(s1 >> L('O'))))
42           , backrefs(L("fooFOOOFOOOO"), L("FOOOO"), nilbr)
43         )
44       , xpr_test_case
45         (
46             "test43"
47           , L("zoo")
48           , regex_type(bos >> set[range(L('A'),L('Z')) | range(L('a'),L('m'))])
49           , no_match
50         )
51       , xpr_test_case
52         (
53             "test44"
54           , L("Here is a URL: http://www.cnn.com. OK?")
55           , regex_type((s1= L("http") >> !as_xpr(L('s')) >> L(":/") | L("www."))
56                         >> +set[_w | (set=L('.'),L('/'),L(','),L('?'),L('@'),L('#'),L('%'),L('!'),L('_'),L('='),L('~'),L('&'),L('-'))]
57                         >> _w)
58           , backrefs(L("http://www.cnn.com"), L("http:/"), nilbr)
59         )
60       , xpr_test_case
61         (
62             "test45"
63           , L("fooooooooo")
64           , regex_type(L('f') >> repeat<2,5>(L('o')))
65           , backrefs(L("fooooo"), nilbr)
66         )
67       , xpr_test_case
68         (
69             "test46"
70           , L("fooooooooo")
71           , regex_type(L('f') >> -repeat<2,5>(L('o')))
72           , backrefs(L("foo"), nilbr)
73         )
74       , xpr_test_case
75         (
76             "test45.1"
77           , L("fooooooooo")
78           , regex_type(L('f') >> repeat<2,5>(L('o')) >> L('o'))
79           , backrefs(L("foooooo"), nilbr)
80         )
81       , xpr_test_case
82         (
83             "test46.1"
84           , L("fooooooooo")
85           , regex_type(L('f') >> -repeat<2,5>(L('o')) >> L('o'))
86           , backrefs(L("fooo"), nilbr)
87         )
88       , xpr_test_case
89         (
90             "test47"
91           , L("{match this}")
92           , regex_type(bos >> L('{') >> *_ >> L('}') >> eos)
93           , backrefs(L("{match this}"), nilbr)
94         )
95       , xpr_test_case
96         (
97             "test48"
98           , L("+-+-")
99           , regex_type(+(set=L('+'),L('-')))
100           , backrefs(L("+-+-"), nilbr)
101         )
102       , xpr_test_case
103         (
104             "test49"
105           , L("+-+-")
106           , regex_type(+(set=L('-'),L('+')))
107           , backrefs(L("+-+-"), nilbr)
108         )
109       , xpr_test_case
110         (
111             "test50"
112           , L("\\05g-9e")
113           , regex_type(+set[_d | L('-') | L('g')])
114           , backrefs(L("05g-9"), nilbr)
115         )
116       , xpr_test_case
117         (
118             "test51"
119           , L("\\05g-9e")
120           , regex_type(+set[_d | L('-') | L('g')])
121           , backrefs(L("05g-9"), nilbr)
122         )
123       , xpr_test_case
124         (
125             "test52"
126           , L("\\05g-9e")
127           , regex_type(+set[L('g') | as_xpr(L('-')) | _d])
128           , backrefs(L("05g-9"), nilbr)
129         )
130       , xpr_test_case
131         (
132             "test53"
133           , L("\\05g-9e")
134           , regex_type(+set[L('g') | as_xpr(L('-')) | _d])
135           , backrefs(L("05g-9"), nilbr)
136         )
137       , xpr_test_case
138         (
139             "test54"
140           , L("aBcdefg\\")
141           , regex_type(icase(+range(L('a'),L('g'))))
142           , backrefs(L("aBcdefg"), nilbr)
143         )
144       , xpr_test_case
145         (
146             "test55"
147           , L("ab/.-ba")
148           , regex_type(+range(L('-'),L('/')))
149           , backrefs(L("/.-"), nilbr)
150         )
151       , xpr_test_case
152         (
153             "test56"
154           , L("ab+,-ba")
155           , regex_type(+range(L('+'),L('-')))
156           , backrefs(L("+,-"), nilbr)
157         )
158       , xpr_test_case
159         (
160             "test56.1"
161           , L("aaabbbb----")
162           , regex_type(+range(L('b'),L('b')))
163           , backrefs(L("bbbb"), nilbr)
164         )
165       , xpr_test_case
166         (
167             "test57"
168           , L("foobarFOO5")
169           , regex_type(icase((s1= L("foo")) >> *_ >> L('\15')))
170           , no_match
171         )
172       , xpr_test_case
173         (
174             "test58"
175           , L("Her number is 804-867-5309.")
176           , regex_type(repeat<2>(repeat<3>(_d) >> L('-')) >> repeat<4>(_d))
177           , backrefs(L("804-867-5309"), nilbr)
178         )
179       , xpr_test_case
180         (
181             "test59"
182           , L("foo")
183           , regex_type(L('f') >> +as_xpr(L('o')))
184           , backrefs(L("foo"), nilbr)
185         )
186       , xpr_test_case
187         (
188             "test60"
189           , L("fooFOObar")
190           , regex_type(icase(+(s1= L("foo")) >> L("foobar")))
191           , backrefs(L("fooFOObar"), L("foo"), nilbr)
192         )
193     };
194 
195     return boost::make_iterator_range(test_cases);
196 }
197