From 267c6f2ac71f92999e969232431ba04678e7437e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 07:54:39 +0200 Subject: Adding upstream version 4:24.2.0. Signed-off-by: Daniel Baumann --- xmloff/qa/unit/text/txtprmap.cxx | 87 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 xmloff/qa/unit/text/txtprmap.cxx (limited to 'xmloff/qa/unit/text/txtprmap.cxx') diff --git a/xmloff/qa/unit/text/txtprmap.cxx b/xmloff/qa/unit/text/txtprmap.cxx new file mode 100644 index 0000000000..08c91c4c1a --- /dev/null +++ b/xmloff/qa/unit/text/txtprmap.cxx @@ -0,0 +1,87 @@ +/* -*- 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 + +using namespace ::com::sun::star; + +namespace +{ +/// Covers xmloff/source/text/txtprmap.cxx fixes. +class Test : public UnoApiXmlTest +{ +public: + Test(); +}; +} + +Test::Test() + : UnoApiXmlTest("/xmloff/qa/unit/data/") +{ +} + +CPPUNIT_TEST_FIXTURE(Test, testFloatingTableWrapTextAtFlyStartExport) +{ + // Given a document with a floating table: + mxComponent = loadFromDesktop("private:factory/swriter"); + // Insert a table: + uno::Sequence aArgs = { + comphelper::makePropertyValue("Rows", static_cast(1)), + comphelper::makePropertyValue("Columns", static_cast(1)), + }; + dispatchCommand(mxComponent, ".uno:InsertTable", aArgs); + // Select it: + dispatchCommand(mxComponent, ".uno:SelectAll", {}); + // Wrap in a fly: + aArgs = { + comphelper::makePropertyValue("AnchorType", static_cast(0)), + }; + dispatchCommand(mxComponent, ".uno:InsertFrame", aArgs); + // Mark it as a floating table that wraps on all pages: + uno::Reference xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xFrame( + xTextFramesSupplier->getTextFrames()->getByName("Frame1"), uno::UNO_QUERY); + xFrame->setPropertyValue("IsSplitAllowed", uno::Any(true)); + xFrame->setPropertyValue("WrapTextAtFlyStart", uno::Any(true)); + + // When saving to ODT: + save("writer8"); + + // Then make sure we write a floating table, that wraps on all pages: + xmlDocUniquePtr pXmlDoc = parseExport("content.xml"); + // Without the accompanying fix in place, this test would have failed with: + // - XPath '//style:graphic-properties' no attribute 'wrap-text-at-frame-start' exist + // i.e. no floating table was exported. + assertXPath(pXmlDoc, "//style:graphic-properties"_ostr, "wrap-text-at-frame-start"_ostr, + "true"); +} + +CPPUNIT_TEST_FIXTURE(Test, testFloatingTableWrapTextAtFlyStartImport) +{ + // Given a document with a floating table + wrap on all pages + // (loext:may-break-between-pages="true" and loext:wrap-text-at-frame-start="true"), when + // importing that document: + loadFromFile(u"floattable-wrap-all-pages2.fodt"); + + // Then make sure that the matching text frame property is set: + uno::Reference xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xFrame( + xTextFramesSupplier->getTextFrames()->getByName("Frame1"), uno::UNO_QUERY); + bool bWrapTextAtFlyStart = false; + // Without the accompanying fix in place, this test would have failed, the property was false. + xFrame->getPropertyValue("WrapTextAtFlyStart") >>= bWrapTextAtFlyStart; + CPPUNIT_ASSERT(bWrapTextAtFlyStart); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3