sc/qa/unit/ucalc.hxx            |    2 +
 sc/qa/unit/ucalc_condformat.cxx |   41 +++++++++++++++++++++++++++++++++++-----
 2 files changed, 38 insertions(+), 5 deletions(-)

New commits:
commit 93117a98e870804ad0ac0152e87355edd1dd5889
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Fri Feb 23 02:04:50 2018 +0100

    add test for deduplicating cond format against same format
    
    Change-Id: I9e21b5b53f7a3c579bdaf5dc0dd6102be805faf9
    Reviewed-on: https://gerrit.libreoffice.org/50217
    Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com>

diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 6ee3d2c988bc..630e9b09b0a0 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -515,6 +515,7 @@ public:
 
     void testCondFormatUndoList();
     void testMultipleSingleCellCondFormatCopyPaste();
+    void testDeduplicateMultipleCondFormats();
 
     void testImportStream();
     void testDeleteContents();
@@ -797,6 +798,7 @@ public:
     CPPUNIT_TEST(testCondFormatUpdateReferenceInsRow);
     CPPUNIT_TEST(testCondFormatUndoList);
     CPPUNIT_TEST(testMultipleSingleCellCondFormatCopyPaste);
+    CPPUNIT_TEST(testDeduplicateMultipleCondFormats);
     CPPUNIT_TEST(testIconSet);
     CPPUNIT_TEST(testDataBarLengthAutomaticAxis);
     CPPUNIT_TEST(testDataBarLengthMiddleAxis);
diff --git a/sc/qa/unit/ucalc_condformat.cxx b/sc/qa/unit/ucalc_condformat.cxx
index bd79b68526ab..0e8721a0acb8 100644
--- a/sc/qa/unit/ucalc_condformat.cxx
+++ b/sc/qa/unit/ucalc_condformat.cxx
@@ -1108,14 +1108,14 @@ void Test::testCondFormatUndoList()
 
 namespace {
 
-sal_uInt32 addSingleCellCondFormat(ScDocument* pDoc, const ScAddress& rAddr, 
sal_uInt32 nKey)
+sal_uInt32 addSingleCellCondFormat(ScDocument* pDoc, const ScAddress& rAddr, 
sal_uInt32 nKey, const OUString& rCondition)
 {
     ScConditionalFormat* pFormat = new ScConditionalFormat(nKey, pDoc);
     ScRange aCondFormatRange(rAddr);
     ScRangeList aRangeList(aCondFormatRange);
     pFormat->SetRange(aRangeList);
 
-    ScCondFormatEntry* pEntry = new ScCondFormatEntry(ScConditionMode::Direct, 
"=B2" + OUString::number(nKey), "",
+    ScCondFormatEntry* pEntry = new ScCondFormatEntry(ScConditionMode::Direct, 
rCondition, "",
             pDoc, ScAddress(0,0,0), 
ScGlobal::GetRscString(STR_STYLENAME_RESULT));
     pFormat->AddEntry(pEntry);
     return pDoc->AddCondFormat(pFormat, 0);
@@ -1127,8 +1127,40 @@ void Test::testMultipleSingleCellCondFormatCopyPaste()
 {
     m_pDoc->InsertTab(0, "Test");
 
-    sal_uInt32 nFirstCondFormatKey = addSingleCellCondFormat(m_pDoc, 
ScAddress(0, 0, 0), 1);
-    sal_uInt32 nSecondCondFormatKey = addSingleCellCondFormat(m_pDoc, 
ScAddress(1, 0, 0), 2);
+    sal_uInt32 nFirstCondFormatKey = addSingleCellCondFormat(m_pDoc, 
ScAddress(0, 0, 0), 1, "=A2");
+    sal_uInt32 nSecondCondFormatKey = addSingleCellCondFormat(m_pDoc, 
ScAddress(1, 0, 0), 2, "=B3");
+
+    ScDocument aClipDoc(SCDOCMODE_CLIP);
+    copyToClip(m_pDoc, ScRange(0,0,0,2,0,0), &aClipDoc);
+    ScRange aTargetRange(2,4,0,7,4,0);
+    pasteOneCellFromClip(m_pDoc, aTargetRange, &aClipDoc);
+
+    for (SCCOL nCol = 2; nCol <= 7; ++nCol)
+    {
+        ScConditionalFormat* pFormat = m_pDoc->GetCondFormat(nCol, 4, 0);
+        if (((nCol - 2) % 3) == 0)
+        {
+            CPPUNIT_ASSERT_EQUAL(pFormat->GetKey(), nFirstCondFormatKey);
+        }
+        else if (((nCol - 2) % 3) == 1)
+        {
+            CPPUNIT_ASSERT_EQUAL(pFormat->GetKey(), nSecondCondFormatKey);
+        }
+        else
+        {
+            CPPUNIT_ASSERT(!pFormat);
+        }
+    }
+
+    m_pDoc->DeleteTab(0);
+}
+
+void Test::testDeduplicateMultipleCondFormats()
+{
+    m_pDoc->InsertTab(0, "Test");
+
+    sal_uInt32 nFirstCondFormatKey = addSingleCellCondFormat(m_pDoc, 
ScAddress(0, 0, 0), 1, "=B2");
+    sal_uInt32 nSecondCondFormatKey = addSingleCellCondFormat(m_pDoc, 
ScAddress(1, 0, 0), 2, "=B2");
 
     ScDocument aClipDoc(SCDOCMODE_CLIP);
     copyToClip(m_pDoc, ScRange(0,0,0,2,0,0), &aClipDoc);
@@ -1137,7 +1169,6 @@ void Test::testMultipleSingleCellCondFormatCopyPaste()
 
     for (SCCOL nCol = 2; nCol <= 7; ++nCol)
     {
-        std::cout << nCol << std::endl;
         ScConditionalFormat* pFormat = m_pDoc->GetCondFormat(nCol, 4, 0);
         if (((nCol - 2) % 3) == 0)
         {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to