summaryrefslogtreecommitdiff
path: root/pcrecpp_unittest.cc
diff options
context:
space:
mode:
authorph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2007-11-12 16:53:25 +0000
committerph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2007-11-12 16:53:25 +0000
commit68565d28dbbdfa6d073328347815306dd96b37a6 (patch)
tree47ec4db1f1fdd0e9eebc99e80e964421556d7991 /pcrecpp_unittest.cc
parent9c74abda0f1247b4d108930b1a396161cf7a9cb6 (diff)
downloadpcre-68565d28dbbdfa6d073328347815306dd96b37a6.tar.gz
Apply Craig's patch, which makes it possible to "ignore" values in parens
when parsing an RE using the c++ wrapper. git-svn-id: svn://vcs.exim.org/pcre/code/trunk@263 2f5784b3-3f2a-0410-8824-cb99058d5e15
Diffstat (limited to 'pcrecpp_unittest.cc')
-rw-r--r--pcrecpp_unittest.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/pcrecpp_unittest.cc b/pcrecpp_unittest.cc
index 463a11c..90351bf 100644
--- a/pcrecpp_unittest.cc
+++ b/pcrecpp_unittest.cc
@@ -857,6 +857,22 @@ int main(int argc, char** argv) {
CHECK_EQ(s, string("ruby"));
CHECK_EQ(i, 1234);
+ // Ignore non-void* NULL arg
+ CHECK(RE("he(.*)lo").FullMatch("hello", (char*)NULL));
+ CHECK(RE("h(.*)o").FullMatch("hello", (string*)NULL));
+ CHECK(RE("h(.*)o").FullMatch("hello", (StringPiece*)NULL));
+ CHECK(RE("(.*)").FullMatch("1234", (int*)NULL));
+ CHECK(RE("(.*)").FullMatch("1234567890123456", (long long*)NULL));
+ CHECK(RE("(.*)").FullMatch("123.4567890123456", (double*)NULL));
+ CHECK(RE("(.*)").FullMatch("123.4567890123456", (float*)NULL));
+
+ // Fail on non-void* NULL arg if the match doesn't parse for the given type.
+ CHECK(!RE("h(.*)lo").FullMatch("hello", &s, (char*)NULL));
+ CHECK(!RE("(.*)").FullMatch("hello", (int*)NULL));
+ CHECK(!RE("(.*)").FullMatch("1234567890123456", (int*)NULL));
+ CHECK(!RE("(.*)").FullMatch("hello", (double*)NULL));
+ CHECK(!RE("(.*)").FullMatch("hello", (float*)NULL));
+
// Ignored arg
CHECK(RE("(\\w+)(:)(\\d+)").FullMatch("ruby:1234", &s, (void*)NULL, &i));
CHECK_EQ(s, string("ruby"));