summaryrefslogtreecommitdiff
path: root/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2018-04-24 19:28:50 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-24 19:28:50 +0000
commitb242943f5e949ce3d92dcb62c7497815ccd231d1 (patch)
tree890290b4c6907018d9236bfb26c2b82e6d0fd4b9 /core/fxcrt/xml/cfx_xmlparser_unittest.cpp
parent9afcfa46ee07bc22c94d49942f5a61d6a374fd2d (diff)
downloadpdfium-b242943f5e949ce3d92dcb62c7497815ccd231d1.tar.xz
Remove m_CurNodeType from CFX_XMLParser
This CL removes the m_CurNodeType member from CFX_XMLParser. This was, essentially, duplicating the m_XMLNodeTypeStack. We now use the top() of the stack element to find the same information. Change-Id: I26507d2eee954837210aa42919ff061cfc8e85d8 Reviewed-on: https://pdfium-review.googlesource.com/31277 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Diffstat (limited to 'core/fxcrt/xml/cfx_xmlparser_unittest.cpp')
-rw-r--r--core/fxcrt/xml/cfx_xmlparser_unittest.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/core/fxcrt/xml/cfx_xmlparser_unittest.cpp b/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
index 790001cc27..b5c9be57cb 100644
--- a/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
+++ b/core/fxcrt/xml/cfx_xmlparser_unittest.cpp
@@ -542,3 +542,30 @@ TEST(CFX_XMLParserTest, IsXMLNameChar) {
EXPECT_TRUE(CFX_XMLTestParser::IsXMLNameChar(0xFFFD, true));
EXPECT_FALSE(CFX_XMLTestParser::IsXMLNameChar(0xFFFE, true));
}
+
+TEST(CFX_XMLParserTest, BadElementClose) {
+ const char* input = "</endtag>";
+
+ auto stream = MakeProxy(input);
+ auto root = pdfium::MakeUnique<CFX_XMLElement>(L"ROOT");
+
+ CFX_XMLTestParser parser(root.get(), stream);
+ ASSERT_EQ(FX_XmlSyntaxResult::Error, parser.DoSyntaxParse());
+}
+
+TEST(CFX_XMLParserTest, DoubleElementClose) {
+ const char* input = "<p></p></p>";
+
+ auto stream = MakeProxy(input);
+ auto root = pdfium::MakeUnique<CFX_XMLElement>(L"ROOT");
+
+ CFX_XMLTestParser parser(root.get(), stream);
+ ASSERT_EQ(FX_XmlSyntaxResult::ElementOpen, parser.DoSyntaxParse());
+ ASSERT_EQ(FX_XmlSyntaxResult::TagName, parser.DoSyntaxParse());
+ ASSERT_EQ(L"p", parser.GetTextData());
+ ASSERT_EQ(FX_XmlSyntaxResult::ElementBreak, parser.DoSyntaxParse());
+ ASSERT_EQ(L"", parser.GetTextData());
+ ASSERT_EQ(FX_XmlSyntaxResult::ElementClose, parser.DoSyntaxParse());
+ ASSERT_EQ(L"p", parser.GetTextData());
+ ASSERT_EQ(FX_XmlSyntaxResult::Error, parser.DoSyntaxParse());
+}