Kaydet (Commit) 56635089 authored tarafından Marco Cecchetti's avatar Marco Cecchetti

tdf#95356: unit test about text decorations for svg export

Added a unit test for testing that text decorations are exported
correctly.

Change-Id: I2bd71974242a0007726fbdd5ef5637a9ec62fd47
Reviewed-on: https://gerrit.libreoffice.org/19870Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarAndras Timar <andras.timar@collabora.com>
üst e1d1cdd6
...@@ -16,13 +16,52 @@ ...@@ -16,13 +16,52 @@
#include <comphelper/processfactory.hxx> #include <comphelper/processfactory.hxx>
#include <com/sun/star/packages/zip/ZipFileAccess.hpp> #include <com/sun/star/packages/zip/ZipFileAccess.hpp>
#include <boost/preprocessor/stringize.hpp>
#define MAKE_PATH_STRING( path ) BOOST_PP_STRINGIZE( path )
#define SVG_SVG *[name()='svg']
#define SVG_G *[name()='g']
#define SVG_TEXT *[name()='text']
#define SVG_TSPAN *[name()='tspan']
using namespace css; using namespace css;
class SdSVGFilterTest : public SdModelTestBase, public XmlTestTools class SdSVGFilterTest : public test::BootstrapFixture, public unotest::MacrosTest, public XmlTestTools
{ {
uno::Reference<lang::XComponent> mxComponent; uno::Reference<lang::XComponent> mxComponent;
utl::TempFile maTempFile; utl::TempFile maTempFile;
protected:
virtual void registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) override
{
xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("svg"), BAD_CAST("urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"));
}
void load(const char* pDir, const char* pName)
{
return loadURL(getURLFromSrc(pDir) + OUString::createFromAscii(pName), pName);
}
void loadURL(OUString const& rURL, const char* pName)
{
if (mxComponent.is())
mxComponent->dispose();
// Output name early, so in the case of a hang, the name of the hanging input file is visible.
if (pName)
std::cout << pName << ",";
mxComponent = loadFromDesktop(rURL);
CPPUNIT_ASSERT(mxComponent.is());
}
void save()
{
uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
utl::MediaDescriptor aMediaDescriptor;
OUString aFilterName("impress_svg_Export");
aMediaDescriptor["FilterName"] <<= aFilterName;
xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList());
}
public: public:
SdSVGFilterTest() SdSVGFilterTest()
{ {
...@@ -31,7 +70,7 @@ public: ...@@ -31,7 +70,7 @@ public:
virtual void setUp() override virtual void setUp() override
{ {
SdModelTestBase::setUp(); test::BootstrapFixture::setUp();
mxDesktop.set(css::frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory()))); mxDesktop.set(css::frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory())));
} }
...@@ -41,23 +80,35 @@ public: ...@@ -41,23 +80,35 @@ public:
if (mxComponent.is()) if (mxComponent.is())
mxComponent->dispose(); mxComponent->dispose();
SdModelTestBase::tearDown(); test::BootstrapFixture::tearDown();
}
void executeExport(const char* pName)
{
load( "/sd/qa/unit/data/odp/", pName );
save();
} }
void testSVGExportTextDecorations() void testSVGExportTextDecorations()
{ {
mxComponent = loadFromDesktop(getURLFromSrc("/sd/qa/unit/data/odp/svg-export-text-decorations.odp")); executeExport( "svg-export-text-decorations.odp" );
CPPUNIT_ASSERT(mxComponent.is());
uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); xmlDocPtr svgDoc = parseXml(maTempFile);
utl::MediaDescriptor aMediaDescriptor; CPPUNIT_ASSERT(svgDoc);
OUString aFilterName("impress_svg_Export");
aMediaDescriptor["FilterName"] <<= aFilterName; svgDoc->name = reinterpret_cast<char *>(xmlStrdup(reinterpret_cast<xmlChar const *>(OUStringToOString(maTempFile.GetURL(), RTL_TEXTENCODING_UTF8).getStr())));
xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList());
xmlDocPtr pXmlDoc = parseXml(maTempFile); assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG ), 1);
CPPUNIT_ASSERT(pXmlDoc); assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2] ), "class", "SlideGroup");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G ), "class", "Slide");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1] ), "class", "TitleText");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT ), "class", "TextShape");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT/SVG_TSPAN ), "class", "TextParagraph");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "underline");
// TODO use assertXPath() here. assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT ), "class", "TextShape");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "class", "TextParagraph");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "line-through");
} }
CPPUNIT_TEST_SUITE(SdSVGFilterTest); CPPUNIT_TEST_SUITE(SdSVGFilterTest);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment