1///////////////////////////////////////////////////////////////////////////////
2// test2.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//
13template<typename BidiIterT>
14boost::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 // "(\\+|-)?([0-9]+\\.?[0-9]*|\\.[0-9]+)([eE](\\+|-)?[0-9]+)?"
21 static regex_type const test21 = !(s1= as_xpr(L('+'))|L('-')) >> (s2= +range(L('0'),L('9')) >> !as_xpr(L('.')) >> *range(L('0'),L('9')) |
22 L('.') >> +range(L('0'),L('9'))) >> !(s3= (set=L('e'),L('E')) >> !(s4= as_xpr(L('+'))|L('-')) >> +range(L('0'),L('9')));
23
24 // "^(\\+|-)?([0-9]+\\.?[0-9]*|\\.[0-9]+)([eE](\\+|-)?[0-9]+)?$"
25 static regex_type const test23 = bos >> test21 >> eos;
26
27 static char_type const *nilbr = 0;
28 static xpr_test_case const test_cases[] =
29 {
30 xpr_test_case
31 (
32 "test21"
33 , L("-1234.56789")
34 , test21
35 , backrefs(L("-1234.56789"), L("-"), L("1234.56789"), L(""), L(""), nilbr)
36 )
37 , xpr_test_case
38 (
39 "test22"
40 , L("-1234.56789e-123123123")
41 , test21
42 , backrefs(L("-1234.56789e-123123123"), L("-"), L("1234.56789"), L("e-123123123"), L("-"), nilbr)
43 )
44 , xpr_test_case
45 (
46 "test23"
47 , L("-.1234.56789")
48 , test23
49 , no_match
50 )
51 , xpr_test_case
52 (
53 "test24"
54 , L("-1234.56789e-12312e123")
55 , test23
56 , no_match
57 )
58 , xpr_test_case
59 (
60 "test25"
61 , L("aaaaaaaaac")
62 , regex_type(*as_xpr(L('a')) >> *as_xpr(L('a')) >> *as_xpr(L('a')) >> *as_xpr(L('a')) >> *as_xpr(L('a')) >> L('b'))
63 , no_match
64 )
65 , xpr_test_case
66 (
67 "test26"
68 , L("ThIs iS a TeSt")
69 , regex_type(*set[range(L('a'),L('z')) | range(L('A'),L('Z'))])
70 , backrefs(L("ThIs"), nilbr)
71 )
72 , xpr_test_case
73 (
74 "test27"
75 , L("a^b")
76 , regex_type(L('a') >> bos >> L('b'))
77 , no_match
78 )
79 , xpr_test_case
80 (
81 "test28"
82 , L("a^b")
83 , regex_type(as_xpr(L("a^b")))
84 , backrefs(L("a^b"), nilbr)
85 )
86 , xpr_test_case
87 (
88 "test29"
89 , L("a^b")
90 , regex_type(L('a') >> ~set[L(' ')] >> L('b'))
91 , backrefs(L("a^b"), nilbr)
92 )
93 , xpr_test_case
94 (
95 "test30"
96 , L("a^b")
97 , regex_type(L('a') >> ~set[L('^')] >> L('b'))
98 , no_match
99 )
100 , xpr_test_case
101 (
102 "test31"
103 , L("a^b")
104 , regex_type(L('a') >> ~set[L('^')] >> L('b'))
105 , no_match
106 )
107 , xpr_test_case
108 (
109 "test31.1"
110 , L("a^b")
111 , regex_type(L('a') >> set[L('^')] >> L('b'))
112 , backrefs(L("a^b"), nilbr)
113 )
114 , xpr_test_case
115 (
116 "test32"
117 , L("foobazFOObar")
118 , regex_type(icase(L("foo") >> before(L("bar"))))
119 , backrefs(L("FOO"), nilbr)
120 )
121 , xpr_test_case
122 (
123 "test33"
124 , L("foobarFOObaz")
125 , regex_type(icase(L("foo") >> ~before(L("bar"))))
126 , backrefs(L("FOO"), nilbr)
127 )
128 , xpr_test_case
129 (
130 "test34"
131 , L("foobarFOO")
132 , regex_type(icase(L("foo") >> ~before(L("bar"))))
133 , backrefs(L("FOO"), nilbr)
134 )
135 , xpr_test_case
136 (
137 "test35"
138 , L("foobarFOObarfoo")
139 , regex_type(icase(+(s1= keep(s2= L("foo")) >> L("bar"))))
140 , backrefs(L("foobarFOObar"), L("FOObar"), L("FOO"), nilbr)
141 )
142 , xpr_test_case
143 (
144 "test37"
145 , L("foobar")
146 , regex_type(+(s1= L("bar") | (s2= L("foo"))))
147 , backrefs(L("foobar"), L("bar"), L("foo"), nilbr)
148 )
149 , xpr_test_case
150 (
151 "test38"
152 , L("foobar")
153 , regex_type(+(s1= (s2= L("bar")) | L("foo")))
154 , backrefs(L("foobar"), L("bar"), L("bar"), nilbr)
155 )
156 , xpr_test_case
157 (
158 "test39"
159 , L("foobar")
160 , regex_type(+(s1= L("foo") | (s2= L("bar"))))
161 , backrefs(L("foobar"), L("bar"), L("bar"), nilbr)
162 )
163 , xpr_test_case
164 (
165 "test40"
166 , L("foobar")
167 , regex_type(+(s1= (s2= L("foo")) | L("bar")))
168 , backrefs(L("foobar"), L("bar"), L("foo"), nilbr)
169 )
170 };
171
172 return boost::make_iterator_range(test_cases);
173}
174

source code of boost/libs/xpressive/test/test2.hpp