summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-11-29 21:08:08 +0100
committerMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-11-30 00:47:33 +0100
commite841dd17a4fb9ba558bcbea5cde5ec90061c1313 (patch)
tree5213da70b248e85d24a5cb594f55d97504abfe24 /sc/qa
parent1e4fc94c7feff11f28654dcf70cccf77db216143 (diff)
add test case for fdo#86253
Change-Id: I943351a9050f78ea3495807570c51e0c7782ead3
Diffstat (limited to 'sc/qa')
-rw-r--r--sc/qa/unit/ucalc.cxx42
-rw-r--r--sc/qa/unit/ucalc.hxx2
2 files changed, 44 insertions, 0 deletions
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 248a0e9bff36..d7d8cdbad2b5 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -5635,6 +5635,48 @@ void Test::testCondCopyPasteSingleCell()
m_pDoc->DeleteTab(0);
}
+void Test::testCondCopyPasteSingleCellToRange()
+{
+ m_pDoc->InsertTab(0, "Test");
+
+ ScConditionalFormat* pFormat = new ScConditionalFormat(1, m_pDoc);
+ ScRange aCondFormatRange(0,0,0,3,3,0);
+ ScRangeList aRangeList(aCondFormatRange);
+ pFormat->AddRange(aRangeList);
+
+ ScCondFormatEntry* pEntry = new ScCondFormatEntry(SC_COND_DIRECT,"=B2","",m_pDoc,ScAddress(0,0,0),ScGlobal::GetRscString(STR_STYLENAME_RESULT));
+ pFormat->AddEntry(pEntry);
+ sal_uLong nIndex = m_pDoc->AddCondFormat(pFormat, 0);
+
+ ScDocument aClipDoc(SCDOCMODE_CLIP);
+ copyToClip(m_pDoc, ScRange(0,0,0,0,0,0), &aClipDoc);
+
+ ScRange aTargetRange(4,4,0,4,8,0);
+ pasteFromClip(m_pDoc, aTargetRange, &aClipDoc);
+
+ std::set<sal_uLong> aCondFormatIndices;
+ for(SCROW nRow = 4; nRow <= 8; ++nRow)
+ {
+ ScConditionalFormat* pPastedFormat = m_pDoc->GetCondFormat(4, nRow, 0);
+ CPPUNIT_ASSERT(pPastedFormat);
+
+ CPPUNIT_ASSERT_EQUAL(ScRangeList(ScRange(4, nRow, 0)), pPastedFormat->GetRange());
+ sal_uLong nPastedKey = pPastedFormat->GetKey();
+ CPPUNIT_ASSERT( nIndex != nPastedKey);
+ const SfxPoolItem* pItem = m_pDoc->GetAttr( 4, nRow, 0, ATTR_CONDITIONAL );
+ const ScCondFormatItem* pCondFormatItem = static_cast<const ScCondFormatItem*>(pItem);
+
+ CPPUNIT_ASSERT(pCondFormatItem);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pCondFormatItem->GetCondFormatData().size());
+ CPPUNIT_ASSERT( nIndex != pCondFormatItem->GetCondFormatData().at(0) );
+ auto itr = aCondFormatIndices.find(nPastedKey);
+ CPPUNIT_ASSERT(itr == aCondFormatIndices.end());
+ aCondFormatIndices.insert(nPastedKey);
+ }
+
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testCondCopyPasteSheetBetweenDoc()
{
m_pDoc->InsertTab(0, "Test");
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 21568ed4e5aa..381699882794 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -410,6 +410,7 @@ public:
void testCondFormatInsertDeleteSheets();
void testCondCopyPaste();
void testCondCopyPasteSingleCell(); //e.g. fdo#82503
+ void testCondCopyPasteSingleCellToRange(); //e.g. fdo#82503
void testCondCopyPasteSheetBetweenDoc();
void testCondCopyPasteSheet();
void testIconSet();
@@ -606,6 +607,7 @@ public:
CPPUNIT_TEST(testCondFormatInsertDeleteSheets);
CPPUNIT_TEST(testCondCopyPaste);
CPPUNIT_TEST(testCondCopyPasteSingleCell);
+ CPPUNIT_TEST(testCondCopyPasteSingleCellToRange);
CPPUNIT_TEST(testCondCopyPasteSheetBetweenDoc);
CPPUNIT_TEST(testCondCopyPasteSheet);
CPPUNIT_TEST(testIconSet);