]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/regex/test/regress/test_emacs.cpp
6 * Use, modification and distribution are subject to the
7 * Boost Software License, Version 1.0. (See accompanying file
8 * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
15 #pragma warning(disable:4127)
22 using namespace boost :: regex_constants
;
23 // now try operator + :
24 TEST_REGEX_SEARCH ( "ab+" , emacs
, "a" , match_default
, make_array (- 2 , - 2 ));
25 TEST_REGEX_SEARCH ( "ab+" , emacs
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
26 TEST_REGEX_SEARCH ( "ab+" , emacs
, "sssabbbbbbsss" , match_default
, make_array ( 3 , 10 , - 2 , - 2 ));
27 TEST_REGEX_SEARCH ( "ab+c+" , emacs
, "abbb" , match_default
, make_array (- 2 , - 2 ));
28 TEST_REGEX_SEARCH ( "ab+c+" , emacs
, "accc" , match_default
, make_array (- 2 , - 2 ));
29 TEST_REGEX_SEARCH ( "ab+c+" , emacs
, "abbcc" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
30 TEST_INVALID_REGEX ( " \\ <+" , emacs
);
31 TEST_INVALID_REGEX ( " \\ >+" , emacs
);
32 TEST_REGEX_SEARCH ( " \n +" , emacs
, " \n\n " , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
33 TEST_REGEX_SEARCH ( " \\ +" , emacs
, "+" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
34 TEST_REGEX_SEARCH ( " \\ +" , emacs
, "++" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , - 2 ));
35 TEST_REGEX_SEARCH ( " \\ ++" , emacs
, "++" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
38 TEST_REGEX_SEARCH ( "a?" , emacs
, "b" , match_default
, make_array ( 0 , 0 , - 2 , 1 , 1 , - 2 , - 2 ));
39 TEST_REGEX_SEARCH ( "ab?" , emacs
, "a" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
40 TEST_REGEX_SEARCH ( "ab?" , emacs
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
41 TEST_REGEX_SEARCH ( "ab?" , emacs
, "sssabbbbbbsss" , match_default
, make_array ( 3 , 5 , - 2 , - 2 ));
42 TEST_REGEX_SEARCH ( "ab?c?" , emacs
, "a" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
43 TEST_REGEX_SEARCH ( "ab?c?" , emacs
, "abbb" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
44 TEST_REGEX_SEARCH ( "ab?c?" , emacs
, "accc" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
45 TEST_REGEX_SEARCH ( "ab?c?" , emacs
, "abcc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
46 TEST_INVALID_REGEX ( " \\ <?" , emacs
);
47 TEST_INVALID_REGEX ( " \\ >?" , emacs
);
48 TEST_REGEX_SEARCH ( " \n ?" , emacs
, " \n\n " , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
49 TEST_REGEX_SEARCH ( " \\ ?" , emacs
, "?" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
50 TEST_REGEX_SEARCH ( " \\ ?" , emacs
, "?" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
51 TEST_REGEX_SEARCH ( " \\ ??" , emacs
, "??" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
53 TEST_REGEX_SEARCH ( "a*?" , emacs
, "aa" , match_default
, make_array ( 0 , 0 , - 2 , 0 , 1 , - 2 , 1 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
54 TEST_REGEX_SEARCH ( "^a*?$" , emacs
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
55 TEST_REGEX_SEARCH ( "^.*?$" , emacs
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
56 TEST_REGEX_SEARCH ( "^ \\ (a \\ )*?$" , emacs
, "aa" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
57 TEST_REGEX_SEARCH ( "^[ab]*?$" , emacs
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
58 TEST_REGEX_SEARCH ( "a??" , emacs
, "aa" , match_default
, make_array ( 0 , 0 , - 2 , 0 , 1 , - 2 , 1 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
59 TEST_REGEX_SEARCH ( "a+?" , emacs
, "aa" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , - 2 ));
60 TEST_REGEX_SEARCH ( "a \\ {1,3 \\ }?" , emacs
, "aaa" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 3 , - 2 , - 2 ));
61 TEST_REGEX_SEARCH ( " \\ w+?w" , emacs
, "...ccccccwcccccw" , match_default
, make_array ( 3 , 10 , - 2 , 10 , 16 , - 2 , - 2 ));
62 TEST_REGEX_SEARCH ( " \\ W+ \\ w+?w" , emacs
, "...ccccccwcccccw" , match_default
, make_array ( 0 , 10 , - 2 , - 2 ));
63 TEST_REGEX_SEARCH ( "abc \\ | \\ w+?" , emacs
, "abd" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 3 , - 2 , - 2 ));
64 TEST_REGEX_SEARCH ( "abc \\ | \\ w+?" , emacs
, "abcd" , match_default
, make_array ( 0 , 3 , - 2 , 3 , 4 , - 2 , - 2 ));
65 TEST_REGEX_SEARCH ( "< \\ ss*tag[^>]*> \\ (.*? \\ )< \\ ss*/tag \\ ss*>" , emacs
, " <tag>here is some text</tag> <tag></tag>" , match_default
, make_array ( 1 , 29 , 6 , 23 , - 2 , 30 , 41 , 35 , 35 , - 2 , - 2 ));
66 TEST_REGEX_SEARCH ( "< \\ ss*tag[^>]*> \\ (.*? \\ )< \\ ss*/tag \\ ss*>" , emacs
, " < tag attr= \" something \" >here is some text< /tag > <tag></tag>" , match_default
, make_array ( 1 , 49 , 24 , 41 , - 2 , 50 , 61 , 55 , 55 , - 2 , - 2 ));
67 TEST_INVALID_REGEX ( "a \\ {1,3 \\ } \\ {1 \\ }" , emacs
);
68 TEST_INVALID_REGEX ( "a**" , emacs
);
69 TEST_INVALID_REGEX ( "a++" , emacs
);
71 TEST_REGEX_SEARCH ( " \\ <abcd" , emacs
, " abcd" , match_default
, make_array ( 2 , 6 , - 2 , - 2 ));
72 TEST_REGEX_SEARCH ( " \\ <ab" , emacs
, "cab" , match_default
, make_array (- 2 , - 2 ));
73 TEST_REGEX_SEARCH ( " \\ <ab" , emacs
, " \n ab" , match_default
, make_array ( 1 , 3 , - 2 , - 2 ));
74 TEST_REGEX_SEARCH ( " \\ <tag" , emacs
, "::tag" , match_default
, make_array ( 2 , 5 , - 2 , - 2 ));
75 TEST_REGEX_SEARCH ( " \\ <abcd" , emacs
, "abcd" , match_default
| match_not_bow
, make_array (- 2 , - 2 ));
76 TEST_REGEX_SEARCH ( " \\ <abcd" , emacs
, " abcd" , match_default
| match_not_bow
, make_array ( 2 , 6 , - 2 , - 2 ));
77 TEST_REGEX_SEARCH ( " \\ <" , emacs
, "ab " , match_default
| match_not_bow
, make_array (- 2 , - 2 ));
78 TEST_REGEX_SEARCH ( ". \\ <." , emacs
, "ab" , match_default
| match_not_bow
, make_array (- 2 , - 2 ));
79 TEST_REGEX_SEARCH ( ". \\ <." , emacs
, " b" , match_default
| match_not_bow
, make_array ( 0 , 2 , - 2 , - 2 ));
81 TEST_REGEX_SEARCH ( "abc \\ >" , emacs
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
82 TEST_REGEX_SEARCH ( "abc \\ >" , emacs
, "abcd" , match_default
, make_array (- 2 , - 2 ));
83 TEST_REGEX_SEARCH ( "abc \\ >" , emacs
, "abc \n " , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
84 TEST_REGEX_SEARCH ( "abc \\ >" , emacs
, "abc::" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
85 TEST_REGEX_SEARCH ( "abc \\ (?: \\ >.. \\ |$ \\ )" , emacs
, "abc::" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
86 TEST_REGEX_SEARCH ( " \\ >" , emacs
, " " , match_default
, make_array (- 2 , - 2 ));
87 TEST_REGEX_SEARCH ( ". \\ >." , emacs
, " " , match_default
, make_array (- 2 , - 2 ));
88 TEST_REGEX_SEARCH ( "abc \\ >" , emacs
, "abc" , match_default
| match_not_eow
, make_array (- 2 , - 2 ));
90 TEST_REGEX_SEARCH ( " \\ babcd" , emacs
, " abcd" , match_default
, make_array ( 2 , 6 , - 2 , - 2 ));
91 TEST_REGEX_SEARCH ( " \\ bab" , emacs
, "cab" , match_default
, make_array (- 2 , - 2 ));
92 TEST_REGEX_SEARCH ( " \\ bab" , emacs
, " \n ab" , match_default
, make_array ( 1 , 3 , - 2 , - 2 ));
93 TEST_REGEX_SEARCH ( " \\ btag" , emacs
, "::tag" , match_default
, make_array ( 2 , 5 , - 2 , - 2 ));
94 TEST_REGEX_SEARCH ( "abc \\ b" , emacs
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
95 TEST_REGEX_SEARCH ( "abc \\ b" , emacs
, "abcd" , match_default
, make_array (- 2 , - 2 ));
96 TEST_REGEX_SEARCH ( "abc \\ b" , emacs
, "abc \n " , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
97 TEST_REGEX_SEARCH ( "abc \\ b" , emacs
, "abc::" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
98 TEST_REGEX_SEARCH ( " \\ babcd" , emacs
, "abcd" , match_default
| match_not_bow
, make_array (- 2 , - 2 ));
100 TEST_REGEX_SEARCH ( " \\ B" , emacs
, "ab" , match_default
, make_array ( 1 , 1 , - 2 , - 2 ));
101 TEST_REGEX_SEARCH ( "a \\ Bb" , emacs
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
102 TEST_REGEX_SEARCH ( "a \\ B" , emacs
, "ab" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
103 TEST_REGEX_SEARCH ( "a \\ B" , emacs
, "a" , match_default
, make_array (- 2 , - 2 ));
104 TEST_REGEX_SEARCH ( "a \\ B" , emacs
, "a " , match_default
, make_array (- 2 , - 2 ));
106 TEST_REGEX_SEARCH ( " \\ `abc" , emacs
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
107 TEST_REGEX_SEARCH ( " \\ `abc" , emacs
, " \n abc" , match_default
, make_array (- 2 , - 2 ));
108 TEST_REGEX_SEARCH ( " \\ `abc" , emacs
, " abc" , match_default
, make_array (- 2 , - 2 ));
109 TEST_REGEX_SEARCH ( "abc \\ '" , emacs
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
110 TEST_REGEX_SEARCH ( "abc \\ '" , emacs
, "abc \n " , match_default
, make_array (- 2 , - 2 ));
111 TEST_REGEX_SEARCH ( "abc \\ '" , emacs
, "abc " , match_default
, make_array (- 2 , - 2 ));
113 TEST_REGEX_SEARCH ( "a \\ |b" , emacs
, "a" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
114 TEST_REGEX_SEARCH ( "a \\ |b" , emacs
, "b" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
115 TEST_REGEX_SEARCH ( "a \\ |b \\ |c" , emacs
, "c" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
116 TEST_REGEX_SEARCH ( "a \\ | \\ (b \\ ) \\ |." , emacs
, "b" , match_default
, make_array ( 0 , 1 , 0 , 1 , - 2 , - 2 ));
117 TEST_REGEX_SEARCH ( " \\ (a \\ ) \\ |b \\ |." , emacs
, "a" , match_default
, make_array ( 0 , 1 , 0 , 1 , - 2 , - 2 ));
118 TEST_REGEX_SEARCH ( "a \\ (b \\ |c \\ )" , emacs
, "ab" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
119 TEST_REGEX_SEARCH ( "a \\ (b \\ |c \\ )" , emacs
, "ac" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
120 TEST_REGEX_SEARCH ( "a \\ (b \\ |c \\ )" , emacs
, "ad" , match_default
, make_array (- 2 , - 2 ));
121 TEST_REGEX_SEARCH ( " \\ (a \\ |b \\ |c \\ )" , emacs
, "c" , match_default
, make_array ( 0 , 1 , 0 , 1 , - 2 , - 2 ));
122 TEST_REGEX_SEARCH ( " \\ (a \\ | \\ (b \\ ) \\ |. \\ )" , emacs
, "b" , match_default
, make_array ( 0 , 1 , 0 , 1 , 0 , 1 , - 2 , - 2 ));
123 TEST_INVALID_REGEX ( " \\ |c" , emacs
);
124 TEST_INVALID_REGEX ( "c \\ |" , emacs
);
125 TEST_INVALID_REGEX ( " \\ ( \\ | \\ )" , emacs
);
126 TEST_INVALID_REGEX ( " \\ (a \\ | \\ )" , emacs
);
127 TEST_INVALID_REGEX ( " \\ ( \\ |a \\ )" , emacs
);
129 TEST_REGEX_SEARCH ( " \\ (?:abc \\ )+" , emacs
, "xxabcabcxx" , match_default
, make_array ( 2 , 8 , - 2 , - 2 ));
130 TEST_REGEX_SEARCH ( " \\ (?:a+ \\ ) \\ (b+ \\ )" , emacs
, "xaaabbbx" , match_default
, make_array ( 1 , 7 , 4 , 7 , - 2 , - 2 ));
131 TEST_REGEX_SEARCH ( " \\ (a+ \\ ) \\ (?:b+ \\ )" , emacs
, "xaaabbba" , match_default
, make_array ( 1 , 7 , 1 , 4 , - 2 , - 2 ));
132 TEST_REGEX_SEARCH ( " \\ (?: \\ (a+ \\ )b+ \\ )" , emacs
, "xaaabbba" , match_default
, make_array ( 1 , 7 , 1 , 4 , - 2 , - 2 ));
133 TEST_REGEX_SEARCH ( " \\ (?:a+ \\ (b+ \\ ) \\ )" , emacs
, "xaaabbba" , match_default
, make_array ( 1 , 7 , 4 , 7 , - 2 , - 2 ));
134 TEST_REGEX_SEARCH ( "a+ \\ (?#b+ \\ )b+" , emacs
, "xaaabbba" , match_default
, make_array ( 1 , 7 , - 2 , - 2 ));
135 TEST_REGEX_SEARCH ( " \\ (a \\ ) \\ (?:b \\ |$ \\ )" , emacs
, "ab" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
136 TEST_REGEX_SEARCH ( " \\ (a \\ ) \\ (?:b \\ |$ \\ )" , emacs
, "a" , match_default
, make_array ( 0 , 1 , 0 , 1 , - 2 , - 2 ));
142 using namespace boost :: regex_constants
;
145 TEST_REGEX_SEARCH ( " \\ ss+" , emacs
, "a b" , match_default
, make_array ( 1 , 3 , - 2 , - 2 ));
146 TEST_REGEX_SEARCH ( " \\ Ss+" , emacs
, " ab " , match_default
, make_array ( 1 , 3 , - 2 , - 2 ));
147 TEST_REGEX_SEARCH ( " \\ sw+" , emacs
, " ab " , match_default
, make_array ( 1 , 3 , - 2 , - 2 ));
148 TEST_REGEX_SEARCH ( " \\ Sw+" , emacs
, "a b" , match_default
, make_array ( 1 , 3 , - 2 , - 2 ));
149 TEST_REGEX_SEARCH ( " \\ s_+" , emacs
, " $&*+-_<> " , match_default
, make_array ( 1 , 9 , - 2 , - 2 ));
150 TEST_REGEX_SEARCH ( " \\ S_+" , emacs
, "$&*+-_<>b" , match_default
, make_array ( 8 , 9 , - 2 , - 2 ));
151 TEST_REGEX_SEARCH ( " \\ s.+" , emacs
, " .,;!? " , match_default
, make_array ( 1 , 6 , - 2 , - 2 ));
152 TEST_REGEX_SEARCH ( " \\ S.+" , emacs
, ".,;!?b" , match_default
, make_array ( 5 , 6 , - 2 , - 2 ));
153 TEST_REGEX_SEARCH ( " \\ s(+" , emacs
, "([{ " , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
154 TEST_REGEX_SEARCH ( " \\ S(+" , emacs
, "([{ " , match_default
, make_array ( 3 , 4 , - 2 , - 2 ));
155 TEST_REGEX_SEARCH ( " \\ s)+" , emacs
, ")]} " , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
156 TEST_REGEX_SEARCH ( " \\ S)+" , emacs
, ")]} " , match_default
, make_array ( 3 , 4 , - 2 , - 2 ));
157 TEST_REGEX_SEARCH ( " \\ s \" +" , emacs
, " \" '` " , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
158 TEST_REGEX_SEARCH ( " \\ S \" +" , emacs
, " \" '` " , match_default
, make_array ( 3 , 4 , - 2 , - 2 ));
159 TEST_REGEX_SEARCH ( " \\ s'+" , emacs
, "',# " , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
160 TEST_REGEX_SEARCH ( " \\ S'+" , emacs
, "',# " , match_default
, make_array ( 3 , 4 , - 2 , - 2 ));
161 TEST_REGEX_SEARCH ( " \\ s<+" , emacs
, "; " , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
162 TEST_REGEX_SEARCH ( " \\ S<+" , emacs
, "; " , match_default
, make_array ( 1 , 2 , - 2 , - 2 ));
163 TEST_REGEX_SEARCH ( " \\ s>+" , emacs
, " \n\f " , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
164 TEST_REGEX_SEARCH ( " \\ S>+" , emacs
, " \n\f " , match_default
, make_array ( 2 , 3 , - 2 , - 2 ));