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
--- /dev/null
+++ b/oox/qa/unit/data/vba/reference/simple2.bin
Binary files 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:
};
namespace {
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);
VBACompression aCompression(rOutputMemoryStream, aInputMemoryStream);
aCompression.write();
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");
SvFileStream aInputStream(aTestFile, StreamMode::READ);
SvMemoryStream aInputMemoryStream(4096, 4096);
aInputMemoryStream.WriteStream(aInputStream);
SvMemoryStream aOutputMemoryStream(4096, 4096);
SvMemoryStream aReferenceMemoryStream(4096, 4096);
ReadFiles(aTestFile, aReference, aOutputMemoryStream,
aReferenceMemoryStream, "/tmp/vba_debug.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::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);
VBACompression aCompression(aOutputMemoryStream, aInputMemoryStream);
aCompression.write();
SvFileStream aReferenceStream(aReference, StreamMode::READ);
SvMemoryStream aReferenceMemoryStream(4096, 4096);
aReferenceMemoryStream.WriteStream(aReferenceStream);
aOutputMemoryStream.Seek(0);
SvFileStream aDebugStream("/tmp/vba_debug.bin", StreamMode::WRITE);
aDebugStream.WriteStream(aOutputMemoryStream);
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();