summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2022-03-19 12:52:21 +0900
committerTomaž Vajngerl <quikee@gmail.com>2022-04-12 01:23:55 +0200
commit7edd5f552c76bbe05c196cfdcdc5f94292a38a30 (patch)
tree5335cd6f576b7905032df8044ee5d6c3bfd24daa /sc/qa
parentff13e71e72271736116632662b63f8f8dd3de54a (diff)
sc: add support for copy/cut and paste of Sparklines
Currently cut,copy and paste will copy the Sparkline and create a new SparklineGroup for each cell in the new cell range. This probably need to be adjusted so the SparklineGroup is shared. Change-Id: I6f86bb026753b2b4b5bfa46aca4ca9794721f311 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132473 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit b8cf500ed8ac7bd01a351e2815ce8251e506d79c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132828 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Diffstat (limited to 'sc/qa')
-rw-r--r--sc/qa/unit/SparklineTest.cxx110
1 files changed, 110 insertions, 0 deletions
diff --git a/sc/qa/unit/SparklineTest.cxx b/sc/qa/unit/SparklineTest.cxx
index 2a2dfde71b5b..167c4e4d9e3d 100644
--- a/sc/qa/unit/SparklineTest.cxx
+++ b/sc/qa/unit/SparklineTest.cxx
@@ -9,6 +9,8 @@
#include "helper/qahelper.hxx"
#include <docsh.hxx>
+#include <tabvwsh.hxx>
+#include <cliputil.hxx>
#include <Sparkline.hxx>
#include <SparklineGroup.hxx>
@@ -46,10 +48,14 @@ public:
void testAddSparkline();
void testDeleteSprkline();
+ void testCopyPasteSparkline();
+ void testCutPasteSparkline();
CPPUNIT_TEST_SUITE(SparklineTest);
CPPUNIT_TEST(testAddSparkline);
CPPUNIT_TEST(testDeleteSprkline);
+ CPPUNIT_TEST(testCopyPasteSparkline);
+ CPPUNIT_TEST(testCutPasteSparkline);
CPPUNIT_TEST_SUITE_END();
};
@@ -118,6 +124,110 @@ void SparklineTest::testDeleteSprkline()
xDocSh->DoClose();
}
+void SparklineTest::testCopyPasteSparkline()
+{
+ ScDocShellRef xDocSh = loadEmptyDocument();
+ CPPUNIT_ASSERT(xDocSh);
+
+ ScDocument& rDocument = xDocSh->GetDocument();
+ ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
+ CPPUNIT_ASSERT(pViewShell);
+
+ auto* pCreatedSparkline = createTestSparkline(rDocument);
+ CPPUNIT_ASSERT(pCreatedSparkline);
+
+ ScRange aSourceRange(0, 6, 0, 0, 6, 0);
+ auto pSparkline = rDocument.GetSparkline(aSourceRange.aStart);
+
+ CPPUNIT_ASSERT(pSparkline);
+ CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparkline->getColumn());
+ CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
+
+ // CopyToClip / CopyFromClip with a aClipDoc
+ {
+ ScDocument aClipDoc(SCDOCMODE_CLIP);
+ copyToClip(&rDocument, aSourceRange, &aClipDoc);
+
+ auto pClipSparkline = aClipDoc.GetSparkline(aSourceRange.aStart);
+ CPPUNIT_ASSERT(pClipSparkline);
+
+ ScRange aPasteRange(0, 7, 0, 0, 7, 0);
+
+ ScMarkData aMark(rDocument.GetSheetLimits());
+ aMark.SetMarkArea(aPasteRange);
+ rDocument.CopyFromClip(aPasteRange, aMark, InsertDeleteFlags::ALL, nullptr, &aClipDoc);
+
+ auto pSparklineCopy = rDocument.GetSparkline(aPasteRange.aStart);
+ CPPUNIT_ASSERT(pSparklineCopy);
+
+ CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparklineCopy->getColumn());
+ CPPUNIT_ASSERT_EQUAL(SCROW(7), pSparklineCopy->getRow());
+ }
+
+ // Copy / Paste with a ClipDoc
+ {
+ pViewShell->GetViewData().GetMarkData().SetMarkArea(aSourceRange);
+
+ // Copy
+ ScDocument aClipDoc(SCDOCMODE_CLIP);
+ pViewShell->GetViewData().GetView()->CopyToClip(&aClipDoc, false, false, false, false);
+
+ // Paste
+ ScRange aPasteRange(0, 8, 0, 0, 8, 0);
+
+ pViewShell->GetViewData().GetMarkData().SetMarkArea(aPasteRange);
+ pViewShell->GetViewData().GetView()->PasteFromClip(InsertDeleteFlags::ALL, &aClipDoc);
+
+ auto pSparklineCopy = rDocument.GetSparkline(aPasteRange.aStart);
+ CPPUNIT_ASSERT(pSparklineCopy);
+
+ CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparklineCopy->getColumn());
+ CPPUNIT_ASSERT_EQUAL(SCROW(8), pSparklineCopy->getRow());
+ }
+
+ xDocSh->DoClose();
+}
+
+void SparklineTest::testCutPasteSparkline()
+{
+ ScDocShellRef xDocSh = loadEmptyDocument();
+ CPPUNIT_ASSERT(xDocSh);
+
+ ScDocument& rDocument = xDocSh->GetDocument();
+ ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
+ CPPUNIT_ASSERT(pViewShell);
+
+ auto* pCreatedSparkline = createTestSparkline(rDocument);
+ CPPUNIT_ASSERT(pCreatedSparkline);
+
+ ScRange aSourceRange(0, 6, 0, 0, 6, 0);
+ auto pSparkline = rDocument.GetSparkline(aSourceRange.aStart);
+
+ CPPUNIT_ASSERT(pSparkline);
+ CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparkline->getColumn());
+ CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
+
+ // Mark source range
+ pViewShell->GetViewData().GetMarkData().SetMarkArea(aSourceRange);
+
+ // Cut
+ pViewShell->GetViewData().GetView()->CopyToClip(nullptr, true /*bCut*/, false, false, true);
+
+ // Paste
+ ScRange aPasteRange(0, 7, 0, 0, 7, 0);
+ pViewShell->GetViewData().GetMarkData().SetMarkArea(aPasteRange);
+ ScClipUtil::PasteFromClipboard(pViewShell->GetViewData(), pViewShell, false);
+
+ // Check
+ auto pSparklineCopy = rDocument.GetSparkline(aPasteRange.aStart);
+ CPPUNIT_ASSERT(pSparklineCopy);
+
+ CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparklineCopy->getColumn());
+ CPPUNIT_ASSERT_EQUAL(SCROW(7), pSparklineCopy->getRow());
+
+ xDocSh->DoClose();
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SparklineTest);
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */