summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2022-04-09 14:30:22 +0900
committerTomaž Vajngerl <quikee@gmail.com>2022-04-10 15:27:36 +0200
commita08f9ed2341bc60faae6b86538661fea40417ace (patch)
treed0e2ed53550d01b4e418eec55276ad358b4b54c7 /sc/qa
parent655b6c2f46a73d9893ba8e6b572731a5890a4f72 (diff)
sc: add UI, undo/redo and test to change sparkline data range
This adds a "edit sparkline" action to the context menu and a dialog to change the data range of a sparkline. To change a sparkline using undo/redo, a new class UndoEditSparkline was added, which allows to change the attributes of a sparkline and revert back the old attributes when undoing. This is then used in the Dialog when setting the changed data range of a sparkline. To make sure that undo/redo works correctly, a simple unit tests was added. Change-Id: I08af1813fa288278bc0d33b0540660b325b17235 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132748 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'sc/qa')
-rw-r--r--sc/qa/unit/SparklineTest.cxx64
1 files changed, 64 insertions, 0 deletions
diff --git a/sc/qa/unit/SparklineTest.cxx b/sc/qa/unit/SparklineTest.cxx
index f8d07edc53e6..9c52ab1d1c65 100644
--- a/sc/qa/unit/SparklineTest.cxx
+++ b/sc/qa/unit/SparklineTest.cxx
@@ -58,6 +58,7 @@ public:
void testUndoRedoEditSparklineGroup();
void testUndoRedoUngroupSparklines();
void testUndoRedoGroupSparklines();
+ void testUndoRedoEditSparkline();
void testSparklineList();
CPPUNIT_TEST_SUITE(SparklineTest);
@@ -72,6 +73,7 @@ public:
CPPUNIT_TEST(testUndoRedoEditSparklineGroup);
CPPUNIT_TEST(testUndoRedoUngroupSparklines);
CPPUNIT_TEST(testUndoRedoGroupSparklines);
+ CPPUNIT_TEST(testUndoRedoEditSparkline);
CPPUNIT_TEST(testSparklineList);
CPPUNIT_TEST_SUITE_END();
};
@@ -867,6 +869,68 @@ void SparklineTest::testUndoRedoGroupSparklines()
xDocSh->DoClose();
}
+void SparklineTest::testUndoRedoEditSparkline()
+{
+ ScDocShellRef xDocSh = loadEmptyDocument();
+ CPPUNIT_ASSERT(xDocSh);
+
+ ScDocument& rDocument = xDocSh->GetDocument();
+ ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
+ CPPUNIT_ASSERT(pViewShell);
+
+ auto& rDocFunc = xDocSh->GetDocFunc();
+
+ // Try to delete sparkline that doesn't exist - returns false
+ CPPUNIT_ASSERT(!rDocFunc.DeleteSparkline(ScAddress(0, 6, 0)));
+
+ // insert test data - A1:A6
+ insertTestData(rDocument);
+
+ // Sparkline range
+ ScAddress aAddress(0, 6, 0);
+ ScRange aRange(aAddress);
+
+ // Check Sparkline at cell A7 doesn't exists
+ auto pSparkline = rDocument.GetSparkline(aAddress);
+ CPPUNIT_ASSERT(!pSparkline);
+
+ auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
+ CPPUNIT_ASSERT(rDocFunc.InsertSparklines(ScRange(0, 0, 0, 0, 5, 0), aRange, pSparklineGroup));
+
+ // Check Sparkline at cell A7
+ pSparkline = rDocument.GetSparkline(aAddress);
+ CPPUNIT_ASSERT(pSparkline);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pSparkline->getInputRange().size());
+ CPPUNIT_ASSERT_EQUAL(ScRange(0, 0, 0, 0, 5, 0), pSparkline->getInputRange()[0]);
+
+ // Change Sparkline
+ CPPUNIT_ASSERT(
+ rDocFunc.ChangeSparkline(pSparkline, SCTAB(0), ScRangeList(ScRange(0, 1, 0, 0, 4, 0))));
+
+ pSparkline = rDocument.GetSparkline(aAddress);
+ CPPUNIT_ASSERT(pSparkline);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pSparkline->getInputRange().size());
+ CPPUNIT_ASSERT_EQUAL(ScRange(0, 1, 0, 0, 4, 0), pSparkline->getInputRange()[0]);
+
+ // Undo
+ rDocument.GetUndoManager()->Undo();
+
+ pSparkline = rDocument.GetSparkline(aAddress);
+ CPPUNIT_ASSERT(pSparkline);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pSparkline->getInputRange().size());
+ CPPUNIT_ASSERT_EQUAL(ScRange(0, 0, 0, 0, 5, 0), pSparkline->getInputRange()[0]);
+
+ // Redo
+ rDocument.GetUndoManager()->Redo();
+
+ pSparkline = rDocument.GetSparkline(aAddress);
+ CPPUNIT_ASSERT(pSparkline);
+ CPPUNIT_ASSERT_EQUAL(size_t(1), pSparkline->getInputRange().size());
+ CPPUNIT_ASSERT_EQUAL(ScRange(0, 1, 0, 0, 4, 0), pSparkline->getInputRange()[0]);
+
+ xDocSh->DoClose();
+}
+
void SparklineTest::testSparklineList()
{
ScDocShellRef xDocSh = loadEmptyDocument();