| Index: third_party/re2/re2/testing/exhaustive1_test.cc
|
| diff --git a/third_party/re2/re2/testing/exhaustive1_test.cc b/third_party/re2/re2/testing/exhaustive1_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9e057cc56ecaae66f2a7d7d6fbdd2788f81ae69e
|
| --- /dev/null
|
| +++ b/third_party/re2/re2/testing/exhaustive1_test.cc
|
| @@ -0,0 +1,42 @@
|
| +// Copyright 2008 The RE2 Authors. All Rights Reserved.
|
| +// Use of this source code is governed by a BSD-style
|
| +// license that can be found in the LICENSE file.
|
| +
|
| +// Exhaustive testing of regular expression matching.
|
| +
|
| +#include "util/test.h"
|
| +#include "re2/testing/exhaustive_tester.h"
|
| +
|
| +DECLARE_string(regexp_engines);
|
| +
|
| +namespace re2 {
|
| +
|
| +// Test simple repetition operators
|
| +TEST(Repetition, Simple) {
|
| + vector<string> ops = Split(" ",
|
| + "%s{0} %s{0,} %s{1} %s{1,} %s{0,1} %s{0,2} "
|
| + "%s{1,2} %s{2} %s{2,} %s{3,4} %s{4,5} "
|
| + "%s* %s+ %s? %s*? %s+? %s??");
|
| + ExhaustiveTest(3, 2, Explode("abc."), ops,
|
| + 6, Explode("ab"), "(?:%s)", "");
|
| + ExhaustiveTest(3, 2, Explode("abc."), ops,
|
| + 40, Explode("a"), "(?:%s)", "");
|
| +}
|
| +
|
| +// Test capturing parens -- (a) -- inside repetition operators
|
| +TEST(Repetition, Capturing) {
|
| + vector<string> ops = Split(" ",
|
| + "%s{0} %s{0,} %s{1} %s{1,} %s{0,1} %s{0,2} "
|
| + "%s{1,2} %s{2} %s{2,} %s{3,4} %s{4,5} "
|
| + "%s* %s+ %s? %s*? %s+? %s??");
|
| + ExhaustiveTest(3, 2, Split(" ", "a (a) b"), ops,
|
| + 7, Explode("ab"), "(?:%s)", "");
|
| +
|
| + // This would be a great test, but it runs forever when PCRE is enabled.
|
| + if (strstr("PCRE", FLAGS_regexp_engines.c_str()) == NULL)
|
| + ExhaustiveTest(4, 3, Split(" ", "a (a)"), ops,
|
| + 100, Explode("a"), "(?:%s)", "");
|
| +}
|
| +
|
| +} // namespace re2
|
| +
|
|
|