summaryrefslogtreecommitdiff
path: root/sc/qa/unit/subsequent_export-test.cxx
diff options
context:
space:
mode:
authorNoel Power <noel.power@suse.com>2013-01-29 14:51:49 +0000
committerEike Rathke <erack@redhat.com>2013-02-07 16:23:32 +0000
commit5aade07de7b404d1254e2135de751c3af4a05e1e (patch)
tree5b285dff2db223b4b93a2580a59dc81cf0f823b6 /sc/qa/unit/subsequent_export-test.cxx
parentfaffc3f82e09a65c7ab400e4314afa821536bfe0 (diff)
correctly handle repeated row heights for empty rows ( fdo#59973 )
rollup of 9327467a2c5537613fa59013258532028da9c43b and b75bf09a5b905a3ed9c251869983a400c70c7fc6 it seems both xls & xlsx export suffer from problems with multiple row heights repeated ( if those rows are empty ) better default row detection ( associated with fdo#55621 ) previous patch associated with fdo#55621 compared single instances of row heights to determine the default height, it didn't take into account though repeated rows. Additionally the limit of rows heights ( where rows were empty ) considered when exporting xlsx was the old 65535 limit. Change-Id: I3ed68a81517a3e55d1de1954fcb99e7cb39be337 Reviewed-on: https://gerrit.libreoffice.org/2004 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc/qa/unit/subsequent_export-test.cxx')
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx74
1 files changed, 74 insertions, 0 deletions
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 26fe25c8bd18..844020d71461 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -77,6 +77,7 @@ public:
void test();
void testPasswordExport();
void testConditionalFormatExportXLSX();
+ void testMiscRowHeightExport();
CPPUNIT_TEST_SUITE(ScExportTest);
CPPUNIT_TEST(test);
@@ -84,6 +85,7 @@ public:
CPPUNIT_TEST(testPasswordExport);
#endif
CPPUNIT_TEST(testConditionalFormatExportXLSX);
+ CPPUNIT_TEST(testMiscRowHeightExport);
CPPUNIT_TEST_SUITE_END();
private:
@@ -297,6 +299,78 @@ void ScExportTest::testConditionalFormatExportXLSX()
testCondFile(aCSVPath, pDoc, 0);
}
+void ScExportTest::testMiscRowHeightExport()
+{
+
+ struct TestParam
+ {
+ struct RowData
+ {
+ SCROW nStartRow;
+ SCROW nEndRow;
+ SCTAB nTab;
+ int nExpectedHeight;
+ };
+ const char* sTestDoc;
+ int nImportType;
+ int nExportType;
+ int nRowData;
+ RowData* pData;
+ };
+
+ TestParam::RowData DfltRowData[] =
+ {
+ { 0, 4, 0, 529 },
+ { 5, 10, 0, 1058 },
+ { 17, 20, 0, 1767 },
+ { 1048573, 1048575, 0, 529 },
+ };
+
+ TestParam::RowData EmptyRepeatRowData[] =
+ {
+ { 0, 4, 0, 529 },
+ { 5, 10, 0, 1058 },
+ { 17, 20, 0, 1767 },
+ };
+
+ TestParam aTestValues[] =
+ {
+ { "miscrowheights.", XLSX, XLSX, SAL_N_ELEMENTS(DfltRowData), DfltRowData },
+ { "miscrowheights.", XLSX, XLS, SAL_N_ELEMENTS(DfltRowData), DfltRowData },
+ { "miscemptyrepeatedrowheights.", ODS, XLSX, SAL_N_ELEMENTS(EmptyRepeatRowData), EmptyRepeatRowData },
+ { "miscemptyrepeatedrowheights.", ODS, XLS, SAL_N_ELEMENTS(EmptyRepeatRowData), EmptyRepeatRowData },
+ };
+
+ for ( unsigned int index=0; index<SAL_N_ELEMENTS(aTestValues); ++index )
+ {
+ OUString sFileName = OUString::createFromAscii( aTestValues[ index ].sTestDoc );
+ printf("aTestValues[%d] %s\n", index, OUStringToOString( sFileName, RTL_TEXTENCODING_UTF8 ).getStr() );
+ int nImportType = aTestValues[ index ].nImportType;
+ int nExportType = aTestValues[ index ].nExportType;
+ ScDocShellRef xShell = loadDocument( sFileName, nImportType );
+ CPPUNIT_ASSERT(xShell.Is());
+
+ ScDocShellRef xDocSh = saveAndReload(&(*xShell), nExportType );
+ CPPUNIT_ASSERT(xDocSh.Is());
+
+ ScDocument* pDoc = xDocSh->GetDocument();
+
+ for (int i=0; i<aTestValues[ index ].nRowData; ++i)
+ {
+ SCROW nRow = aTestValues[ index ].pData[ i].nStartRow;
+ SCROW nEndRow = aTestValues[ index ].pData[ i ].nEndRow;
+ SCTAB nTab = aTestValues[ index ].pData[ i ].nTab;
+ int nExpectedHeight = aTestValues[ index ].pData[ i ].nExpectedHeight;
+ for ( ; nRow <= nEndRow; ++nRow )
+ {
+ printf("\t checking row %d for height %d\n", nRow, nExpectedHeight );
+ int nHeight = sc::TwipsToHMM( pDoc->GetRowHeight(nRow, nTab, false) );
+ CPPUNIT_ASSERT_EQUAL(nExpectedHeight, nHeight);
+ }
+ }
+ }
+}
+
ScExportTest::ScExportTest()
: m_aBaseString(RTL_CONSTASCII_USTRINGPARAM("/sc/qa/unit/data"))
{