81TEST(CatalogTest, MultipleMatchOverlapping) {
83 {{
"matcher1",
".*foo.*",
".*foo.*"}, {
"matcher2",
".*oo.*",
".*oo.*"}});
84 ASSERT_TRUE(catalog.ok()) << catalog.status();
85 absl::StatusOr<std::vector<Catalog::Match>> has_match =
86 catalog->FindMatch(
"foo");
87 ASSERT_FALSE(has_match.ok());
88 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
89 "Selected matchers overlap"))
90 << has_match.status().message();
91 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
"matcher1"))
92 << has_match.status().message();
93 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
"matcher2"))
94 << has_match.status().message();
97TEST(CatalogTest, MultipleSelectorsFail) {
99 {{
"matcher1",
".*foo.*",
"blah"}, {
"matcher2",
".*oo.*",
"blah"}});
100 ASSERT_TRUE(catalog.ok()) << catalog.status();
101 absl::StatusOr<std::vector<Catalog::Match>> has_match =
102 catalog->FindMatch(
"foo");
103 ASSERT_FALSE(has_match.ok());
104 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
"matcher1"))
105 << has_match.status().message();
106 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
"matcher2"))
107 << has_match.status().message();
110TEST(CatalogTest, OnlyOneSelectorsFail) {
112 {{
"matcher1",
".*foo.*",
".*foo.*"}, {
"matcher2",
".*oo.*",
"blah"}});
113 ASSERT_TRUE(catalog.ok()) << catalog.status();
114 absl::StatusOr<std::vector<Catalog::Match>> has_match =
115 catalog->FindMatch(
"foo");
116 ASSERT_FALSE(has_match.ok());
117 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
"matcher1"))
118 << has_match.status().message();
119 ASSERT_TRUE(RE2::PartialMatch(has_match.status().message(),
"matcher2"))
120 << has_match.status().message();
123TEST(CatalogTest, MultipleMatchNoOverlap) {
124 absl::StatusOr<Catalog> catalog =
125 Catalog::Make({{
"foo",
".*foo",
".*foo"}, {
"bar",
"bar.*",
"bar.*"}});
126 ASSERT_TRUE(catalog.ok()) << catalog.status();
127 absl::StatusOr<std::vector<Catalog::Match>> has_match =
128 catalog->FindMatch(
"hello foo bar world");
129 ASSERT_TRUE(has_match.ok()) << has_match.status();
132TEST(CatalogTest, NoSelectorMatch) {
133 absl::StatusOr<Catalog> catalog =
135 ASSERT_TRUE(catalog.ok());
136 absl::StatusOr<std::vector<Catalog::Match>> match = catalog->FindMatch(
"foo");
137 ASSERT_FALSE(match.ok());
138 ASSERT_EQ(match.status().code(), absl::StatusCode::kNotFound);
141TEST(CatalogTest, NoSelectionMatch) {
142 absl::StatusOr<Catalog> catalog =
144 ASSERT_TRUE(catalog.ok());
145 absl::StatusOr<std::vector<Catalog::Match>> match = catalog->FindMatch(
"foo");
146 ASSERT_FALSE(match.ok());
147 ASSERT_EQ(match.status().code(), absl::StatusCode::kNotFound);
205TEST(CatalogTest, SkiaLicenseIgnoreWhitespace) {
206 std::stringstream ss;
209 ASSERT_TRUE(entry.ok()) << entry.status();
211 ASSERT_TRUE(catalog.ok());
213 std::string no_newline_license = RemoveNewlines(
kSkiaLicense);
215 absl::StatusOr<std::vector<Catalog::Match>> match =
216 catalog->FindMatch(no_newline_license);
217 ASSERT_TRUE(match.ok()) << match.status();
218 ASSERT_EQ(match->size(), 1u);
222TEST(CatalogTest, SkiaLicenseIgnoreTrailing) {
223 std::stringstream ss;
226 ASSERT_TRUE(entry.ok()) << entry.status();
228 ASSERT_TRUE(catalog.ok());
231 ASSERT_EQ(no_end.back(),
'\n');
234 absl::StatusOr<std::vector<Catalog::Match>> match =
235 catalog->FindMatch(no_end);
239TEST(CatalogTest, ExtractsGroups) {
240 std::string entry_text = R
"entry(entry
244 std::stringstream ss;
247 ASSERT_TRUE(entry.ok()) << entry.status();
249 ASSERT_TRUE(catalog.ok());
251 std::string text = "start hello stop world last";
253 absl::StatusOr<std::vector<Catalog::Match>> match = catalog->FindMatch(
text);
254 EXPECT_TRUE(match.ok()) << match.status();
255 ASSERT_EQ(match->size(), 1u);