10 #include "util/logging.h"
11 #include "re2/regexp.h"
29 "3. byte [61-61] 0 -> 4\n"
32 "3. byte [61-61] 0 -> 4\n"
33 "4. byte [62-62] 0 -> 5\n"
36 "3+ byte [61-61] 0 -> 5\n"
37 "4. byte [63-63] 0 -> 5\n"
40 "3. byte [61-62] 0 -> 4\n"
43 "3. byte [61-62] 0 -> 4\n"
46 "3. byte [61-61] 0 -> 4\n"
50 "3. byte [61-61] 0 -> 4\n"
54 "3+ byte [61-61] 1 -> 3\n"
58 "4. byte [61-61] 0 -> 3\n" },
60 "3+ byte [61-61] 1 -> 5\n"
65 "4. byte [61-61] 0 -> 5\n"
68 "3. byte [61-61] 0 -> 4\n"
69 "4. byte [61-61] 0 -> 5\n"
70 "5. byte [61-61] 0 -> 6\n"
71 "6. byte [61-61] 0 -> 7\n"
75 "4. byte [61-61] 0 -> 5\n"
79 "3. byte [61-61] 0 -> 4\n"
84 "3+ byte [00-09] 0 -> 5\n"
85 "4. byte [0b-ff] 0 -> 5\n"
88 "3+ byte [00-09] 0 -> 6\n"
89 "4+ byte [0b-60] 0 -> 6\n"
90 "5. byte [63-ff] 0 -> 6\n"
93 "3. byte/i [61-61] 0 -> 4\n"
96 "3. byte [00-ff] 0 -> 4\n"
97 "4+ altmatch -> 5 | 6\n"
101 "3+ altmatch -> 4 | 5\n"
102 "4+ byte [00-ff] 1 -> 3\n"
105 "3+ byte [00-ff] 1 -> 5\n"
110 "3. byte [5b-60] 0 -> 4\n"
119 "8. byte [61-61] 0 -> 5\n"
123 "4. byte [61-61] 0 -> 5\n"
128 TEST(TestRegexpCompileToProg, Simple) {
134 LOG(
ERROR) <<
"Cannot parse: " << t.regexp;
138 Prog*
prog = re->CompileToProg(0);
140 LOG(
ERROR) <<
"Cannot compile: " <<
t.regexp;
148 LOG(
ERROR) <<
"Incorrect compiled code for: " <<
t.regexp;
167 *bytemap =
prog->DumpByteMap();
181 TEST(TestCompile, Latin1Ranges) {
193 TEST(TestCompile, OtherByteMapTests) {
228 TEST(TestCompile, UTF8Ranges) {
248 TEST(TestCompile, InsufficientMemory) {
250 "^(?P<name1>[^\\s]+)\\s+(?P<name2>[^\\s]+)\\s+(?P<name3>.+)$",
253 Prog*
prog = re->CompileToProg(850);
282 TEST(TestCompile, Bug26705922) {
290 "4. byte [90-90] 0 -> 5\n"
291 "5. byte [80-80] 0 -> 6\n"
292 "6+ byte [80-80] 0 -> 8\n"
293 "7. byte [90-90] 0 -> 8\n"
297 "4. byte [90-90] 0 -> 5\n"
298 "5. byte [80-80] 0 -> 6\n"
299 "6. byte [90-90] 0 -> 7\n"
300 "7. byte [f0-f0] 0 -> 8\n"
306 "4. byte [f0-f0] 0 -> 8\n"
307 "5. byte [80-bf] 0 -> 6\n"
308 "6. byte [80-bf] 0 -> 7\n"
310 "8. byte [90-90] 0 -> 5\n",
313 "4. byte [80-bf] 0 -> 5\n"
314 "5+ byte [e8-ef] 0 -> 7\n"
315 "6. byte [90-90] 0 -> 8\n"
317 "8. byte [f0-f0] 0 -> 7\n",
322 "4+ byte [e0-ef] 0 -> 8\n"
323 "5. byte [f0-f4] 0 -> 9\n"
324 "6. byte [80-bf] 0 -> 7\n"
326 "8. byte [80-bf] 0 -> 6\n"
327 "9. byte [80-bf] 0 -> 8\n",
330 "4+ byte [c2-df] 0 -> 6\n"
331 "5. byte [80-bf] 0 -> 7\n"
333 "7+ byte [e0-ef] 0 -> 6\n"
334 "8. byte [80-bf] 0 -> 9\n"
335 "9. byte [f0-f4] 0 -> 6\n",
339 TEST(TestCompile, Bug35237384) {
348 "5+ byte [61-61] 1 -> 5\n"
350 "7+ byte [61-61] 1 -> 7\n"
357 "5+ byte [61-61] 1 -> 5\n"
359 "7+ byte [61-61] 1 -> 7\n"
361 "9+ byte [61-61] 1 -> 9\n"
363 "11+ byte [62-62] 1 -> 11\n"
365 "13+ byte [62-62] 1 -> 13\n"
367 "15+ byte [62-62] 1 -> 15\n"
392 "6+ byte [00-09] 0 -> 8\n"
393 "7. byte [0b-ff] 0 -> 8\n"
397 "11+ byte [00-09] 0 -> 13\n"
398 "12. byte [0b-ff] 0 -> 13\n"
402 "16+ byte [00-09] 0 -> 18\n"
403 "17. byte [0b-ff] 0 -> 18\n"
407 "21+ byte [00-09] 0 -> 23\n"
408 "22. byte [0b-ff] 0 -> 23\n"
413 "27. byte [53-53] 0 -> 11\n"
416 "30. byte [53-53] 0 -> 6\n"
418 "32. byte [53-53] 0 -> 21\n"
423 "37. byte [53-53] 0 -> 16\n",