Add a basic test for prefix accel.
Change-Id: I6c8ac6d6d111c354303e02db0b948d65a07b00cc
Reviewed-on: https://code-review.googlesource.com/c/re2/+/56770
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/re2/testing/required_prefix_test.cc b/re2/testing/required_prefix_test.cc
index 67b94b6..2468ec2 100644
--- a/re2/testing/required_prefix_test.cc
+++ b/re2/testing/required_prefix_test.cc
@@ -6,6 +6,7 @@
#include "util/test.h"
#include "util/logging.h"
+#include "re2/prog.h"
#include "re2/regexp.h"
namespace re2 {
@@ -122,4 +123,23 @@
}
}
+TEST(PrefixAccel, BasicTest) {
+ Regexp* re = Regexp::Parse("abc\\d+", Regexp::LikePerl, NULL);
+ ASSERT_TRUE(re != NULL);
+ Prog* prog = re->CompileToProg(0);
+ ASSERT_TRUE(prog != NULL);
+ for (int i = 0; i < 100; i++) {
+ std::string text(i, 'a');
+ const char* p = reinterpret_cast<const char*>(
+ prog->PrefixAccel(text.data(), text.size()));
+ EXPECT_TRUE(p == NULL);
+ text.append("abc");
+ p = reinterpret_cast<const char*>(
+ prog->PrefixAccel(text.data(), text.size()));
+ EXPECT_EQ(i, p-text.data());
+ }
+ delete prog;
+ re->Decref();
+}
+
} // namespace re2