summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-09-26 23:16:35 +0900
committerMaxime Coste <mawww@kakoune.org>2017-11-01 14:05:14 +0800
commitd5048281a6cc80b0cd63bcf2399230fac4a4ca08 (patch)
tree3d76807df511a2ce145630d3b91f4266200908a4 /src
parentf7468b576ec0ed805ad4eb72021893236f01e973 (diff)
Regex: slight cleanup of the unit tests
Diffstat (limited to 'src')
-rw-r--r--src/regex_impl.cc63
1 files changed, 24 insertions, 39 deletions
diff --git a/src/regex_impl.cc b/src/regex_impl.cc
index 2efac3c3..ac81a84c 100644
--- a/src/regex_impl.cc
+++ b/src/regex_impl.cc
@@ -838,10 +838,18 @@ void validate_regex(StringView re)
}
auto test_regex = UnitTest{[]{
+ struct TestVM : ThreadedRegexVM<const char*>
{
- auto program = RegexCompiler::compile(R"(a*b)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM(StringView re)
+ : ThreadedRegexVM{m_program},
+ m_program{RegexCompiler::compile(re)}
+ { dump(m_program); }
+
+ CompiledRegex m_program;
+ };
+
+ {
+ TestVM vm{R"(a*b)"};
kak_assert(vm.exec("b"));
kak_assert(vm.exec("ab"));
kak_assert(vm.exec("aaab"));
@@ -851,9 +859,7 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"(^a.*b$)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(^a.*b$)"};
kak_assert(vm.exec("afoob"));
kak_assert(vm.exec("ab"));
kak_assert(not vm.exec("bab"));
@@ -861,9 +867,7 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"(^(foo|qux|baz)+(bar)?baz$)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(^(foo|qux|baz)+(bar)?baz$)"};
kak_assert(vm.exec("fooquxbarbaz"));
kak_assert(StringView{vm.m_captures[2], vm.m_captures[3]} == "qux");
kak_assert(not vm.exec("fooquxbarbaze"));
@@ -874,28 +878,23 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"(.*\b(foo|bar)\b.*)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(.*\b(foo|bar)\b.*)"};
kak_assert(vm.exec("qux foo baz"));
kak_assert(StringView{vm.m_captures[2], vm.m_captures[3]} == "foo");
kak_assert(not vm.exec("quxfoobaz"));
kak_assert(vm.exec("bar"));
kak_assert(not vm.exec("foobar"));
}
+
{
- auto program = RegexCompiler::compile(R"((foo|bar))");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"((foo|bar))"};
kak_assert(vm.exec("foo"));
kak_assert(vm.exec("bar"));
kak_assert(not vm.exec("foobar"));
}
{
- auto program = RegexCompiler::compile(R"(a{3,5}b)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(a{3,5}b)"};
kak_assert(not vm.exec("aab"));
kak_assert(vm.exec("aaab"));
kak_assert(not vm.exec("aaaaaab"));
@@ -903,27 +902,21 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"(a{3}b)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(a{3}b)"};
kak_assert(not vm.exec("aab"));
kak_assert(vm.exec("aaab"));
kak_assert(not vm.exec("aaaab"));
}
{
- auto program = RegexCompiler::compile(R"(a{3,}b)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(a{3,}b)"};
kak_assert(not vm.exec("aab"));
kak_assert(vm.exec("aaab"));
kak_assert(vm.exec("aaaaab"));
}
{
- auto program = RegexCompiler::compile(R"(a{,3}b)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(a{,3}b)"};
kak_assert(vm.exec("b"));
kak_assert(vm.exec("ab"));
kak_assert(vm.exec("aaab"));
@@ -931,9 +924,7 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"(f.*a(.*o))");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(f.*a(.*o))"};
kak_assert(vm.exec("blahfoobarfoobaz", false, true));
kak_assert(StringView{vm.m_captures[0], vm.m_captures[1]} == "foobarfoo");
kak_assert(StringView{vm.m_captures[2], vm.m_captures[3]} == "rfoo");
@@ -943,9 +934,7 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"([àb-dX-Z]{3,5})");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"([àb-dX-Z]{3,5})"};
kak_assert(vm.exec("càY"));
kak_assert(not vm.exec("àeY"));
kak_assert(vm.exec("dcbàX"));
@@ -953,17 +942,13 @@ auto test_regex = UnitTest{[]{
}
{
- auto program = RegexCompiler::compile(R"(\d{3})");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"(\d{3})"};
kak_assert(vm.exec("123"));
kak_assert(not vm.exec("1x3"));
}
{
- auto program = RegexCompiler::compile(R"([-\d]+)");
- dump(program);
- ThreadedRegexVM<const char*> vm{program};
+ TestVM vm{R"([-\d]+)"};
kak_assert(vm.exec("123-456"));
kak_assert(not vm.exec("123_456"));
}