Add invalid regex tests and fix a bug
This commit is contained in:
parent
c0e7c8304b
commit
a8feeb4c3e
@ -463,6 +463,8 @@ private:
|
|||||||
|
|
||||||
switch (codepoint) {
|
switch (codepoint) {
|
||||||
case ']':
|
case ']':
|
||||||
|
if (start == kRegexInvalidRange)
|
||||||
|
return false; // Error: nothing inside []
|
||||||
if (step == 2) { // Add trailing '-'
|
if (step == 2) { // Add trailing '-'
|
||||||
SizeType r = NewRange('-');
|
SizeType r = NewRange('-');
|
||||||
RAPIDJSON_ASSERT(current != kRegexInvalidRange);
|
RAPIDJSON_ASSERT(current != kRegexInvalidRange);
|
||||||
|
@ -494,4 +494,40 @@ TEST(Regex, Escape) {
|
|||||||
EXPECT_FALSE(re.Match(s)); // Not escaping
|
EXPECT_FALSE(re.Match(s)); // Not escaping
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Regex, Invalid) {
|
||||||
|
#define TEST_INVALID(s) \
|
||||||
|
{\
|
||||||
|
Regex re(s);\
|
||||||
|
EXPECT_FALSE(re.IsValid());\
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_INVALID("a|");
|
||||||
|
TEST_INVALID("()");
|
||||||
|
TEST_INVALID(")");
|
||||||
|
TEST_INVALID("(a))");
|
||||||
|
TEST_INVALID("(a|)");
|
||||||
|
TEST_INVALID("(a||b)");
|
||||||
|
TEST_INVALID("(|b)");
|
||||||
|
TEST_INVALID("?");
|
||||||
|
TEST_INVALID("*");
|
||||||
|
TEST_INVALID("+");
|
||||||
|
TEST_INVALID("{");
|
||||||
|
TEST_INVALID("{}");
|
||||||
|
TEST_INVALID("a{a}");
|
||||||
|
TEST_INVALID("a{0}");
|
||||||
|
TEST_INVALID("a{-1}");
|
||||||
|
TEST_INVALID("a{}");
|
||||||
|
TEST_INVALID("a{0,}");
|
||||||
|
TEST_INVALID("a{,0}");
|
||||||
|
TEST_INVALID("a{1,0}");
|
||||||
|
TEST_INVALID("a{-1,0}");
|
||||||
|
TEST_INVALID("a{-1,1}");
|
||||||
|
TEST_INVALID("[]");
|
||||||
|
TEST_INVALID("[^]");
|
||||||
|
TEST_INVALID("[\\a]");
|
||||||
|
TEST_INVALID("\\a");
|
||||||
|
|
||||||
|
#undef TEST_INVALID
|
||||||
|
}
|
||||||
|
|
||||||
#undef EURO
|
#undef EURO
|
||||||
|
Loading…
x
Reference in New Issue
Block a user