diff options
author | David Tardon <dtardon@redhat.com> | 2014-07-23 21:22:33 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-07-24 08:19:31 +0200 |
commit | 9825e1697d8dd786fc40dad065188c47d6f14990 (patch) | |
tree | ede2421f5e62fac8bf34f0f754b2f85f7dd21b1a /svtools/qa | |
parent | 2a19718575e4b9c5757da55ab64dd17ef7d3c9c4 (diff) |
add test for swapping of GraphicObject
Change-Id: I341f52e5dfedb61130545cf30ff61e891abc7e04
Diffstat (limited to 'svtools/qa')
-rw-r--r-- | svtools/qa/unit/GraphicObjectTest.cxx | 129 | ||||
-rw-r--r-- | svtools/qa/unit/data/graphic.png | bin | 0 -> 175 bytes |
2 files changed, 129 insertions, 0 deletions
diff --git a/svtools/qa/unit/GraphicObjectTest.cxx b/svtools/qa/unit/GraphicObjectTest.cxx new file mode 100644 index 000000000000..fac7c8005bb6 --- /dev/null +++ b/svtools/qa/unit/GraphicObjectTest.cxx @@ -0,0 +1,129 @@ +/* -*- 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 <cppunit/extensions/HelperMacros.h> +#include "cppunit/plugin/TestPlugIn.h" + +#include <svtools/grfmgr.hxx> + +#include <test/bootstrapfixture.hxx> + +#include <tools/stream.hxx> + +#include <vcl/image.hxx> + +namespace +{ + +class GraphicObjectTest: public test::BootstrapFixture +{ + +public: + void testSwap(); + +private: + DECL_LINK(getLinkStream, GraphicObject*); + +private: + CPPUNIT_TEST_SUITE(GraphicObjectTest); + CPPUNIT_TEST(testSwap); + CPPUNIT_TEST_SUITE_END(); +}; + +static const char aGraphicFile[] = "/svtools/qa/unit/data/graphic.png"; +static const sal_uLong nGraphicSizeBytes = 4800; + +const Graphic lcl_loadGraphic(const rtl::OUString &rUrl) +{ + const Image aImage(rUrl); + return Graphic(aImage.GetBitmapEx()); +} + +IMPL_LINK(GraphicObjectTest, getLinkStream, GraphicObject*, /*pGraphObj*/) +{ + return reinterpret_cast<sal_IntPtr>(GRFMGR_AUTOSWAPSTREAM_LINK); +} + +void GraphicObjectTest::testSwap() +{ + // simple non-linked case + { + GraphicObject aGraphObj(lcl_loadGraphic(getURLFromSrc(aGraphicFile))); + CPPUNIT_ASSERT(!aGraphObj.HasSwapStreamHdl()); + CPPUNIT_ASSERT(!aGraphObj.IsSwappedOut()); + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj.GetGraphic().GetSizeBytes()); + // swap out + CPPUNIT_ASSERT(aGraphObj.SwapOut()); + CPPUNIT_ASSERT(aGraphObj.IsSwappedOut()); + // swap in + CPPUNIT_ASSERT(aGraphObj.SwapIn()); + CPPUNIT_ASSERT(!aGraphObj.IsSwappedOut()); + // the data are still there + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj.GetGraphic().GetSizeBytes()); + } + + // linked case + { + GraphicObject aGraphObj(lcl_loadGraphic(getURLFromSrc(aGraphicFile))); + aGraphObj.SetSwapStreamHdl(LINK(this, GraphicObjectTest, getLinkStream)); + + CPPUNIT_ASSERT(aGraphObj.HasSwapStreamHdl()); + CPPUNIT_ASSERT(!aGraphObj.IsSwappedOut()); + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj.GetGraphic().GetSizeBytes()); + // swap out + CPPUNIT_ASSERT(aGraphObj.SwapOut()); + CPPUNIT_ASSERT(aGraphObj.IsSwappedOut()); + // swap in + CPPUNIT_ASSERT(aGraphObj.SwapIn()); + CPPUNIT_ASSERT(!aGraphObj.IsSwappedOut()); + // the data are still there + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj.GetGraphic().GetSizeBytes()); + } + + // combination of two GraphicObjects + { + GraphicObject aGraphObj(lcl_loadGraphic(getURLFromSrc(aGraphicFile))); + + GraphicObject aGraphObj2(aGraphObj); + aGraphObj2.SetSwapStreamHdl(LINK(this, GraphicObjectTest, getLinkStream)); + + CPPUNIT_ASSERT(!aGraphObj.IsSwappedOut()); + CPPUNIT_ASSERT(!aGraphObj2.IsSwappedOut()); + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj.GetGraphic().GetSizeBytes()); + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj2.GetGraphic().GetSizeBytes()); + + // GraphicObjects never share the same Graphic. A new one is created as one step during + // registration of the GraphicObject at GraphicManager. + + // swap out + CPPUNIT_ASSERT(aGraphObj.SwapOut()); + CPPUNIT_ASSERT(aGraphObj.IsSwappedOut()); + CPPUNIT_ASSERT(!aGraphObj2.IsSwappedOut()); + CPPUNIT_ASSERT(aGraphObj2.SwapOut()); + CPPUNIT_ASSERT(aGraphObj2.IsSwappedOut()); + // swap in + CPPUNIT_ASSERT(aGraphObj2.SwapIn()); + CPPUNIT_ASSERT(!aGraphObj2.IsSwappedOut()); + CPPUNIT_ASSERT(aGraphObj.IsSwappedOut()); + CPPUNIT_ASSERT(aGraphObj.SwapIn()); + CPPUNIT_ASSERT(!aGraphObj.IsSwappedOut()); + // the data are still there + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj.GetGraphic().GetSizeBytes()); + CPPUNIT_ASSERT_EQUAL(nGraphicSizeBytes, aGraphObj2.GetGraphic().GetSizeBytes()); + } +} + +CPPUNIT_TEST_SUITE_REGISTRATION(GraphicObjectTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/qa/unit/data/graphic.png b/svtools/qa/unit/data/graphic.png Binary files differnew file mode 100644 index 000000000000..cbba93bedd81 --- /dev/null +++ b/svtools/qa/unit/data/graphic.png |