15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2008 The RE2 Authors. All Rights Reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// license that can be found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Exhaustive testing of regular expression matching. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "util/test.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "re2/testing/exhaustive_tester.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace re2 { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DECLARE_string(regexp_engines); 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test very simple expressions. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(EgrepLiterals, Lowercase) { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EgrepTest(3, 2, "abc.", 3, "abc", ""); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test mixed-case expressions. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(EgrepLiterals, MixedCase) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EgrepTest(3, 2, "AaBb.", 2, "AaBb", ""); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test mixed-case in case-insensitive mode. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(EgrepLiterals, FoldCase) { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The punctuation characters surround A-Z and a-z 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // in the ASCII table. This looks for bugs in the 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bytemap range code in the DFA. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EgrepTest(3, 2, "abAB.", 2, "aBc@_~", "(?i:%s)"); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test very simple expressions. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(EgrepLiterals, UTF8) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EgrepTest(3, 2, "ab.", 4, "a\xE2\x98\xBA", ""); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace re2 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39