diff options
author | David Tardon <dtardon@redhat.com> | 2017-01-12 21:03:21 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2017-01-29 20:26:42 +0100 |
commit | a48c22e1bfc2019a6c2a35caaa09d2319b783078 (patch) | |
tree | 326655fdbed4a13ab76a4925eb830f06420a7558 /writerperfect | |
parent | 69c03000038e96d120f57b8259763e27907b8470 (diff) |
add test for handling .wk3 format file
Change-Id: Id6fd1f979902e286009d16f9d8ea551df3940859
Diffstat (limited to 'writerperfect')
-rw-r--r-- | writerperfect/CppunitTest_writerperfect_import.mk | 40 | ||||
-rw-r--r-- | writerperfect/Module_writerperfect.mk | 1 | ||||
-rw-r--r-- | writerperfect/qa/unit/ImportTest.cxx | 118 | ||||
-rw-r--r-- | writerperfect/qa/unit/WpftFilterFixture.cxx | 4 | ||||
-rw-r--r-- | writerperfect/qa/unit/WpftFilterFixture.hxx | 5 | ||||
-rw-r--r-- | writerperfect/qa/unit/WpftLoader.hxx | 2 | ||||
-rw-r--r-- | writerperfect/qa/unit/data/import/SOLVE.FM3 | bin | 0 -> 1827 bytes | |||
-rw-r--r-- | writerperfect/qa/unit/data/import/SOLVE.WK3 | bin | 0 -> 10772 bytes |
8 files changed, 166 insertions, 4 deletions
diff --git a/writerperfect/CppunitTest_writerperfect_import.mk b/writerperfect/CppunitTest_writerperfect_import.mk new file mode 100644 index 000000000000..152d26fdb9e4 --- /dev/null +++ b/writerperfect/CppunitTest_writerperfect_import.mk @@ -0,0 +1,40 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# 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/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_import)) + +$(eval $(call gb_CppunitTest_add_defs,writerperfect_import,\ + -DTEST_DIR=\"writerperfect/qa/unit/data/import\" \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,writerperfect_import)) + +$(eval $(call gb_CppunitTest_use_libraries,writerperfect_import,\ + comphelper \ + cppu \ + sal \ + test \ + unotest \ + utl \ + wpftqahelper \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_use_ure,writerperfect_import)) +$(eval $(call gb_CppunitTest_use_vcl,writerperfect_import)) + +$(eval $(call gb_CppunitTest_use_rdb,writerperfect_import,services)) + +$(eval $(call gb_CppunitTest_use_configuration,writerperfect_import)) + +$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_import,\ + writerperfect/qa/unit/ImportTest \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/writerperfect/Module_writerperfect.mk b/writerperfect/Module_writerperfect.mk index eda54bb63aa4..3c6168e3651e 100644 --- a/writerperfect/Module_writerperfect.mk +++ b/writerperfect/Module_writerperfect.mk @@ -39,6 +39,7 @@ $(eval $(call gb_Module_add_check_targets,writerperfect,\ $(eval $(call gb_Module_add_slowcheck_targets,writerperfect,\ CppunitTest_writerperfect_calc \ CppunitTest_writerperfect_draw \ + CppunitTest_writerperfect_import \ CppunitTest_writerperfect_impress \ CppunitTest_writerperfect_writer \ Library_wpftqahelper \ diff --git a/writerperfect/qa/unit/ImportTest.cxx b/writerperfect/qa/unit/ImportTest.cxx new file mode 100644 index 000000000000..9275c6c11b7f --- /dev/null +++ b/writerperfect/qa/unit/ImportTest.cxx @@ -0,0 +1,118 @@ +/* -*- 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 <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <com/sun/star/document/XFilter.hpp> +#include <com/sun/star/document/XTypeDetection.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/sheet/XSpreadsheetDocument.hpp> +#include <com/sun/star/table/XCellRange.hpp> + +#include <unotools/mediadescriptor.hxx> + +#include "WpftFilterFixture.hxx" +#include "WpftLoader.hxx" + +namespace +{ + +namespace beans = css::beans; +namespace container = css::container; +namespace document = css::document; +namespace lang = css::lang; +namespace sheet = css::sheet; +namespace table = css::table; +namespace uno = css::uno; + +using uno::UNO_QUERY; + +using writerperfect::test::WpftLoader; + +class ImportTest : public writerperfect::test::WpftFilterFixture +{ +public: + virtual void setUp() override; + + void testWK3WithFM3(); + + CPPUNIT_TEST_SUITE(ImportTest); + CPPUNIT_TEST(testWK3WithFM3); + CPPUNIT_TEST_SUITE_END(); + +private: + WpftLoader createCalcLoader(const rtl::OUString &rFile) const; + + WpftLoader createLoader(const rtl::OUString &rUrl, const rtl::OUString &rFactoryUrl) const; + + rtl::OUString makeUrl(const rtl::OUString &rFile) const; + +private: + uno::Reference<lang::XMultiServiceFactory> m_xFilterFactory; +}; + +void ImportTest::setUp() +{ + writerperfect::test::WpftFilterFixture::setUp(); + + m_xFilterFactory.set( + m_xFactory->createInstanceWithContext("com.sun.star.document.FilterFactory", m_xContext), + UNO_QUERY); + assert(m_xFilterFactory.is()); +} + +void ImportTest::testWK3WithFM3() +{ + WpftLoader aLoader(createCalcLoader("SOLVE.WK3")); + uno::Reference<sheet::XSpreadsheetDocument> xDoc(aLoader.getDocument(), UNO_QUERY); + CPPUNIT_ASSERT(xDoc.is()); + uno::Reference<container::XIndexAccess> xSheets(xDoc->getSheets(), UNO_QUERY); + CPPUNIT_ASSERT(xSheets.is()); + uno::Reference<table::XCellRange> xSheet(xSheets->getByIndex(0), UNO_QUERY); + CPPUNIT_ASSERT(xSheet.is()); + uno::Reference<beans::XPropertySet> xCellProps(xSheet->getCellByPosition(1, 1), UNO_QUERY); + CPPUNIT_ASSERT(xCellProps.is()); + sal_Int32 nCharColor = 0; + CPPUNIT_ASSERT(xCellProps->getPropertyValue("CharColor") >>= nCharColor); +#if 0 // broken by commit 8154953add163554c00935486a1cf5677cef2609 + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x0000ff), nCharColor); // blue text +#endif +} + +WpftLoader ImportTest::createCalcLoader(const rtl::OUString &rFile) const +{ + return createLoader(makeUrl(rFile), "private:factory/scalc"); +} + +WpftLoader ImportTest::createLoader(const rtl::OUString &rUrl, const rtl::OUString &rFactoryUrl) const +{ + utl::MediaDescriptor aDesc; + aDesc[utl::MediaDescriptor::PROP_URL()] <<= rUrl; + aDesc[utl::MediaDescriptor::PROP_READONLY()] <<= true; + uno::Sequence<beans::PropertyValue> lDesc(aDesc.getAsConstPropertyValueList()); + const rtl::OUString sType = m_xTypeDetection->queryTypeByDescriptor(lDesc, true); + CPPUNIT_ASSERT(!sType.isEmpty()); + const uno::Reference<document::XFilter> xFilter(m_xFilterFactory->createInstance(sType), UNO_QUERY); + CPPUNIT_ASSERT(xFilter.is()); + return WpftLoader(rUrl, xFilter, rFactoryUrl, m_xDesktop, m_xTypeMap, m_xContext); +} + +rtl::OUString ImportTest::makeUrl(const rtl::OUString &rFile) const +{ + return const_cast<ImportTest *>(this)->m_directories.getURLFromSrc("/" TEST_DIR "/" + rFile); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(ImportTest); + +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerperfect/qa/unit/WpftFilterFixture.cxx b/writerperfect/qa/unit/WpftFilterFixture.cxx index 6ceb579cf439..106b28ec4af1 100644 --- a/writerperfect/qa/unit/WpftFilterFixture.cxx +++ b/writerperfect/qa/unit/WpftFilterFixture.cxx @@ -28,10 +28,10 @@ void WpftFilterFixture::setUp() m_xDesktop = frame::theDesktop::get(m_xContext); - const uno::Reference<document::XTypeDetection> xTypeDetection( + m_xTypeDetection.set( m_xFactory->createInstanceWithContext("com.sun.star.document.TypeDetection", m_xContext), uno::UNO_QUERY_THROW); - m_xTypeMap.set(xTypeDetection, uno::UNO_QUERY_THROW); + m_xTypeMap.set(m_xTypeDetection, uno::UNO_QUERY_THROW); } void WpftFilterFixture::tearDown() diff --git a/writerperfect/qa/unit/WpftFilterFixture.hxx b/writerperfect/qa/unit/WpftFilterFixture.hxx index fe8acc2a0133..fde79c254845 100644 --- a/writerperfect/qa/unit/WpftFilterFixture.hxx +++ b/writerperfect/qa/unit/WpftFilterFixture.hxx @@ -52,6 +52,10 @@ namespace container { class XNameAccess; } +namespace document +{ +class XTypeDetection; +} namespace frame { class XDesktop2; @@ -73,6 +77,7 @@ public: protected: css::uno::Reference<css::frame::XDesktop2> m_xDesktop; + css::uno::Reference<css::document::XTypeDetection> m_xTypeDetection; css::uno::Reference<css::container::XNameAccess> m_xTypeMap; }; diff --git a/writerperfect/qa/unit/WpftLoader.hxx b/writerperfect/qa/unit/WpftLoader.hxx index 97f2987ba548..92a1ff008e31 100644 --- a/writerperfect/qa/unit/WpftLoader.hxx +++ b/writerperfect/qa/unit/WpftLoader.hxx @@ -68,8 +68,6 @@ public: const css::uno::Reference<css::container::XNameAccess> &rxTypeMap, const css::uno::Reference<css::uno::XComponentContext> &rxContext ); - WpftLoader(const WpftLoader &) = delete; - WpftLoader &operator=(const WpftLoader &) = delete; ~WpftLoader(); const css::uno::Reference<css::lang::XComponent> &getDocument() const; diff --git a/writerperfect/qa/unit/data/import/SOLVE.FM3 b/writerperfect/qa/unit/data/import/SOLVE.FM3 Binary files differnew file mode 100644 index 000000000000..8e4a2ed2d132 --- /dev/null +++ b/writerperfect/qa/unit/data/import/SOLVE.FM3 diff --git a/writerperfect/qa/unit/data/import/SOLVE.WK3 b/writerperfect/qa/unit/data/import/SOLVE.WK3 Binary files differnew file mode 100644 index 000000000000..7b3d74c1d48a --- /dev/null +++ b/writerperfect/qa/unit/data/import/SOLVE.WK3 |