Add another test case for Excel 2003 XML import.

This one is for importing border directions.

Change-Id: I92666c30b629109a1061b7ae1fad31841850d34b
Reviewed-on: https://gerrit.libreoffice.org/50021
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
This commit is contained in:
Kohei Yoshida
2018-02-20 12:48:37 +01:00
committed by Kohei Yoshida
parent 3be02487f0
commit 55cdba99f6
2 changed files with 213 additions and 0 deletions
+121
View File
@@ -0,0 +1,121 @@
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>Kohei Yoshida</Author>
<LastAuthor>Kohei Yoshida</LastAuthor>
<Created>2018-01-14T17:03:52Z</Created>
<LastSaved>2018-01-25T01:00:20Z</LastSaved>
<Version>16.00</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
<AllowPNG/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>7680</WindowHeight>
<WindowWidth>20490</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>0</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s16">
<Borders>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s17">
<Borders>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s18">
<Borders>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s19">
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s20">
<Borders>
<Border ss:Position="DiagonalLeft" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s21">
<Borders>
<Border ss:Position="DiagonalRight" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
<Style ss:ID="s22">
<Borders>
<Border ss:Position="DiagonalLeft" ss:LineStyle="Continuous" ss:Weight="1"/>
<Border ss:Position="DiagonalRight" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
</Style>
</Styles>
<Worksheet ss:Name="Directions">
<Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="14" x:FullColumns="1"
x:FullRows="1" ss:DefaultRowHeight="15">
<Column ss:Index="2" ss:AutoFitWidth="0" ss:Width="92.25"/>
<Row ss:Index="2">
<Cell ss:Index="2" ss:StyleID="s16"><Data ss:Type="String">top</Data></Cell>
</Row>
<Row ss:Index="4">
<Cell ss:Index="2" ss:StyleID="s17"><Data ss:Type="String">left</Data></Cell>
</Row>
<Row ss:Index="6">
<Cell ss:Index="2" ss:StyleID="s18"><Data ss:Type="String">right</Data></Cell>
</Row>
<Row ss:Index="8">
<Cell ss:Index="2" ss:StyleID="s19"><Data ss:Type="String">bottom</Data></Cell>
</Row>
<Row ss:Index="10">
<Cell ss:Index="2" ss:StyleID="s20"><Data ss:Type="String">tl to br</Data></Cell>
</Row>
<Row ss:Index="12">
<Cell ss:Index="2" ss:StyleID="s21"><Data ss:Type="String">tr to bl</Data></Cell>
</Row>
<Row ss:Index="14">
<Cell ss:Index="2" ss:StyleID="s22"><Data ss:Type="String">cross diagonal</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<Header x:Margin="0.3"/>
<Footer x:Margin="0.3"/>
<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
</PageSetup>
<Print>
<ValidPrinterInfo/>
<HorizontalResolution>600</HorizontalResolution>
<VerticalResolution>600</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>13</ActiveRow>
<ActiveCol>1</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>
+92
View File
@@ -241,6 +241,7 @@ public:
void testBackgroundColorStandardXLSXML();
void testNamedExpressionsXLSXML();
void testEmptyRowsXLSXML();
void testBorderDirectionsXLSXML();
CPPUNIT_TEST_SUITE(ScFiltersTest);
CPPUNIT_TEST(testBooleanFormatXLSX);
@@ -367,6 +368,7 @@ public:
CPPUNIT_TEST(testBackgroundColorStandardXLSXML);
CPPUNIT_TEST(testNamedExpressionsXLSXML);
CPPUNIT_TEST(testEmptyRowsXLSXML);
CPPUNIT_TEST(testBorderDirectionsXLSXML);
CPPUNIT_TEST(testCondFormatFormulaListenerXLSX);
CPPUNIT_TEST_SUITE_END();
@@ -3681,6 +3683,96 @@ void ScFiltersTest::testEmptyRowsXLSXML()
xDocSh->DoClose();
}
void ScFiltersTest::testBorderDirectionsXLSXML()
{
ScDocShellRef xDocSh = loadDoc("border-directions.", FORMAT_XLS_XML);
CPPUNIT_ASSERT_MESSAGE("Failed to load border-directions.xml", xDocSh.is());
ScDocument& rDoc = xDocSh->GetDocument();
struct Check
{
ScAddress aPos;
bool bTop;
bool bBottom;
bool bLeft;
bool bRight;
bool bTLtoBR;
bool bTRtoBL;
};
std::vector<Check> aChecks = {
{ { 1, 1, 0 }, true, false, false, false, false, false }, // B2 - top
{ { 1, 3, 0 }, false, false, true, false, false, false }, // B4 - left
{ { 1, 5, 0 }, false, false, false, true, false, false }, // B6 - right
{ { 1, 7, 0 }, false, true, false, false, false, false }, // B8 - bottom
{ { 1, 9, 0 }, false, false, false, false, true, false }, // B10 - tl to br
{ { 1, 11, 0 }, false, false, false, false, false, true }, // B12 - tr to bl
{ { 1, 13, 0 }, false, false, false, false, true, true }, // B14 - cross-diagonal
};
auto funcCheckBorder = []( bool bHasBorder, const editeng::SvxBorderLine* pLine ) -> bool
{
if (bHasBorder)
{
if (!pLine)
{
std::cout << "Border was expected, but not found!" << std::endl;
return false;
}
if (SvxBorderLineStyle::SOLID != pLine->GetBorderLineStyle())
{
std::cout << "Border type was expected to be of SOLID, but is not." << std::endl;
return false;
}
if (Color(COL_BLACK) != pLine->GetColor())
{
std::cout << "Border color was expected to be black, but is not." << std::endl;
return false;
}
}
else
{
if (pLine)
{
std::cout << "Border was not expected, but is found!" << std::endl;
return false;
}
}
return true;
};
for (const Check& c : aChecks)
{
const ScPatternAttr* pPat = rDoc.GetPattern(c.aPos);
CPPUNIT_ASSERT(pPat);
const SvxBoxItem& rBox = pPat->GetItem(ATTR_BORDER);
const editeng::SvxBorderLine* pLine = rBox.GetTop();
CPPUNIT_ASSERT(funcCheckBorder(c.bTop, pLine));
pLine = rBox.GetBottom();
CPPUNIT_ASSERT(funcCheckBorder(c.bBottom, pLine));
pLine = rBox.GetLeft();
CPPUNIT_ASSERT(funcCheckBorder(c.bLeft, pLine));
pLine = rBox.GetRight();
CPPUNIT_ASSERT(funcCheckBorder(c.bRight, pLine));
pLine = pPat->GetItem(ATTR_BORDER_TLBR).GetLine();
CPPUNIT_ASSERT(funcCheckBorder(c.bTLtoBR, pLine));
pLine = pPat->GetItem(ATTR_BORDER_BLTR).GetLine();
CPPUNIT_ASSERT(funcCheckBorder(c.bTRtoBL, pLine));
}
xDocSh->DoClose();
}
void ScFiltersTest::testCondFormatXLSB()
{
ScDocShellRef xDocSh = loadDoc("cond_format.", FORMAT_XLSB);