xref: /aosp_15_r20/external/regex-re2/re2/testing/exhaustive_test.cc (revision ccdc9c3e24c519bfa4832a66aa2e83a52c19f295)
1*ccdc9c3eSSadaf Ebrahimi // Copyright 2008 The RE2 Authors.  All Rights Reserved.
2*ccdc9c3eSSadaf Ebrahimi // Use of this source code is governed by a BSD-style
3*ccdc9c3eSSadaf Ebrahimi // license that can be found in the LICENSE file.
4*ccdc9c3eSSadaf Ebrahimi 
5*ccdc9c3eSSadaf Ebrahimi // Exhaustive testing of regular expression matching.
6*ccdc9c3eSSadaf Ebrahimi 
7*ccdc9c3eSSadaf Ebrahimi #include "util/test.h"
8*ccdc9c3eSSadaf Ebrahimi #include "re2/testing/exhaustive_tester.h"
9*ccdc9c3eSSadaf Ebrahimi 
10*ccdc9c3eSSadaf Ebrahimi namespace re2 {
11*ccdc9c3eSSadaf Ebrahimi 
12*ccdc9c3eSSadaf Ebrahimi // Test very simple expressions.
TEST(EgrepLiterals,Lowercase)13*ccdc9c3eSSadaf Ebrahimi TEST(EgrepLiterals, Lowercase) {
14*ccdc9c3eSSadaf Ebrahimi   EgrepTest(3, 2, "abc.", 3, "abc", "");
15*ccdc9c3eSSadaf Ebrahimi }
16*ccdc9c3eSSadaf Ebrahimi 
17*ccdc9c3eSSadaf Ebrahimi // Test mixed-case expressions.
TEST(EgrepLiterals,MixedCase)18*ccdc9c3eSSadaf Ebrahimi TEST(EgrepLiterals, MixedCase) {
19*ccdc9c3eSSadaf Ebrahimi   EgrepTest(3, 2, "AaBb.", 2, "AaBb", "");
20*ccdc9c3eSSadaf Ebrahimi }
21*ccdc9c3eSSadaf Ebrahimi 
22*ccdc9c3eSSadaf Ebrahimi // Test mixed-case in case-insensitive mode.
TEST(EgrepLiterals,FoldCase)23*ccdc9c3eSSadaf Ebrahimi TEST(EgrepLiterals, FoldCase) {
24*ccdc9c3eSSadaf Ebrahimi   // The punctuation characters surround A-Z and a-z
25*ccdc9c3eSSadaf Ebrahimi   // in the ASCII table.  This looks for bugs in the
26*ccdc9c3eSSadaf Ebrahimi   // bytemap range code in the DFA.
27*ccdc9c3eSSadaf Ebrahimi   EgrepTest(3, 2, "abAB.", 2, "aBc@_~", "(?i:%s)");
28*ccdc9c3eSSadaf Ebrahimi }
29*ccdc9c3eSSadaf Ebrahimi 
30*ccdc9c3eSSadaf Ebrahimi // Test very simple expressions.
TEST(EgrepLiterals,UTF8)31*ccdc9c3eSSadaf Ebrahimi TEST(EgrepLiterals, UTF8) {
32*ccdc9c3eSSadaf Ebrahimi   EgrepTest(3, 2, "ab.", 4, "a\xE2\x98\xBA", "");
33*ccdc9c3eSSadaf Ebrahimi }
34*ccdc9c3eSSadaf Ebrahimi 
35*ccdc9c3eSSadaf Ebrahimi }  // namespace re2
36*ccdc9c3eSSadaf Ebrahimi 
37