test/httpwstest.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-)
New commits: commit 7f08458d959e1df28aa8dcefa714296a475c6b16 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Jun 19 17:27:10 2017 +0100 Make the slideshow SVG validation somewhat less lame. Change-Id: Ie4853359ba3b43aabe629d0dcabb635d260627b6 diff --git a/test/httpwstest.cpp b/test/httpwstest.cpp index 3df78569..79c64fa4 100644 --- a/test/httpwstest.cpp +++ b/test/httpwstest.cpp @@ -31,6 +31,12 @@ #include <Poco/StreamCopier.h> #include <Poco/StringTokenizer.h> #include <Poco/URI.h> +#include <Poco/DOM/Node.h> +#include <Poco/DOM/Document.h> +#include <Poco/DOM/NodeFilter.h> +#include <Poco/DOM/NodeIterator.h> +#include <Poco/DOM/DOMParser.h> +#include <Poco/SAX/InputSource.h> #include <cppunit/extensions/HelperMacros.h> @@ -1204,6 +1210,27 @@ void HTTPWSTest::testInsertDelete() } } +static int findInDOM(Poco::XML::Document *doc, const char *string, bool checkName, + unsigned long nodeFilter = Poco::XML::NodeFilter::SHOW_ALL) +{ + int count = 0; + Poco::XML::NodeIterator itCode(doc, nodeFilter); + while (Poco::XML::Node* pNode = itCode.nextNode()) + { + if (checkName) + { + if (pNode->nodeName() == string) + count++; + } + else + { + if (pNode->getNodeValue().find(string) != std::string::npos) + count++; + } + } + return count; +} + void HTTPWSTest::testSlideShow() { const auto testname = "slideshow "; @@ -1250,15 +1277,26 @@ void HTTPWSTest::testSlideShow() CPPUNIT_ASSERT_EQUAL(Poco::Net::HTTPResponse::HTTP_OK, responseSVG.getStatus()); CPPUNIT_ASSERT_EQUAL(std::string("image/svg+xml"), responseSVG.getContentType()); std::cerr << "SVG file size: " << responseSVG.getContentLength() << std::endl; - // std::ofstream ofs("/tmp/slide.svg"); - // Poco::StreamCopier::copyStream(rs, ofs); - // ofs.close(); - (void)rs; - // Some setups render differently; recognize these two valid output sizes for now. - // Seems LO generates different svg content, even though visually identical. - // Current known sizes: 434748, 451329, 467345, 468653, 483882. - CPPUNIT_ASSERT(responseSVG.getContentLength() >= std::streamsize(430000) && - responseSVG.getContentLength() <= std::streamsize(490000)); + +// std::ofstream ofs("/tmp/slide.svg"); +// Poco::StreamCopier::copyStream(rs, ofs); +// ofs.close(); + + // Asserting on the size of the stream is really unhelpful; + // lets checkout the contents instead ... + Poco::XML::DOMParser parser; + Poco::XML::InputSource svgSrc(rs); + Poco::AutoPtr<Poco::XML::Document> doc = parser.parse(&svgSrc); + + // Do we have our automation / scripting + CPPUNIT_ASSERT(findInDOM(doc, "jessyinkstart", false, Poco::XML::NodeFilter::SHOW_CDATA_SECTION)); + CPPUNIT_ASSERT(findInDOM(doc, "jessyinkend", false, Poco::XML::NodeFilter::SHOW_CDATA_SECTION)); + CPPUNIT_ASSERT(findInDOM(doc, "libreofficestart", false, Poco::XML::NodeFilter::SHOW_CDATA_SECTION)); + CPPUNIT_ASSERT(findInDOM(doc, "libreofficeend", false, Poco::XML::NodeFilter::SHOW_CDATA_SECTION)); + + // Do we have plausible content ? + int countText = findInDOM(doc, "text", true, Poco::XML::NodeFilter::SHOW_ELEMENT); + CPPUNIT_ASSERT_EQUAL(countText, 93); } catch (const Poco::Exception& exc) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits