summaryrefslogtreecommitdiff
path: root/oox/qa
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-12-02 21:01:19 +0100
committerMiklos Vajna <vmiklos@collabora.com>2019-12-03 09:22:41 +0100
commitca7004569b39721c3e7247551a43d544fd3204fe (patch)
treea96e2b13c52007b3373a1b30ae124a7646c44f96 /oox/qa
parentc6553564a858a65a74c8727f08ae737c35b81a08 (diff)
tdf#128429 VML import: let mso-layout-flow-alt:bottom-to-top imply vertical
Normally layout flow is set to vertical to denote TBRL, and then optionally there is a layout flow alt to denote BTLR, but the bugdoc shows that the first may be missing. So map to BTLR even in case only the alt layout flow is found in the file. Change-Id: I06fce738fca9aedc0de90ccebda3a24e99425326 Reviewed-on: https://gerrit.libreoffice.org/84275 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'oox/qa')
-rw-r--r--oox/qa/unit/data/layout-flow-alt-alone.docxbin0 -> 7669 bytes
-rw-r--r--oox/qa/unit/vml.cxx89
2 files changed, 89 insertions, 0 deletions
diff --git a/oox/qa/unit/data/layout-flow-alt-alone.docx b/oox/qa/unit/data/layout-flow-alt-alone.docx
new file mode 100644
index 000000000000..59c2db23d588
--- /dev/null
+++ b/oox/qa/unit/data/layout-flow-alt-alone.docx
Binary files differ
diff --git a/oox/qa/unit/vml.cxx b/oox/qa/unit/vml.cxx
new file mode 100644
index 000000000000..ad4e9e229739
--- /dev/null
+++ b/oox/qa/unit/vml.cxx
@@ -0,0 +1,89 @@
+/* -*- 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 <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+
+#include <comphelper/embeddedobjectcontainer.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/propertyvalue.hxx>
+#include <comphelper/scopeguard.hxx>
+#include <comphelper/storagehelper.hxx>
+#include <unotools/mediadescriptor.hxx>
+#include <unotools/tempfile.hxx>
+
+using namespace ::com::sun::star;
+
+char const DATA_DIRECTORY[] = "/oox/qa/unit/data/";
+
+/// oox vml tests.
+class OoxVmlTest : public test::BootstrapFixture, public unotest::MacrosTest
+{
+private:
+ uno::Reference<uno::XComponentContext> mxComponentContext;
+ uno::Reference<lang::XComponent> mxComponent;
+
+public:
+ void setUp() override;
+ void tearDown() override;
+ uno::Reference<lang::XComponent>& getComponent() { return mxComponent; }
+ void load(const OUString& rURL);
+};
+
+void OoxVmlTest::setUp()
+{
+ test::BootstrapFixture::setUp();
+
+ mxComponentContext.set(comphelper::getComponentContext(getMultiServiceFactory()));
+ mxDesktop.set(frame::Desktop::create(mxComponentContext));
+}
+
+void OoxVmlTest::tearDown()
+{
+ if (mxComponent.is())
+ mxComponent->dispose();
+
+ test::BootstrapFixture::tearDown();
+}
+
+void OoxVmlTest::load(const OUString& rFileName)
+{
+ OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + rFileName;
+ mxComponent = loadFromDesktop(aURL);
+}
+
+CPPUNIT_TEST_FIXTURE(OoxVmlTest, testLayoutFlowAltAlone)
+{
+ // mso-layout-flow-alt:bottom-to-top without a matching layout-flow:vertical.
+ load("layout-flow-alt-alone.docx");
+
+ uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY);
+ sal_Int16 nWritingMode = 0;
+ xShape->getPropertyValue("WritingMode") >>= nWritingMode;
+
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 5 [ BTLR ]
+ // - Actual : 4 [ PAGE ]
+ // i.e. in case layout-flow:vertical was missing, the text was not vertical.
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, nWritingMode);
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */