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

Side by Side Diff: third_party/re2/re2/testing/exhaustive_tester.h

Issue 1516543002: Update re2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits 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 unified diff | Download patch
OLDNEW
1 // Copyright 2009 The RE2 Authors. All Rights Reserved. 1 // Copyright 2009 The RE2 Authors. All Rights Reserved.
2 // Use of this source code is governed by a BSD-style 2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file. 3 // license that can be found in the LICENSE file.
4 4
5 #ifndef RE2_TESTING_EXHAUSTIVE_TESTER_H__ 5 #ifndef RE2_TESTING_EXHAUSTIVE_TESTER_H__
6 #define RE2_TESTING_EXHAUSTIVE_TESTER_H__ 6 #define RE2_TESTING_EXHAUSTIVE_TESTER_H__
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 #include "util/util.h" 10 #include "util/util.h"
11 #include "re2/testing/regexp_generator.h" 11 #include "re2/testing/regexp_generator.h"
12 #include "re2/testing/string_generator.h" 12 #include "re2/testing/string_generator.h"
13 13
14 namespace re2 { 14 namespace re2 {
15 15
16 #if !defined(NDEBUG)
17 // We are in a debug build.
18 const bool RE2_DEBUG_MODE = true;
19 #elif ADDRESS_SANITIZER || MEMORY_SANITIZER || THREAD_SANITIZER
20 // Not a debug build, but still under sanitizers.
21 const bool RE2_DEBUG_MODE = true;
22 #else
23 const bool RE2_DEBUG_MODE = false;
24 #endif
25
16 // Exhaustive regular expression test: generate all regexps within parameters, 26 // Exhaustive regular expression test: generate all regexps within parameters,
17 // then generate all strings of a given length over a given alphabet, 27 // then generate all strings of a given length over a given alphabet,
18 // then check that NFA, DFA, and PCRE agree about whether each regexp matches 28 // then check that NFA, DFA, and PCRE agree about whether each regexp matches
19 // each possible string, and if so, where the match is. 29 // each possible string, and if so, where the match is.
20 // 30 //
21 // Can also be used in a "random" mode that generates a given number 31 // Can also be used in a "random" mode that generates a given number
22 // of random regexp and strings, allowing testing of larger expressions 32 // of random regexp and strings, allowing testing of larger expressions
23 // and inputs. 33 // and inputs.
24 class ExhaustiveTester : public RegexpGenerator { 34 class ExhaustiveTester : public RegexpGenerator {
25 public: 35 public:
(...skipping 30 matching lines...) Expand all
56 StringGenerator strgen_; 66 StringGenerator strgen_;
57 string wrapper_; // Regexp wrapper - either empty or has one %s. 67 string wrapper_; // Regexp wrapper - either empty or has one %s.
58 string topwrapper_; // Regexp top-level wrapper. 68 string topwrapper_; // Regexp top-level wrapper.
59 int regexps_; // Number of HandleRegexp calls 69 int regexps_; // Number of HandleRegexp calls
60 int tests_; // Number of regexp tests. 70 int tests_; // Number of regexp tests.
61 int failures_; // Number of tests failed. 71 int failures_; // Number of tests failed.
62 72
63 bool randomstrings_; // Whether to use random strings 73 bool randomstrings_; // Whether to use random strings
64 int32 stringseed_; // If so, the seed. 74 int32 stringseed_; // If so, the seed.
65 int stringcount_; // If so, how many to generate. 75 int stringcount_; // If so, how many to generate.
66 DISALLOW_EVIL_CONSTRUCTORS(ExhaustiveTester); 76 DISALLOW_COPY_AND_ASSIGN(ExhaustiveTester);
67 }; 77 };
68 78
69 // Runs an exhaustive test on the given parameters. 79 // Runs an exhaustive test on the given parameters.
70 void ExhaustiveTest(int maxatoms, int maxops, 80 void ExhaustiveTest(int maxatoms, int maxops,
71 const vector<string>& alphabet, 81 const vector<string>& alphabet,
72 const vector<string>& ops, 82 const vector<string>& ops,
73 int maxstrlen, const vector<string>& stralphabet, 83 int maxstrlen, const vector<string>& stralphabet,
74 const string& wrapper, 84 const string& wrapper,
75 const string& topwrapper); 85 const string& topwrapper);
76 86
77 // Runs an exhaustive test using the given parameters and 87 // Runs an exhaustive test using the given parameters and
78 // the basic egrep operators. 88 // the basic egrep operators.
79 void EgrepTest(int maxatoms, int maxops, const string& alphabet, 89 void EgrepTest(int maxatoms, int maxops, const string& alphabet,
80 int maxstrlen, const string& stralphabet, 90 int maxstrlen, const string& stralphabet,
81 const string& wrapper); 91 const string& wrapper);
82 92
83 } // namespace re2 93 } // namespace re2
84 94
85 #endif // RE2_TESTING_EXHAUSTIVE_TESTER_H__ 95 #endif // RE2_TESTING_EXHAUSTIVE_TESTER_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698