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

Unified Diff: third_party/re2/re2/testing/exhaustive_tester.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 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/re2/re2/testing/exhaustive_tester.h ('k') | third_party/re2/re2/testing/filtered_re2_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/re2/re2/testing/exhaustive_tester.cc
diff --git a/third_party/re2/re2/testing/exhaustive_tester.cc b/third_party/re2/re2/testing/exhaustive_tester.cc
deleted file mode 100644
index 0e90f33aa0e3719694e253506df341b0895520a8..0000000000000000000000000000000000000000
--- a/third_party/re2/re2/testing/exhaustive_tester.cc
+++ /dev/null
@@ -1,188 +0,0 @@
-// 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.
-
-// Each test picks an alphabet (e.g., "abc"), a maximum string length,
-// a maximum regular expression length, and a maximum number of letters
-// that can appear in the regular expression. Given these parameters,
-// it tries every possible regular expression and string, verifying that
-// the NFA, DFA, and a trivial backtracking implementation agree about
-// the location of the match.
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#ifndef LOGGING
-#define LOGGING 0
-#endif
-
-#include "util/test.h"
-#include "re2/testing/exhaustive_tester.h"
-#include "re2/testing/tester.h"
-
-DEFINE_bool(show_regexps, false, "show regexps during testing");
-
-DEFINE_int32(max_bad_regexp_inputs, 1,
- "Stop testing a regular expression after finding this many "
- "strings that break it.");
-
-// Compiled in debug mode, the usual tests run for over an hour.
-// Have to cut it down to make the unit test machines happy.
-DEFINE_bool(quick_debug_mode, true, "Run fewer tests in debug mode.");
-
-namespace re2 {
-
-static char* escape(const StringPiece& sp) {
- static char buf[512];
- char* p = buf;
- *p++ = '\"';
- for (int i = 0; i < sp.size(); i++) {
- if(p+5 >= buf+sizeof buf)
- LOG(FATAL) << "ExhaustiveTester escape: too long";
- if(sp[i] == '\\' || sp[i] == '\"') {
- *p++ = '\\';
- *p++ = sp[i];
- } else if(sp[i] == '\n') {
- *p++ = '\\';
- *p++ = 'n';
- } else {
- *p++ = sp[i];
- }
- }
- *p++ = '\"';
- *p = '\0';
- return buf;
-}
-
-static void PrintResult(const RE2& re, const StringPiece& input, RE2::Anchor anchor, StringPiece *m, int n) {
- if (!re.Match(input, 0, input.size(), anchor, m, n)) {
- printf("-");
- return;
- }
- for (int i = 0; i < n; i++) {
- if (i > 0)
- printf(" ");
- if (m[i].begin() == NULL)
- printf("-");
- else
- printf("%d-%d", static_cast<int>(m[i].begin() - input.begin()), static_cast<int>(m[i].end() - input.begin()));
- }
-}
-
-// Processes a single generated regexp.
-// Compiles it using Regexp interface and PCRE, and then
-// checks that NFA, DFA, and PCRE all return the same results.
-void ExhaustiveTester::HandleRegexp(const string& const_regexp) {
- regexps_++;
- string regexp = const_regexp;
- if (!topwrapper_.empty())
- regexp = StringPrintf(topwrapper_.c_str(), regexp.c_str());
-
- if (FLAGS_show_regexps) {
- printf("\r%s", regexp.c_str());
- fflush(stdout);
- }
-
- if (LOGGING) {
- // Write out test cases and answers for use in testing
- // other implementations, such as Go's regexp package.
- if (randomstrings_)
- LOG(ERROR) << "Cannot log with random strings.";
- if (regexps_ == 1) { // first
- printf("strings\n");
- strgen_.Reset();
- while (strgen_.HasNext())
- printf("%s\n", escape(strgen_.Next()));
- printf("regexps\n");
- }
- printf("%s\n", escape(regexp));
-
- RE2 re(regexp);
- RE2::Options longest;
- longest.set_longest_match(true);
- RE2 relongest(regexp, longest);
- int ngroup = re.NumberOfCapturingGroups()+1;
- StringPiece* group = new StringPiece[ngroup];
-
- strgen_.Reset();
- while (strgen_.HasNext()) {
- StringPiece input = strgen_.Next();
- PrintResult(re, input, RE2::ANCHOR_BOTH, group, ngroup);
- printf(";");
- PrintResult(re, input, RE2::UNANCHORED, group, ngroup);
- printf(";");
- PrintResult(relongest, input, RE2::ANCHOR_BOTH, group, ngroup);
- printf(";");
- PrintResult(relongest, input, RE2::UNANCHORED, group, ngroup);
- printf("\n");
- }
- delete[] group;
- return;
- }
-
- Tester tester(regexp);
- if (tester.error())
- return;
-
- strgen_.Reset();
- strgen_.GenerateNULL();
- if (randomstrings_)
- strgen_.Random(stringseed_, stringcount_);
- int bad_inputs = 0;
- while (strgen_.HasNext()) {
- tests_++;
- if (!tester.TestInput(strgen_.Next())) {
- failures_++;
- if (++bad_inputs >= FLAGS_max_bad_regexp_inputs)
- break;
- }
- }
-}
-
-// Runs an exhaustive test on the given parameters.
-void ExhaustiveTest(int maxatoms, int maxops,
- const vector<string>& alphabet,
- const vector<string>& ops,
- int maxstrlen, const vector<string>& stralphabet,
- const string& wrapper,
- const string& topwrapper) {
- if (RE2_DEBUG_MODE && FLAGS_quick_debug_mode) {
- if (maxatoms > 1)
- maxatoms--;
- if (maxops > 1)
- maxops--;
- if (maxstrlen > 1)
- maxstrlen--;
- }
- ExhaustiveTester t(maxatoms, maxops, alphabet, ops,
- maxstrlen, stralphabet, wrapper,
- topwrapper);
- t.Generate();
- if (!LOGGING) {
- printf("%d regexps, %d tests, %d failures [%d/%d str]\n",
- t.regexps(), t.tests(), t.failures(), maxstrlen, (int)stralphabet.size());
- }
- EXPECT_EQ(0, t.failures());
-}
-
-// Runs an exhaustive test using the given parameters and
-// the basic egrep operators.
-void EgrepTest(int maxatoms, int maxops, const string& alphabet,
- int maxstrlen, const string& stralphabet,
- const string& wrapper) {
- const char* tops[] = { "", "^(?:%s)", "(?:%s)$", "^(?:%s)$" };
-
- for (int i = 0; i < arraysize(tops); i++) {
- ExhaustiveTest(maxatoms, maxops,
- Split("", alphabet),
- RegexpGenerator::EgrepOps(),
- maxstrlen,
- Split("", stralphabet),
- wrapper,
- tops[i]);
- }
-}
-
-} // namespace re2
« no previous file with comments | « third_party/re2/re2/testing/exhaustive_tester.h ('k') | third_party/re2/re2/testing/filtered_re2_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698