• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 ///////////////////////////////////////////////////////////////////////////////
2 // test5.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             "test82"
26           , L("abba1234abba")
27           , regex_type(+_d)
28           , backrefs(L("1234"), nilbr)
29         )
30       , xpr_test_case
31         (
32             "test83"
33           , L("1234abba1234")
34           , regex_type(+~_d)
35           , backrefs(L("abba"), nilbr)
36         )
37       , xpr_test_case
38         (
39             "test84"
40           , L("abba1234abba")
41           , regex_type(+set[_d])
42           , backrefs(L("1234"), nilbr)
43         )
44       , xpr_test_case
45         (
46             "test85"
47           , L("1234abba1234")
48           , regex_type(+set[~_d])
49           , backrefs(L("abba"), nilbr)
50         )
51       , xpr_test_case
52         (
53             "test86"
54           , L("abba1234abba")
55           , regex_type(+~set[~_d])
56           , backrefs(L("1234"), nilbr)
57         )
58       , xpr_test_case
59         (
60             "test87"
61           , L("1234abba1234")
62           , regex_type(+~set[_d])
63           , backrefs(L("abba"), nilbr)
64         )
65       , xpr_test_case
66         (
67             "test88"
68           , L("1234abba1234")
69           , regex_type(+set[~_w | ~_d])
70           , backrefs(L("abba"), nilbr)
71         )
72       , xpr_test_case
73         (
74             "test89"
75           , L("1234(.;)abba")
76           , regex_type(+~set[_w | _d])
77           , backrefs(L("(.;)"), nilbr)
78         )
79       , xpr_test_case
80         (
81             "test90"
82           , L("(boo[bar]baz)")
83           , regex_type((s1= L('(') >> (s2= nil) | L('[') >> (s3= nil)) >> -*_ >> (s4= L(')') >> s2 | L(']') >> s3))
84           , backrefs(L("(boo[bar]baz)"), L("("), L(""), L(""), L(")"), nilbr)
85         )
86       , xpr_test_case
87         (
88             "test91"
89           , L("[boo(bar)baz]")
90           , regex_type((s1= L('(') >> (s2= nil) | L('[') >> (s3= nil)) >> -*_ >> (s4= L(')') >> s2 | L(']') >> s3))
91           , backrefs(L("[boo(bar)baz]"), L("["), L(""), L(""), L("]"), nilbr)
92         )
93       , xpr_test_case
94         (
95             "test91"
96           , L("[boo[bar]baz]")
97           , regex_type((s1= L('(') >> (s2= nil) | L('[') >> (s3= nil)) >> -*_ >> (s4= L(')') >> s2 | L(']') >> s3))
98           , backrefs(L("[boo[bar]"), L("["), L(""), L(""), L("]"), nilbr)
99         )
100       , xpr_test_case
101         (
102             "test92"
103           , L("foobarfoo")
104           , regex_type(after(L("foo")) >> L("bar"))
105           , backrefs(L("bar"), nilbr)
106         )
107       , xpr_test_case
108         (
109             "test93"
110           , L("foobarfoo")
111           , regex_type(after(s1= L('f') >> _ >> L('o')) >> L("bar"))
112           , backrefs(L("bar"), L("foo"), nilbr)
113         )
114       , xpr_test_case
115         (
116             "test94"
117           , L("foOoo")
118           , regex_type(icase(after(s1= L("fo")) >> L('o')))
119           , backrefs(L("O"), L("fo"), nilbr)
120         )
121       , xpr_test_case
122         (
123             "test95"
124           , L("fOooo")
125           , regex_type(icase(~after(s1= L("fo")) >> L('o')))
126           , backrefs(L("O"), L(""), nilbr)
127         )
128       , xpr_test_case
129         (
130             "test96"
131           , L("12foo12")
132           , regex_type(+alpha)
133           , backrefs(L("foo"), nilbr)
134         )
135       , xpr_test_case
136         (
137             "test97"
138           , L(";12foo12;")
139           , regex_type(+set[alpha | digit])
140           , backrefs(L("12foo12"), nilbr)
141         )
142       , xpr_test_case
143         (
144             "test98"
145           , L("aaaa")
146           , regex_type(after(s1= nil) >> L('a'))
147           , backrefs(L("a"), L(""), nilbr)
148         )
149       , xpr_test_case
150         (
151             "test99"
152           , L("ABCabc123foo")
153           , regex_type(after(s1= L("abc") >> repeat<3>(_d)) >> L("foo"))
154           , backrefs(L("foo"), L("abc123"), nilbr)
155         )
156     };
157 
158     return boost::make_iterator_range(test_cases);
159 }
160