1 // This file is part of VSTGUI. It is subject to the license terms 2 // in the LICENSE file found in the top-level directory of this 3 // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE 4 5 #include "../unittests.h" 6 #include "../../../uidescription/xmlparser.h" 7 #include <string> 8 9 namespace VSTGUI { 10 using namespace Xml; 11 12 namespace { 13 14 struct Handler : public IHandler 15 { 16 bool stopOnStartElement {false}; startXmlElementVSTGUI::__anon04436b330111::Handler17 void startXmlElement (Parser* parser, IdStringPtr elementName, UTF8StringPtr* elementAttributes) override 18 { 19 if (stopOnStartElement) 20 parser->stop (); 21 } endXmlElementVSTGUI::__anon04436b330111::Handler22 void endXmlElement (Parser* parser, IdStringPtr name) override 23 { 24 } xmlCharDataVSTGUI::__anon04436b330111::Handler25 void xmlCharData (Parser* parser, const int8_t* data, int32_t length) override 26 { 27 } xmlCommentVSTGUI::__anon04436b330111::Handler28 void xmlComment (Parser* parser, IdStringPtr comment) override 29 { 30 } 31 32 }; 33 34 } // anonymous 35 36 constexpr auto validXML = 37 R"(<?xml version="1.0" encoding="UTF-8"?> 38 <tag attr="bla"> 39 CHARDATA 40 <!-- comment --> 41 </tag> 42 )"; 43 44 constexpr auto validXMLWithJunkAtEnd = 45 R"(<?xml version="1.0" encoding="UTF-8"?> 46 <tag attr="bla"> 47 CHARDATA 48 <!-- comment --> 49 </tag> 50 this is junk 51 )"; 52 53 constexpr auto invalidXML = 54 R"( 55 <tag attr="bla"> 56 CHARDATA 57 <!-- comment --> 58 </tag2> 59 )"; 60 61 TESTCASE(XMLParserTest, 62 63 TEST(validParse, 64 MemoryContentProvider provider (validXML, static_cast<uint32_t> (strlen (validXML))); 65 Handler handler; 66 Parser p; 67 EXPECT(p.parse (&provider, &handler) == true); 68 ); 69 70 TEST(validParseWithJunkAtEnd, 71 MemoryContentProvider provider (validXMLWithJunkAtEnd, static_cast<uint32_t> (strlen (validXMLWithJunkAtEnd))); 72 Handler handler; 73 Parser p; 74 EXPECT(p.parse (&provider, &handler) == true); 75 ); 76 77 TEST(invalidParse, 78 MemoryContentProvider provider (invalidXML, static_cast<uint32_t> (strlen (invalidXML))); 79 Handler handler; 80 Parser p; 81 EXPECT(p.parse (&provider, &handler) == false); 82 ); 83 84 TEST(stopParse, 85 MemoryContentProvider provider (validXML, static_cast<uint32_t> (strlen (validXML))); 86 Handler handler; 87 handler.stopOnStartElement = true; 88 Parser p; 89 EXPECT(p.parse (&provider, &handler) == false); 90 ); 91 92 ); 93 94 } // VSTGUI 95