diff options
author | Tibor Nagy <nagy.tibor2@nisz.hu> | 2021-02-07 21:24:45 +0100 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2021-02-15 13:06:51 +0100 |
commit | a5513cb45d90e0a1bfa0dfe39c0f090f1cda45de (patch) | |
tree | 08daae97decd84bf3d2cbf3726fee32dca916b89 /sc/qa | |
parent | 24a3d4eee7a01c4296a93708103d267d5473c790 (diff) |
tdf#139928 XLSX import: fix conditional formatting in same cell range
Multiple conditional formatting rules of the same cell range
were imported incorrectly because of missing handling of their
(different) priorities and operators.
Note: older unit tests were modified according to the fixed priorities.
Co-authored-by: Attila Szűcs (NISZ)
Change-Id: I4b542b310642e1a85ef6281d0025b3ef2b2ba8c5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110544
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'sc/qa')
-rw-r--r-- | sc/qa/unit/data/xlsx/tdf139928.xlsx | bin | 0 -> 10945 bytes | |||
-rw-r--r-- | sc/qa/unit/subsequent_export-test.cxx | 4 | ||||
-rw-r--r-- | sc/qa/unit/subsequent_filters-test.cxx | 40 |
3 files changed, 40 insertions, 4 deletions
diff --git a/sc/qa/unit/data/xlsx/tdf139928.xlsx b/sc/qa/unit/data/xlsx/tdf139928.xlsx Binary files differnew file mode 100644 index 000000000000..d0bc3067fa34 --- /dev/null +++ b/sc/qa/unit/data/xlsx/tdf139928.xlsx diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 746eda5d3437..57d4cc45b53f 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -729,7 +729,7 @@ void ScExportTest::testCondFormatExportCellIs() CPPUNIT_ASSERT_EQUAL( ScConditionMode::Equal, pCondition->GetOperation()); OUString aStr = pCondition->GetExpression(ScAddress(0, 0, 0), 0); - CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$1"), aStr ); + CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$2"), aStr ); pEntry = pFormat->GetEntry(1); CPPUNIT_ASSERT(pEntry); @@ -739,7 +739,7 @@ void ScExportTest::testCondFormatExportCellIs() CPPUNIT_ASSERT_EQUAL( ScConditionMode::Equal, pCondition->GetOperation()); aStr = pCondition->GetExpression(ScAddress(0, 0, 0), 0); - CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$2"), aStr ); + CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$1"), aStr ); xDocSh->DoClose(); } diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 7e7c62500674..b70777b1c176 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -108,6 +108,7 @@ public: virtual void tearDown() override; //ods, xls, xlsx filter tests + void testCondFormatOperatorsSameRangeXLSX(); void testCondFormatFormulaIsXLSX(); void testCondFormatBeginsAndEndsWithXLSX(); void testExtCondFormatXLSX(); @@ -307,6 +308,7 @@ public: void testTdf129940(); CPPUNIT_TEST_SUITE(ScFiltersTest); + CPPUNIT_TEST(testCondFormatOperatorsSameRangeXLSX); CPPUNIT_TEST(testCondFormatFormulaIsXLSX); CPPUNIT_TEST(testCondFormatBeginsAndEndsWithXLSX); CPPUNIT_TEST(testExtCondFormatXLSX); @@ -551,6 +553,40 @@ void testRangeNameImpl(const ScDocument& rDoc) } +void ScFiltersTest::testCondFormatOperatorsSameRangeXLSX() +{ + ScDocShellRef xDocSh = loadDoc(u"tdf139928.", FORMAT_XLSX); + CPPUNIT_ASSERT_MESSAGE("Failed to load tdf139928.xlsx", xDocSh.is()); + + ScDocument& rDoc = xDocSh->GetDocument(); + + ScConditionalFormat* pFormat = rDoc.GetCondFormat(0, 0, 0); + CPPUNIT_ASSERT(pFormat); + + const ScFormatEntry* pEntry = pFormat->GetEntry(0); + CPPUNIT_ASSERT(pEntry); + CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::ExtCondition, pEntry->GetType()); + + const ScCondFormatEntry* pCondition = static_cast<const ScCondFormatEntry*>(pEntry); + CPPUNIT_ASSERT_EQUAL( ScConditionMode::ContainsText, pCondition->GetOperation()); + + pEntry = pFormat->GetEntry(1); + CPPUNIT_ASSERT(pEntry); + CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::ExtCondition, pEntry->GetType()); + + pCondition = static_cast<const ScCondFormatEntry*>(pEntry); + CPPUNIT_ASSERT_EQUAL( ScConditionMode::BeginsWith, pCondition->GetOperation()); + + pEntry = pFormat->GetEntry(2); + CPPUNIT_ASSERT(pEntry); + CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::ExtCondition, pEntry->GetType()); + + pCondition = static_cast<const ScCondFormatEntry*>(pEntry); + CPPUNIT_ASSERT_EQUAL( ScConditionMode::EndsWith, pCondition->GetOperation()); + + xDocSh->DoClose(); +} + void ScFiltersTest::testCondFormatFormulaIsXLSX() { ScDocShellRef xDocSh = loadDoc(u"tdf113013.", FORMAT_XLSX); @@ -2566,7 +2602,7 @@ void ScFiltersTest::testCondFormatImportCellIs() CPPUNIT_ASSERT_EQUAL( ScConditionMode::Equal, pCondition->GetOperation()); OUString aStr = pCondition->GetExpression(ScAddress(0, 0, 0), 0); - CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$1"), aStr ); + CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$2"), aStr ); pEntry = pFormat->GetEntry(1); CPPUNIT_ASSERT(pEntry); @@ -2576,7 +2612,7 @@ void ScFiltersTest::testCondFormatImportCellIs() CPPUNIT_ASSERT_EQUAL( ScConditionMode::Equal, pCondition->GetOperation()); aStr = pCondition->GetExpression(ScAddress(0, 0, 0), 0); - CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$2"), aStr ); + CPPUNIT_ASSERT_EQUAL( OUString("$Sheet2.$A$1"), aStr ); xDocSh->DoClose(); } |