oox/CppunitTest_oox_vba_compression.mk | 50 ++++++++++++ oox/qa/unit/data/vba/complex1.bin |binary oox/qa/unit/data/vba/reference/complex1.bin |binary oox/qa/unit/data/vba/reference/simple1.bin |binary oox/qa/unit/data/vba/reference/simple2.bin |binary oox/qa/unit/data/vba/reference/simple3.bin | 1 oox/qa/unit/data/vba/simple1.bin |binary oox/qa/unit/data/vba/simple2.bin |binary oox/qa/unit/data/vba/simple3.bin | 1 oox/qa/unit/vba_compression.cxx | 112 +++++++++++++++++++++++++--- 10 files changed, 153 insertions(+), 11 deletions(-)
New commits: commit 454095d145d516b073085641b0cf6c4c66c1e801 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Aug 15 02:57:55 2015 +0200 forgot to add the test makefile Change-Id: If68972ac8e0f464869660e60e9bd54197ed0e5e6 diff --git a/oox/CppunitTest_oox_vba_compression.mk b/oox/CppunitTest_oox_vba_compression.mk new file mode 100644 index 0000000..bb87cb4 --- /dev/null +++ b/oox/CppunitTest_oox_vba_compression.mk @@ -0,0 +1,50 @@ +# -*- 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,oox_vba_compression)) + +$(eval $(call gb_CppunitTest_add_exception_objects,oox_vba_compression,\ + oox/qa/unit/vba_compression \ +)) + +$(eval $(call gb_CppunitTest_use_api,oox_vba_compression,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,oox_vba_compression,\ + basegfx \ + comphelper \ + cppu \ + cppuhelper \ + editeng \ + expwrap \ + drawinglayer \ + msfilter \ + sal \ + i18nlangtag \ + oox \ + sax \ + sfx \ + svl \ + svt \ + svx \ + svxcore \ + sot \ + tl \ + unotest \ + utl \ + vcl \ + xo \ + xmlscript \ + $(gb_UWINAPI) \ +)) + +# vim: set noet sw=4 ts=4: commit 5fe9d7a0a179e6a58d2d0a4585f3e5022729b5d1 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Aug 15 02:57:23 2015 +0200 add complext vba compression test This is based on my real world test document. Change-Id: I6e6c38aa1ced7fe836a8926c26aa7d488d44e6d9 diff --git a/oox/qa/unit/data/vba/complex1.bin b/oox/qa/unit/data/vba/complex1.bin new file mode 100644 index 0000000..3902082 Binary files /dev/null and b/oox/qa/unit/data/vba/complex1.bin differ diff --git a/oox/qa/unit/data/vba/reference/complex1.bin b/oox/qa/unit/data/vba/reference/complex1.bin new file mode 100644 index 0000000..335b8e8 Binary files /dev/null and b/oox/qa/unit/data/vba/reference/complex1.bin differ diff --git a/oox/qa/unit/vba_compression.cxx b/oox/qa/unit/vba_compression.cxx index 715a0e4..4519700 100644 --- a/oox/qa/unit/vba_compression.cxx +++ b/oox/qa/unit/vba_compression.cxx @@ -27,6 +27,9 @@ public: void testSimple3(); + // real stream from a document + void testComplex1(); + // avoid the BootstrapFixtureBase::setUp and tearDown virtual void setUp() SAL_OVERRIDE; virtual void tearDown() SAL_OVERRIDE; @@ -35,6 +38,7 @@ public: CPPUNIT_TEST(testSimple1); CPPUNIT_TEST(testSimple2); CPPUNIT_TEST(testSimple3); + CPPUNIT_TEST(testComplex1); CPPUNIT_TEST_SUITE_END(); private: @@ -130,6 +134,28 @@ void TestVbaCompression::testSimple3() } } +void TestVbaCompression::testComplex1() +{ + OUString aTestFile = getPathFromSrc("/oox/qa/unit/data/vba/complex1.bin"); + OUString aReference = getPathFromSrc("/oox/qa/unit/data/vba/reference/complex1.bin"); + + SvMemoryStream aOutputMemoryStream(4096, 4096); + SvMemoryStream aReferenceMemoryStream(4096, 4096); + ReadFiles(aTestFile, aReference, aOutputMemoryStream, aReferenceMemoryStream, "/tmp/vba_debug_complex1.bin"); + + CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); + + const sal_uInt8* pReferenceData = (const sal_uInt8*) aReferenceMemoryStream.GetData(); + const sal_uInt8* pData = (const sal_uInt8*)aOutputMemoryStream.GetData(); + + size_t nSize = std::min(aReferenceMemoryStream.GetSize(), + aOutputMemoryStream.GetSize()); + for (size_t i = 0; i < nSize; ++i) + { + CPPUNIT_ASSERT_EQUAL((int)pReferenceData[i], (int)pData[i]); + } +} + void TestVbaCompression::setUp() { } commit 3a56ecc2b6ea191e822067781abebb8d4b30676e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Aug 15 02:42:28 2015 +0200 fix some of the vba compression tests Change-Id: Icfb9b63206fe22641ebdef76619fe70e1f5d5e04 diff --git a/oox/qa/unit/data/vba/reference/simple1.bin b/oox/qa/unit/data/vba/reference/simple1.bin index bd55e2e..a4644fb 100644 Binary files a/oox/qa/unit/data/vba/reference/simple1.bin and b/oox/qa/unit/data/vba/reference/simple1.bin differ diff --git a/oox/qa/unit/data/vba/reference/simple2.bin b/oox/qa/unit/data/vba/reference/simple2.bin index 89f448a..5de3f5a 100644 Binary files a/oox/qa/unit/data/vba/reference/simple2.bin and b/oox/qa/unit/data/vba/reference/simple2.bin differ diff --git a/oox/qa/unit/data/vba/reference/simple3.bin b/oox/qa/unit/data/vba/reference/simple3.bin new file mode 100644 index 0000000..a38e8a8 --- /dev/null +++ b/oox/qa/unit/data/vba/reference/simple3.bin @@ -0,0 +1 @@ +° diff --git a/oox/qa/unit/data/vba/simple1.bin b/oox/qa/unit/data/vba/simple1.bin index 61dbbeb..d59c1d5 100644 Binary files a/oox/qa/unit/data/vba/simple1.bin and b/oox/qa/unit/data/vba/simple1.bin differ diff --git a/oox/qa/unit/data/vba/simple2.bin b/oox/qa/unit/data/vba/simple2.bin index 9843ad2..1b9b88b 100644 Binary files a/oox/qa/unit/data/vba/simple2.bin and b/oox/qa/unit/data/vba/simple2.bin differ diff --git a/oox/qa/unit/data/vba/simple3.bin b/oox/qa/unit/data/vba/simple3.bin new file mode 100644 index 0000000..72060e8 --- /dev/null +++ b/oox/qa/unit/data/vba/simple3.bin @@ -0,0 +1 @@ + diff --git a/oox/qa/unit/vba_compression.cxx b/oox/qa/unit/vba_compression.cxx index 6a71331..715a0e4 100644 --- a/oox/qa/unit/vba_compression.cxx +++ b/oox/qa/unit/vba_compression.cxx @@ -25,6 +25,8 @@ public: // a sequence containing one subsequence that can be compressed void testSimple2(); + void testSimple3(); + // avoid the BootstrapFixtureBase::setUp and tearDown virtual void setUp() SAL_OVERRIDE; virtual void tearDown() SAL_OVERRIDE; @@ -32,6 +34,7 @@ public: CPPUNIT_TEST_SUITE(TestVbaCompression); CPPUNIT_TEST(testSimple1); CPPUNIT_TEST(testSimple2); + CPPUNIT_TEST(testSimple3); CPPUNIT_TEST_SUITE_END(); private: @@ -70,7 +73,7 @@ void TestVbaCompression::testSimple1() ReadFiles(aTestFile, aReference, aOutputMemoryStream, aReferenceMemoryStream, "/tmp/vba_debug.bin"); - // CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); + CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); const sal_uInt8* pReferenceData = (const sal_uInt8*) aReferenceMemoryStream.GetData(); const sal_uInt8* pData = (const sal_uInt8*)aOutputMemoryStream.GetData(); @@ -91,8 +94,30 @@ void TestVbaCompression::testSimple2() SvMemoryStream aOutputMemoryStream(4096, 4096); SvMemoryStream aReferenceMemoryStream(4096, 4096); ReadFiles(aTestFile, aReference, aOutputMemoryStream, aReferenceMemoryStream, "/tmp/vba_debug2.bin"); - // - // CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); + + CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); + + const sal_uInt8* pReferenceData = (const sal_uInt8*) aReferenceMemoryStream.GetData(); + const sal_uInt8* pData = (const sal_uInt8*)aOutputMemoryStream.GetData(); + + size_t nSize = std::min(aReferenceMemoryStream.GetSize(), + aOutputMemoryStream.GetSize()); + for (size_t i = 0; i < nSize; ++i) + { + CPPUNIT_ASSERT_EQUAL((int)pReferenceData[i], (int)pData[i]); + } +} + +void TestVbaCompression::testSimple3() +{ + OUString aTestFile = getPathFromSrc("/oox/qa/unit/data/vba/simple3.bin"); + OUString aReference = getPathFromSrc("/oox/qa/unit/data/vba/reference/simple3.bin"); + + SvMemoryStream aOutputMemoryStream(4096, 4096); + SvMemoryStream aReferenceMemoryStream(4096, 4096); + ReadFiles(aTestFile, aReference, aOutputMemoryStream, aReferenceMemoryStream, "/tmp/vba_debug3.bin"); + + CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); const sal_uInt8* pReferenceData = (const sal_uInt8*) aReferenceMemoryStream.GetData(); const sal_uInt8* pData = (const sal_uInt8*)aOutputMemoryStream.GetData(); commit dd4fb1f0fabc463c9def747a438fe9ff5a4d661d Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Aug 15 02:24:34 2015 +0200 add one more test for vba compression Change-Id: Iba6b4e7b5d26ac7943f72e2a5b3d5d2dc4fc95fd diff --git a/oox/qa/unit/data/vba/reference/simple2.bin b/oox/qa/unit/data/vba/reference/simple2.bin new file mode 100644 index 0000000..89f448a Binary files /dev/null and b/oox/qa/unit/data/vba/reference/simple2.bin differ diff --git a/oox/qa/unit/data/vba/simple2.bin b/oox/qa/unit/data/vba/simple2.bin new file mode 100644 index 0000000..9843ad2 --- /dev/null +++ b/oox/qa/unit/data/vba/simple2.bin @@ -0,0 +1 @@ +0000000: 0001 0203 0000 0000 0405 . diff --git a/oox/qa/unit/vba_compression.cxx b/oox/qa/unit/vba_compression.cxx index b526a3c..6a71331 100644 --- a/oox/qa/unit/vba_compression.cxx +++ b/oox/qa/unit/vba_compression.cxx @@ -19,40 +19,79 @@ class TestVbaCompression : public test::BootstrapFixtureBase { public: + // just a sequence of bytes that should not be compressed at all void testSimple1(); + // a sequence containing one subsequence that can be compressed + void testSimple2(); + // avoid the BootstrapFixtureBase::setUp and tearDown virtual void setUp() SAL_OVERRIDE; virtual void tearDown() SAL_OVERRIDE; CPPUNIT_TEST_SUITE(TestVbaCompression); CPPUNIT_TEST(testSimple1); + CPPUNIT_TEST(testSimple2); CPPUNIT_TEST_SUITE_END(); private: }; -void TestVbaCompression::testSimple1() -{ - OUString aTestFile = getPathFromSrc("/oox/qa/unit/data/vba/simple1.bin"); - OUString aReference = getPathFromSrc("/oox/qa/unit/data/vba/reference/simple1.bin"); +namespace { - SvFileStream aInputStream(aTestFile, StreamMode::READ); +void ReadFiles(const OUString& rTestFile, const OUString& rReference, + SvMemoryStream& rOutputMemoryStream, SvMemoryStream& rReferenceMemoryStream, + const OUString& rDebugPath) +{ + SvFileStream aInputStream(rTestFile, StreamMode::READ); SvMemoryStream aInputMemoryStream(4096, 4096); aInputMemoryStream.WriteStream(aInputStream); - SvMemoryStream aOutputMemoryStream(4096, 4096); - VBACompression aCompression(aOutputMemoryStream, aInputMemoryStream); + VBACompression aCompression(rOutputMemoryStream, aInputMemoryStream); aCompression.write(); - SvFileStream aReferenceStream(aReference, StreamMode::READ); + SvFileStream aReferenceStream(rReference, StreamMode::READ); + rReferenceMemoryStream.WriteStream(aReferenceStream); + + rOutputMemoryStream.Seek(0); + SvFileStream aDebugStream(rDebugPath, StreamMode::WRITE); + aDebugStream.WriteStream(rOutputMemoryStream); +} + +} + +void TestVbaCompression::testSimple1() +{ + OUString aTestFile = getPathFromSrc("/oox/qa/unit/data/vba/simple1.bin"); + OUString aReference = getPathFromSrc("/oox/qa/unit/data/vba/reference/simple1.bin"); + + SvMemoryStream aOutputMemoryStream(4096, 4096); SvMemoryStream aReferenceMemoryStream(4096, 4096); - aReferenceMemoryStream.WriteStream(aReferenceStream); + ReadFiles(aTestFile, aReference, aOutputMemoryStream, + aReferenceMemoryStream, "/tmp/vba_debug.bin"); + + // CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); - aOutputMemoryStream.Seek(0); - SvFileStream aDebugStream("/tmp/vba_debug.bin", StreamMode::WRITE); - aDebugStream.WriteStream(aOutputMemoryStream); + const sal_uInt8* pReferenceData = (const sal_uInt8*) aReferenceMemoryStream.GetData(); + const sal_uInt8* pData = (const sal_uInt8*)aOutputMemoryStream.GetData(); + size_t nSize = std::min(aReferenceMemoryStream.GetSize(), + aOutputMemoryStream.GetSize()); + for (size_t i = 0; i < nSize; ++i) + { + CPPUNIT_ASSERT_EQUAL((int)pReferenceData[i], (int)pData[i]); + } +} + +void TestVbaCompression::testSimple2() +{ + OUString aTestFile = getPathFromSrc("/oox/qa/unit/data/vba/simple2.bin"); + OUString aReference = getPathFromSrc("/oox/qa/unit/data/vba/reference/simple2.bin"); + + SvMemoryStream aOutputMemoryStream(4096, 4096); + SvMemoryStream aReferenceMemoryStream(4096, 4096); + ReadFiles(aTestFile, aReference, aOutputMemoryStream, aReferenceMemoryStream, "/tmp/vba_debug2.bin"); + // // CPPUNIT_ASSERT_EQUAL(aReferenceMemoryStream.GetSize(), aOutputMemoryStream.GetSize()); const sal_uInt8* pReferenceData = (const sal_uInt8*) aReferenceMemoryStream.GetData();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits