Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: third_party/re2/re2/testing/required_prefix_test.cc

Issue 1544433002: Replace RE2 import with a dependency (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-Added LICENSE and OWNERS file Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/re2/re2/testing/regexp_test.cc ('k') | third_party/re2/re2/testing/search_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2009 The RE2 Authors. All Rights Reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 #include "util/test.h"
6 #include "re2/regexp.h"
7
8 namespace re2 {
9
10 struct PrefixTest {
11 const char* regexp;
12 bool return_value;
13 const char* prefix;
14 bool foldcase;
15 const char* suffix;
16 };
17
18 static PrefixTest tests[] = {
19 // If the regexp is missing a ^, there's no required prefix.
20 { "abc", false },
21 { "", false },
22 { "(?m)^", false },
23
24 // If the regexp immediately goes into
25 // something not a literal match, there's no required prefix.
26 { "^(abc)", false },
27 { "^a*", false },
28
29 // Otherwise, it should work.
30 { "^abc$", true, "abc", false, "(?-m:$)" },
31 { "^abc", true, "abc", false, "" },
32 { "^(?i)abc", true, "abc", true, "" },
33 { "^abcd*", true, "abc", false, "d*" },
34 { "^[Aa][Bb]cd*", true, "ab", true, "cd*" },
35 { "^ab[Cc]d*", true, "ab", false, "[Cc]d*" },
36 { "^☺abc", true, "☺abc", false, "" },
37 };
38
39 TEST(RequiredPrefix, SimpleTests) {
40 for (int i = 0; i < arraysize(tests); i++) {
41 const PrefixTest& t = tests[i];
42 for (int j = 0; j < 2; j++) {
43 Regexp::ParseFlags flags = Regexp::LikePerl;
44 if (j == 0)
45 flags = flags | Regexp::Latin1;
46 Regexp* re = Regexp::Parse(t.regexp, flags, NULL);
47 CHECK(re) << " " << t.regexp;
48 string p;
49 bool f = false;
50 Regexp* s = NULL;
51 CHECK_EQ(t.return_value, re->RequiredPrefix(&p, &f, &s))
52 << " " << t.regexp << " " << (j==0 ? "latin1" : "utf") << " " << re->Dum p();
53 if (t.return_value) {
54 CHECK_EQ(p, string(t.prefix))
55 << " " << t.regexp << " " << (j==0 ? "latin1" : "utf");
56 CHECK_EQ(f, t.foldcase)
57 << " " << t.regexp << " " << (j==0 ? "latin1" : "utf");
58 CHECK_EQ(s->ToString(), string(t.suffix))
59 << " " << t.regexp << " " << (j==0 ? "latin1" : "utf");
60 s->Decref();
61 }
62 re->Decref();
63 }
64 }
65 }
66
67 } // namespace re2
OLDNEW
« no previous file with comments | « third_party/re2/re2/testing/regexp_test.cc ('k') | third_party/re2/re2/testing/search_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698