summaryrefslogtreecommitdiff
path: root/tests/test_parse_doctype.cpp
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2015-03-10 20:44:06 -0700
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2015-03-10 20:44:06 -0700
commitf81d7cc0184b1586270ecf41386d98942df3cf99 (patch)
tree8d3e5a7d5880d02c6af2fdaa8f97e23035ad66e7 /tests/test_parse_doctype.cpp
parente5ecbd63ce75de0a8f1473cbe0c1f9eea657dd02 (diff)
parent604861e520d2d6579674a1c2bd5e59cb10f7ecd2 (diff)
Merge branch 'master' into compact
Diffstat (limited to 'tests/test_parse_doctype.cpp')
-rw-r--r--tests/test_parse_doctype.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/test_parse_doctype.cpp b/tests/test_parse_doctype.cpp
index 14268f6..901890c 100644
--- a/tests/test_parse_doctype.cpp
+++ b/tests/test_parse_doctype.cpp
@@ -322,3 +322,43 @@ TEST(parse_doctype_error_ignore)
CHECK(doc.load_string(STR("<!DOCTYPE root [ <![IGNORE[ <![INCLUDE[")).status == status_bad_doctype);
CHECK(doc.load_string(STR("<!DOCTYPE root [ <![IGNORE[ <![INCLUDE["), parse_doctype).status == status_bad_doctype);
}
+
+TEST(parse_doctype_stackless_group)
+{
+ std::basic_string<char_t> str;
+
+ int count = 100000;
+
+ str += STR("<!DOCTYPE ");
+
+ for (int i = 0; i < count; ++i)
+ str += STR("<!G ");
+
+ for (int j = 0; j < count; ++j)
+ str += STR(">");
+
+ str += STR(">");
+
+ xml_document doc;
+ CHECK(doc.load_string(str.c_str(), parse_fragment));
+}
+
+TEST(parse_doctype_stackless_ignore)
+{
+ std::basic_string<char_t> str;
+
+ int count = 100000;
+
+ str += STR("<!DOCTYPE ");
+
+ for (int i = 0; i < count; ++i)
+ str += STR("<![IGNORE[ ");
+
+ for (int j = 0; j < count; ++j)
+ str += STR("]]>");
+
+ str += STR(">");
+
+ xml_document doc;
+ CHECK(doc.load_string(str.c_str(), parse_fragment));
+}