summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Mohammad Pur <ali.mpfard@gmail.com>2021-07-31 18:47:44 +0430
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2021-08-02 17:22:50 +0430
commit85d87cbcc848d3db2fd01aef1967b420c51aa39a (patch)
tree916a81b25bf4d591e2a8154e8fac37a9392e3bc6
parent5f342e4fa967e2cec84f958f3266ff6d51d591ff (diff)
downloadserenity-85d87cbcc848d3db2fd01aef1967b420c51aa39a.zip
LibRegex: Add some tests for Fork{Stay,Jump} performance
Without the previous fixes, these will blow up the stack.
-rw-r--r--Tests/LibRegex/Regex.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/Tests/LibRegex/Regex.cpp b/Tests/LibRegex/Regex.cpp
index 043d520d9c..89ac69de7e 100644
--- a/Tests/LibRegex/Regex.cpp
+++ b/Tests/LibRegex/Regex.cpp
@@ -726,3 +726,19 @@ TEST_CASE(case_insensitive_match)
EXPECT_EQ(result.matches.at(0).column, 4ul);
}
}
+
+TEST_CASE(extremely_long_fork_chain)
+{
+ Regex<ECMA262> re("(?:aa)*");
+ auto result = re.match(String::repeated('a', 100'000));
+ EXPECT_EQ(result.success, true);
+}
+
+static auto g_lots_of_a_s = String::repeated('a', 10'000'000);
+
+BENCHMARK_CASE(fork_performance)
+{
+ Regex<ECMA262> re("(?:aa)*");
+ auto result = re.match(g_lots_of_a_s);
+ EXPECT_EQ(result.success, true);
+}