bloaty/third_party/re2/re2/testing/set_test.cc
Go to the documentation of this file.
1 // Copyright 2010 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 <stddef.h>
6 #include <string>
7 #include <vector>
8 
9 #include "util/test.h"
10 #include "util/logging.h"
11 #include "re2/re2.h"
12 #include "re2/set.h"
13 
14 namespace re2 {
15 
16 TEST(Set, Unanchored) {
18 
19  ASSERT_EQ(s.Add("foo", NULL), 0);
20  ASSERT_EQ(s.Add("(", NULL), -1);
21  ASSERT_EQ(s.Add("bar", NULL), 1);
22  ASSERT_EQ(s.Compile(), true);
23 
24  ASSERT_EQ(s.Match("foobar", NULL), true);
25  ASSERT_EQ(s.Match("fooba", NULL), true);
26  ASSERT_EQ(s.Match("oobar", NULL), true);
27 
28  std::vector<int> v;
29  ASSERT_EQ(s.Match("foobar", &v), true);
30  ASSERT_EQ(v.size(), 2);
31  ASSERT_EQ(v[0], 0);
32  ASSERT_EQ(v[1], 1);
33 
34  ASSERT_EQ(s.Match("fooba", &v), true);
35  ASSERT_EQ(v.size(), 1);
36  ASSERT_EQ(v[0], 0);
37 
38  ASSERT_EQ(s.Match("oobar", &v), true);
39  ASSERT_EQ(v.size(), 1);
40  ASSERT_EQ(v[0], 1);
41 }
42 
43 TEST(Set, UnanchoredFactored) {
45 
46  ASSERT_EQ(s.Add("foo", NULL), 0);
47  ASSERT_EQ(s.Add("(", NULL), -1);
48  ASSERT_EQ(s.Add("foobar", NULL), 1);
49  ASSERT_EQ(s.Compile(), true);
50 
51  ASSERT_EQ(s.Match("foobar", NULL), true);
52  ASSERT_EQ(s.Match("obarfoobaroo", NULL), true);
53  ASSERT_EQ(s.Match("fooba", NULL), true);
54  ASSERT_EQ(s.Match("oobar", NULL), false);
55 
56  std::vector<int> v;
57  ASSERT_EQ(s.Match("foobar", &v), true);
58  ASSERT_EQ(v.size(), 2);
59  ASSERT_EQ(v[0], 0);
60  ASSERT_EQ(v[1], 1);
61 
62  ASSERT_EQ(s.Match("obarfoobaroo", &v), true);
63  ASSERT_EQ(v.size(), 2);
64  ASSERT_EQ(v[0], 0);
65  ASSERT_EQ(v[1], 1);
66 
67  ASSERT_EQ(s.Match("fooba", &v), true);
68  ASSERT_EQ(v.size(), 1);
69  ASSERT_EQ(v[0], 0);
70 
71  ASSERT_EQ(s.Match("oobar", &v), false);
72  ASSERT_EQ(v.size(), 0);
73 }
74 
75 TEST(Set, UnanchoredDollar) {
77 
78  ASSERT_EQ(s.Add("foo$", NULL), 0);
79  ASSERT_EQ(s.Compile(), true);
80 
81  ASSERT_EQ(s.Match("foo", NULL), true);
82  ASSERT_EQ(s.Match("foobar", NULL), false);
83 
84  std::vector<int> v;
85  ASSERT_EQ(s.Match("foo", &v), true);
86  ASSERT_EQ(v.size(), 1);
87  ASSERT_EQ(v[0], 0);
88 
89  ASSERT_EQ(s.Match("foobar", &v), false);
90  ASSERT_EQ(v.size(), 0);
91 }
92 
93 TEST(Set, UnanchoredWordBoundary) {
95 
96  ASSERT_EQ(s.Add("foo\\b", NULL), 0);
97  ASSERT_EQ(s.Compile(), true);
98 
99  ASSERT_EQ(s.Match("foo", NULL), true);
100  ASSERT_EQ(s.Match("foobar", NULL), false);
101  ASSERT_EQ(s.Match("foo bar", NULL), true);
102 
103  std::vector<int> v;
104  ASSERT_EQ(s.Match("foo", &v), true);
105  ASSERT_EQ(v.size(), 1);
106  ASSERT_EQ(v[0], 0);
107 
108  ASSERT_EQ(s.Match("foobar", &v), false);
109  ASSERT_EQ(v.size(), 0);
110 
111  ASSERT_EQ(s.Match("foo bar", &v), true);
112  ASSERT_EQ(v.size(), 1);
113  ASSERT_EQ(v[0], 0);
114 }
115 
116 TEST(Set, Anchored) {
118 
119  ASSERT_EQ(s.Add("foo", NULL), 0);
120  ASSERT_EQ(s.Add("(", NULL), -1);
121  ASSERT_EQ(s.Add("bar", NULL), 1);
122  ASSERT_EQ(s.Compile(), true);
123 
124  ASSERT_EQ(s.Match("foobar", NULL), false);
125  ASSERT_EQ(s.Match("fooba", NULL), false);
126  ASSERT_EQ(s.Match("oobar", NULL), false);
127  ASSERT_EQ(s.Match("foo", NULL), true);
128  ASSERT_EQ(s.Match("bar", NULL), true);
129 
130  std::vector<int> v;
131  ASSERT_EQ(s.Match("foobar", &v), false);
132  ASSERT_EQ(v.size(), 0);
133 
134  ASSERT_EQ(s.Match("fooba", &v), false);
135  ASSERT_EQ(v.size(), 0);
136 
137  ASSERT_EQ(s.Match("oobar", &v), false);
138  ASSERT_EQ(v.size(), 0);
139 
140  ASSERT_EQ(s.Match("foo", &v), true);
141  ASSERT_EQ(v.size(), 1);
142  ASSERT_EQ(v[0], 0);
143 
144  ASSERT_EQ(s.Match("bar", &v), true);
145  ASSERT_EQ(v.size(), 1);
146  ASSERT_EQ(v[0], 1);
147 }
148 
149 TEST(Set, EmptyUnanchored) {
151 
152  ASSERT_EQ(s.Compile(), true);
153 
154  ASSERT_EQ(s.Match("", NULL), false);
155  ASSERT_EQ(s.Match("foobar", NULL), false);
156 
157  std::vector<int> v;
158  ASSERT_EQ(s.Match("", &v), false);
159  ASSERT_EQ(v.size(), 0);
160 
161  ASSERT_EQ(s.Match("foobar", &v), false);
162  ASSERT_EQ(v.size(), 0);
163 }
164 
165 TEST(Set, EmptyAnchored) {
167 
168  ASSERT_EQ(s.Compile(), true);
169 
170  ASSERT_EQ(s.Match("", NULL), false);
171  ASSERT_EQ(s.Match("foobar", NULL), false);
172 
173  std::vector<int> v;
174  ASSERT_EQ(s.Match("", &v), false);
175  ASSERT_EQ(v.size(), 0);
176 
177  ASSERT_EQ(s.Match("foobar", &v), false);
178  ASSERT_EQ(v.size(), 0);
179 }
180 
181 TEST(Set, Prefix) {
183 
184  ASSERT_EQ(s.Add("/prefix/\\d*", NULL), 0);
185  ASSERT_EQ(s.Compile(), true);
186 
187  ASSERT_EQ(s.Match("/prefix", NULL), false);
188  ASSERT_EQ(s.Match("/prefix/", NULL), true);
189  ASSERT_EQ(s.Match("/prefix/42", NULL), true);
190 
191  std::vector<int> v;
192  ASSERT_EQ(s.Match("/prefix", &v), false);
193  ASSERT_EQ(v.size(), 0);
194 
195  ASSERT_EQ(s.Match("/prefix/", &v), true);
196  ASSERT_EQ(v.size(), 1);
197  ASSERT_EQ(v[0], 0);
198 
199  ASSERT_EQ(s.Match("/prefix/42", &v), true);
200  ASSERT_EQ(v.size(), 1);
201  ASSERT_EQ(v[0], 0);
202 }
203 
204 } // namespace re2
re2::RE2::Set
Definition: bloaty/third_party/re2/re2/set.h:23
re2::RE2::ANCHOR_BOTH
@ ANCHOR_BOTH
Definition: bloaty/third_party/re2/re2/re2.h:475
re2::RE2::UNANCHORED
@ UNANCHORED
Definition: bloaty/third_party/re2/re2/re2.h:473
re2
Definition: bloaty/third_party/re2/re2/bitmap256.h:17
re2::RE2::DefaultOptions
@ DefaultOptions
Definition: bloaty/third_party/re2/re2/re2.h:248
setup.v
v
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:42
re2::TEST
TEST(TestCharClassBuilder, Adds)
Definition: bloaty/third_party/re2/re2/testing/charclass_test.cc:198
ASSERT_EQ
#define ASSERT_EQ(val1, val2)
Definition: bloaty/third_party/googletest/googletest/include/gtest/gtest.h:2056


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:12