/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include #include #include "../../source/graphicfilter/ipict/ipict.hxx" extern "C" { SAL_DLLPUBLIC_EXPORT bool SAL_CALL GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem*); } using namespace ::com::sun::star; /* Implementation of Filters test */ class PictFilterTest : public test::FiltersTest , public test::BootstrapFixture , public XmlTestTools { public: PictFilterTest() : BootstrapFixture(true, false) {} virtual bool load(const OUString &, const OUString &rURL, const OUString &, unsigned int, unsigned int, unsigned int) SAL_OVERRIDE; OUString pictURL() { return getURLFromSrc("/filter/qa/cppunit/data/pict/"); } /** * Ensure CVEs remain unbroken */ void testCVEs(); void testDontClipTooMuch(); CPPUNIT_TEST_SUITE(PictFilterTest); CPPUNIT_TEST(testCVEs); CPPUNIT_TEST(testDontClipTooMuch); CPPUNIT_TEST_SUITE_END(); }; bool PictFilterTest::load(const OUString &, const OUString &rURL, const OUString &, unsigned int, unsigned int, unsigned int) { SvFileStream aFileStream(rURL, STREAM_READ); Graphic aGraphic; return GraphicImport(aFileStream, aGraphic, NULL); } void PictFilterTest::testCVEs() { testDir(OUString(), pictURL(), OUString()); } void PictFilterTest::testDontClipTooMuch() { SvFileStream aFileStream(pictURL() + "clipping-problem.pct", STREAM_READ); GDIMetaFile aGDIMetaFile; pict::ReadPictFile(aFileStream, aGDIMetaFile); MetafileXmlDump dumper; dumper.filterAllActionTypes(); dumper.filterActionType(META_CLIPREGION_ACTION, false); xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); CPPUNIT_ASSERT (pDoc); assertXPath(pDoc, "/metafile/clipregion[5]", "top", "0"); assertXPath(pDoc, "/metafile/clipregion[5]", "left", "0"); assertXPath(pDoc, "/metafile/clipregion[5]", "bottom", "-32767"); assertXPath(pDoc, "/metafile/clipregion[5]", "right", "-32767"); } CPPUNIT_TEST_SUITE_REGISTRATION(PictFilterTest); CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */