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