2022-03-10 14:08:35 +09:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "helper/qahelper.hxx"
|
|
|
|
#include <docsh.hxx>
|
2022-03-19 12:52:21 +09:00
|
|
|
#include <tabvwsh.hxx>
|
|
|
|
#include <cliputil.hxx>
|
2022-03-20 20:49:18 +09:00
|
|
|
#include <docfunc.hxx>
|
|
|
|
|
2022-03-10 14:08:35 +09:00
|
|
|
#include <Sparkline.hxx>
|
|
|
|
#include <SparklineGroup.hxx>
|
2022-04-01 17:06:18 +09:00
|
|
|
#include <SparklineList.hxx>
|
2022-03-10 14:08:35 +09:00
|
|
|
|
|
|
|
using namespace css;
|
|
|
|
|
|
|
|
class SparklineTest : public ScBootstrapFixture
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
uno::Reference<uno::XInterface> m_xCalcComponent;
|
|
|
|
|
|
|
|
public:
|
|
|
|
SparklineTest()
|
|
|
|
: ScBootstrapFixture("sc/qa/unit/data")
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void setUp() override
|
|
|
|
{
|
|
|
|
test::BootstrapFixture::setUp();
|
|
|
|
|
|
|
|
// This is a bit of a fudge, we do this to ensure that ScGlobals::ensure,
|
|
|
|
// which is a private symbol to us, gets called
|
|
|
|
m_xCalcComponent = getMultiServiceFactory()->createInstance(
|
|
|
|
"com.sun.star.comp.Calc.SpreadsheetDocument");
|
|
|
|
CPPUNIT_ASSERT_MESSAGE("no calc component!", m_xCalcComponent.is());
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void tearDown() override
|
|
|
|
{
|
|
|
|
uno::Reference<lang::XComponent>(m_xCalcComponent, uno::UNO_QUERY_THROW)->dispose();
|
|
|
|
test::BootstrapFixture::tearDown();
|
|
|
|
}
|
|
|
|
|
|
|
|
void testAddSparkline();
|
2022-03-21 17:26:30 +09:00
|
|
|
void testClearContentSprkline();
|
2022-03-19 12:52:21 +09:00
|
|
|
void testCopyPasteSparkline();
|
|
|
|
void testCutPasteSparkline();
|
2022-03-20 20:49:18 +09:00
|
|
|
void testUndoRedoInsertSparkline();
|
2022-03-21 17:26:30 +09:00
|
|
|
void testUndoRedoDeleteSparkline();
|
2022-04-01 23:03:52 +09:00
|
|
|
void testUndoRedoDeleteSparklineGroup();
|
2022-03-22 11:03:24 +09:00
|
|
|
void testUndoRedoClearContentForSparkline();
|
2022-03-31 23:07:44 +09:00
|
|
|
void testUndoRedoEditSparklineGroup();
|
2022-04-03 09:02:38 +09:00
|
|
|
void testUndoRedoUngroupSparklines();
|
|
|
|
void testUndoRedoGroupSparklines();
|
2022-04-01 17:06:18 +09:00
|
|
|
void testSparklineList();
|
2022-03-10 14:08:35 +09:00
|
|
|
|
|
|
|
CPPUNIT_TEST_SUITE(SparklineTest);
|
|
|
|
CPPUNIT_TEST(testAddSparkline);
|
2022-03-21 17:26:30 +09:00
|
|
|
CPPUNIT_TEST(testClearContentSprkline);
|
2022-03-19 12:52:21 +09:00
|
|
|
CPPUNIT_TEST(testCopyPasteSparkline);
|
|
|
|
CPPUNIT_TEST(testCutPasteSparkline);
|
2022-03-20 20:49:18 +09:00
|
|
|
CPPUNIT_TEST(testUndoRedoInsertSparkline);
|
2022-03-21 17:26:30 +09:00
|
|
|
CPPUNIT_TEST(testUndoRedoDeleteSparkline);
|
2022-04-01 23:03:52 +09:00
|
|
|
CPPUNIT_TEST(testUndoRedoDeleteSparklineGroup);
|
2022-03-22 11:03:24 +09:00
|
|
|
CPPUNIT_TEST(testUndoRedoClearContentForSparkline);
|
2022-03-31 23:07:44 +09:00
|
|
|
CPPUNIT_TEST(testUndoRedoEditSparklineGroup);
|
2022-04-03 09:02:38 +09:00
|
|
|
CPPUNIT_TEST(testUndoRedoUngroupSparklines);
|
|
|
|
CPPUNIT_TEST(testUndoRedoGroupSparklines);
|
2022-04-01 17:06:18 +09:00
|
|
|
CPPUNIT_TEST(testSparklineList);
|
2022-03-10 14:08:35 +09:00
|
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
};
|
|
|
|
|
2022-03-20 20:49:18 +09:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
void insertTestData(ScDocument& rDocument)
|
2022-03-15 15:50:10 +09:00
|
|
|
{
|
|
|
|
rDocument.SetValue(0, 0, 0, 4);
|
|
|
|
rDocument.SetValue(0, 1, 0, -2);
|
|
|
|
rDocument.SetValue(0, 2, 0, 1);
|
|
|
|
rDocument.SetValue(0, 3, 0, -3);
|
|
|
|
rDocument.SetValue(0, 4, 0, 5);
|
|
|
|
rDocument.SetValue(0, 5, 0, 3);
|
2022-03-20 20:49:18 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
sc::Sparkline* createTestSparkline(ScDocument& rDocument)
|
|
|
|
{
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
|
|
|
|
sc::Sparkline* pSparkline = rDocument.CreateSparkline(ScAddress(0, 6, 0), pSparklineGroup);
|
|
|
|
if (!pSparkline)
|
|
|
|
return nullptr;
|
|
|
|
|
|
|
|
insertTestData(rDocument);
|
2022-03-15 15:50:10 +09:00
|
|
|
|
|
|
|
ScRangeList aList;
|
|
|
|
aList.push_back(ScRange(0, 0, 0, 0, 5, 0));
|
|
|
|
pSparkline->setInputRange(aList);
|
|
|
|
|
|
|
|
return pSparkline;
|
|
|
|
}
|
|
|
|
|
2022-03-20 20:49:18 +09:00
|
|
|
} // end anonymous namespace
|
|
|
|
|
2022-03-10 14:08:35 +09:00
|
|
|
void SparklineTest::testAddSparkline()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
|
2022-03-19 10:56:27 +09:00
|
|
|
auto pSparkline = createTestSparkline(rDocument);
|
2022-03-10 14:08:35 +09:00
|
|
|
CPPUNIT_ASSERT(pSparkline);
|
2022-03-15 15:50:10 +09:00
|
|
|
|
2022-03-19 10:56:27 +09:00
|
|
|
auto pGetSparkline = rDocument.GetSparkline(ScAddress(0, 6, 0));
|
2022-03-15 15:50:10 +09:00
|
|
|
CPPUNIT_ASSERT(pGetSparkline);
|
|
|
|
|
2022-03-19 10:56:27 +09:00
|
|
|
CPPUNIT_ASSERT_EQUAL(pGetSparkline.get(), pSparkline);
|
2022-03-15 15:50:10 +09:00
|
|
|
|
2022-04-01 17:06:18 +09:00
|
|
|
sc::SparklineList* pList = rDocument.GetSparklineList(SCTAB(0));
|
2022-03-15 15:50:10 +09:00
|
|
|
CPPUNIT_ASSERT(pList);
|
|
|
|
|
2022-04-01 17:06:18 +09:00
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pList->getSparklineGroups().size());
|
|
|
|
|
|
|
|
auto const& aSparklineVector = pList->getSparklinesFor(pGetSparkline->getSparklineGroup());
|
2022-03-15 15:50:10 +09:00
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), aSparklineVector.size());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(aSparklineVector[0].get(), pSparkline);
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-03-21 17:26:30 +09:00
|
|
|
void SparklineTest::testClearContentSprkline()
|
2022-03-15 15:50:10 +09:00
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
|
2022-03-19 10:56:27 +09:00
|
|
|
auto pSparkline = createTestSparkline(rDocument);
|
2022-03-15 15:50:10 +09:00
|
|
|
CPPUNIT_ASSERT(pSparkline);
|
|
|
|
|
|
|
|
clearRange(&rDocument, ScRange(0, 6, 0, 0, 6, 0));
|
|
|
|
|
2022-03-19 10:56:27 +09:00
|
|
|
auto pGetSparkline = rDocument.GetSparkline(ScAddress(0, 6, 0));
|
2022-03-15 15:50:10 +09:00
|
|
|
CPPUNIT_ASSERT(!pGetSparkline);
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
2022-03-10 14:08:35 +09:00
|
|
|
}
|
|
|
|
|
2022-03-19 12:52:21 +09:00
|
|
|
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);
|
2022-03-28 22:51:08 +09:00
|
|
|
auto const& pOriginalGroup = pSparkline->getSparklineGroup();
|
2022-03-19 12:52:21 +09:00
|
|
|
|
|
|
|
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());
|
2022-03-28 22:51:08 +09:00
|
|
|
|
|
|
|
auto const& pCopyGroup = pSparklineCopy->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pOriginalGroup->getID(), pCopyGroup->getID());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pOriginalGroup.get(), pCopyGroup.get());
|
2022-03-19 12:52:21 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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());
|
2022-03-28 22:51:08 +09:00
|
|
|
|
|
|
|
auto const& pCopyGroup = pSparklineCopy->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pOriginalGroup->getID(), pCopyGroup->getID());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pOriginalGroup.get(), pCopyGroup.get());
|
2022-03-19 12:52:21 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
|
2022-03-20 20:49:18 +09:00
|
|
|
void SparklineTest::testUndoRedoInsertSparkline()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
|
|
|
|
CPPUNIT_ASSERT(pViewShell);
|
|
|
|
|
|
|
|
auto& rDocFunc = xDocSh->GetDocFunc();
|
|
|
|
|
|
|
|
// insert test data - A1:A6
|
|
|
|
insertTestData(rDocument);
|
|
|
|
|
|
|
|
// Sparkline range
|
|
|
|
ScRange aRange(0, 6, 0, 0, 6, 0);
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 doesn't exists
|
|
|
|
auto pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(!pSparkline);
|
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
rDocFunc.InsertSparklines(ScRange(0, 0, 0, 0, 5, 0), aRange, pSparklineGroup);
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(pSparkline);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparkline->getColumn());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
|
|
|
|
|
|
|
|
// Undo
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 doesn't exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(!pSparkline);
|
|
|
|
|
|
|
|
// Redo
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(pSparkline);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparkline->getColumn());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-03-21 17:26:30 +09:00
|
|
|
void SparklineTest::testUndoRedoDeleteSparkline()
|
|
|
|
{
|
|
|
|
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
|
|
|
|
ScRange aRange(0, 6, 0, 0, 6, 0);
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 doesn't exists
|
|
|
|
auto pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
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 exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(pSparkline);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparkline->getColumn());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
|
|
|
|
|
|
|
|
// Delete Sparkline
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.DeleteSparkline(ScAddress(0, 6, 0)));
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 doesn't exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(!pSparkline);
|
|
|
|
|
|
|
|
// Undo
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(pSparkline);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCCOL(0), pSparkline->getColumn());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
|
|
|
|
|
|
|
|
// Redo
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
|
|
|
// Check Sparkline at cell A7 doesn't exists
|
|
|
|
pSparkline = rDocument.GetSparkline(aRange.aStart);
|
|
|
|
CPPUNIT_ASSERT(!pSparkline);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(aRange.aStart));
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-04-01 23:03:52 +09:00
|
|
|
void SparklineTest::testUndoRedoDeleteSparklineGroup()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
|
|
|
|
CPPUNIT_ASSERT(pViewShell);
|
|
|
|
|
|
|
|
auto& rDocFunc = xDocSh->GetDocFunc();
|
|
|
|
|
|
|
|
// insert test data - A1:A6
|
|
|
|
insertTestData(rDocument);
|
|
|
|
|
|
|
|
// Sparkline range
|
|
|
|
ScRange aDataRange(0, 0, 0, 3, 5, 0); //A1:D6
|
|
|
|
ScRange aRange(0, 6, 0, 3, 6, 0); // A7:D7
|
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.InsertSparklines(aDataRange, aRange, pSparklineGroup));
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
// Delete Sparkline
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.DeleteSparklineGroup(pSparklineGroup, SCTAB(0)));
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
// Undo
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
// Check if the sparkline has the input range set
|
|
|
|
auto const& pSparkline = rDocument.GetSparkline(ScAddress(3, 6, 0));
|
|
|
|
ScRangeList rRangeList = pSparkline->getInputRange();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), rRangeList.size());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(ScRange(3, 0, 0, 3, 5, 0), rRangeList[0]);
|
|
|
|
|
|
|
|
// Redo
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-03-22 11:03:24 +09:00
|
|
|
void SparklineTest::testUndoRedoClearContentForSparkline()
|
|
|
|
{
|
|
|
|
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
|
2022-04-03 15:53:55 +09:00
|
|
|
ScRange aDataRange(0, 0, 0, 3, 5, 0); //A1:D6
|
|
|
|
ScRange aRange(0, 6, 0, 3, 6, 0); // A7:D7
|
2022-03-22 11:03:24 +09:00
|
|
|
|
2022-04-03 15:53:55 +09:00
|
|
|
// Check Sparklines - none should exist
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(ScAddress(0, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(ScAddress(3, 6, 0)));
|
|
|
|
}
|
2022-03-22 11:03:24 +09:00
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
2022-04-03 15:53:55 +09:00
|
|
|
CPPUNIT_ASSERT(rDocFunc.InsertSparklines(aDataRange, aRange, pSparklineGroup));
|
2022-03-22 11:03:24 +09:00
|
|
|
|
2022-04-03 15:53:55 +09:00
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(0, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
// D7 exists
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(3, 6, 0)));
|
|
|
|
|
|
|
|
// Check D7
|
|
|
|
auto pSparkline = rDocument.GetSparkline(ScAddress(3, 6, 0));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCCOL(3), pSparkline->getColumn());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
|
|
|
|
|
|
|
|
// Check collections
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(4), pSparklines.size());
|
|
|
|
}
|
2022-03-22 11:03:24 +09:00
|
|
|
|
2022-04-03 15:53:55 +09:00
|
|
|
// Clear content of cell D7 - including sparkline
|
|
|
|
{
|
|
|
|
ScMarkData aMark(rDocument.GetSheetLimits());
|
|
|
|
aMark.SetMarkArea(ScAddress(3, 6, 0));
|
|
|
|
rDocFunc.DeleteContents(aMark, InsertDeleteFlags::CONTENTS, true, true);
|
|
|
|
}
|
2022-03-22 11:03:24 +09:00
|
|
|
|
2022-04-03 15:53:55 +09:00
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
// D7 is gone
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(ScAddress(3, 6, 0)));
|
|
|
|
|
|
|
|
// Check collections
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(3), pSparklines.size());
|
|
|
|
}
|
2022-03-22 11:03:24 +09:00
|
|
|
|
|
|
|
// Undo
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
2022-04-03 15:53:55 +09:00
|
|
|
// Check Sparkline
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(0, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
// D7 exists - again
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(3, 6, 0)));
|
|
|
|
|
|
|
|
// Check D7
|
|
|
|
auto pSparkline = rDocument.GetSparkline(ScAddress(3, 6, 0));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCCOL(3), pSparkline->getColumn());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(SCROW(6), pSparkline->getRow());
|
|
|
|
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(4), pSparklines.size());
|
|
|
|
}
|
2022-03-22 11:03:24 +09:00
|
|
|
|
|
|
|
// Redo
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
2022-04-03 15:53:55 +09:00
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT(rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
// D7 is gone - again
|
|
|
|
CPPUNIT_ASSERT(!rDocument.HasSparkline(ScAddress(3, 6, 0)));
|
|
|
|
|
|
|
|
// Check collections
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(3), pSparklines.size());
|
|
|
|
}
|
2022-03-22 11:03:24 +09:00
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-03-31 23:07:44 +09:00
|
|
|
void SparklineTest::testUndoRedoEditSparklineGroup()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
|
|
|
|
CPPUNIT_ASSERT(pViewShell);
|
|
|
|
|
|
|
|
auto& rDocFunc = xDocSh->GetDocFunc();
|
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
{
|
|
|
|
sc::SparklineAttributes& rAttibutes = pSparklineGroup->getAttributes();
|
|
|
|
rAttibutes.setType(sc::SparklineType::Column);
|
|
|
|
rAttibutes.setColorSeries(COL_YELLOW);
|
|
|
|
rAttibutes.setColorAxis(COL_GREEN);
|
|
|
|
}
|
|
|
|
|
|
|
|
rDocument.CreateSparkline(ScAddress(0, 6, 0), pSparklineGroup);
|
|
|
|
|
|
|
|
sc::SparklineAttributes aNewAttributes;
|
|
|
|
aNewAttributes.setType(sc::SparklineType::Stacked);
|
|
|
|
aNewAttributes.setColorSeries(COL_BLACK);
|
|
|
|
aNewAttributes.setColorAxis(COL_BLUE);
|
|
|
|
|
|
|
|
sc::SparklineAttributes aInitialAttibutes(pSparklineGroup->getAttributes());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(aNewAttributes != aInitialAttibutes);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, aInitialAttibutes == pSparklineGroup->getAttributes());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, aNewAttributes == pSparklineGroup->getAttributes());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Column, pSparklineGroup->getAttributes().getType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_YELLOW, pSparklineGroup->getAttributes().getColorSeries());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_GREEN, pSparklineGroup->getAttributes().getColorAxis());
|
|
|
|
|
|
|
|
rDocFunc.ChangeSparklineGroupAttributes(pSparklineGroup, aNewAttributes);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, aInitialAttibutes == pSparklineGroup->getAttributes());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, aNewAttributes == pSparklineGroup->getAttributes());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Stacked, pSparklineGroup->getAttributes().getType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_BLACK, pSparklineGroup->getAttributes().getColorSeries());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_BLUE, pSparklineGroup->getAttributes().getColorAxis());
|
|
|
|
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, aInitialAttibutes == pSparklineGroup->getAttributes());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, aNewAttributes == pSparklineGroup->getAttributes());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Column, pSparklineGroup->getAttributes().getType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_YELLOW, pSparklineGroup->getAttributes().getColorSeries());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_GREEN, pSparklineGroup->getAttributes().getColorAxis());
|
|
|
|
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(false, aInitialAttibutes == pSparklineGroup->getAttributes());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, aNewAttributes == pSparklineGroup->getAttributes());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sc::SparklineType::Stacked, pSparklineGroup->getAttributes().getType());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_BLACK, pSparklineGroup->getAttributes().getColorSeries());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(COL_BLUE, pSparklineGroup->getAttributes().getColorAxis());
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-04-03 09:02:38 +09:00
|
|
|
void SparklineTest::testUndoRedoUngroupSparklines()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
|
|
|
|
CPPUNIT_ASSERT(pViewShell);
|
|
|
|
|
|
|
|
auto& rDocFunc = xDocSh->GetDocFunc();
|
|
|
|
|
|
|
|
// insert test data - A1:A6
|
|
|
|
insertTestData(rDocument);
|
|
|
|
|
|
|
|
// Sparkline range
|
|
|
|
ScRange aDataRange(0, 0, 0, 3, 5, 0); //A1:D6
|
|
|
|
ScRange aRange(0, 6, 0, 3, 6, 0); // A7:D7
|
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.InsertSparklines(aDataRange, aRange, pSparklineGroup));
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup3);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup3, pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.UngroupSparklines(ScRange(2, 6, 0, 3, 6, 0)));
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup3);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup4);
|
|
|
|
CPPUNIT_ASSERT(pGroup3 != pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Undo
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup3);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup3, pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Redo
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup3);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup4);
|
|
|
|
CPPUNIT_ASSERT(pGroup3 != pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
|
|
|
void SparklineTest::testUndoRedoGroupSparklines()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false);
|
|
|
|
CPPUNIT_ASSERT(pViewShell);
|
|
|
|
|
|
|
|
auto& rDocFunc = xDocSh->GetDocFunc();
|
|
|
|
|
|
|
|
// insert test data - A1:A6
|
|
|
|
insertTestData(rDocument);
|
|
|
|
|
|
|
|
// Sparkline range
|
|
|
|
ScRange aDataRange(0, 0, 0, 3, 5, 0); //A1:D6
|
|
|
|
ScRange aRange(0, 6, 0, 3, 6, 0); // A7:D7
|
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.InsertSparklines(aDataRange, aRange, pSparklineGroup));
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup3);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup3, pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.UngroupSparklines(ScRange(2, 6, 0, 3, 6, 0)));
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup3);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup4);
|
|
|
|
CPPUNIT_ASSERT(pGroup3 != pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pGroup = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
CPPUNIT_ASSERT(rDocFunc.GroupSparklines(ScRange(1, 6, 0, 3, 6, 0), pGroup));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup2);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup3);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup2, pGroup3);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup2, pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup3, pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Undo
|
|
|
|
rDocument.GetUndoManager()->Undo();
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup1, pGroup2);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup3);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup4);
|
|
|
|
CPPUNIT_ASSERT(pGroup3 != pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Redo
|
|
|
|
rDocument.GetUndoManager()->Redo();
|
|
|
|
|
|
|
|
// Check Sparklines
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(0, 6, 0))); // A7
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(1, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(2, 6, 0)));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(true, rDocument.HasSparkline(ScAddress(3, 6, 0))); // D7
|
|
|
|
|
|
|
|
auto pGroup1 = rDocument.GetSparkline(ScAddress(0, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup2 = rDocument.GetSparkline(ScAddress(1, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup3 = rDocument.GetSparkline(ScAddress(2, 6, 0))->getSparklineGroup();
|
|
|
|
auto pGroup4 = rDocument.GetSparkline(ScAddress(3, 6, 0))->getSparklineGroup();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup2);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup3);
|
|
|
|
CPPUNIT_ASSERT(pGroup1 != pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup2, pGroup3);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup2, pGroup4);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(pGroup3, pGroup4);
|
|
|
|
}
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-04-01 17:06:18 +09:00
|
|
|
void SparklineTest::testSparklineList()
|
|
|
|
{
|
|
|
|
ScDocShellRef xDocSh = loadEmptyDocument();
|
|
|
|
CPPUNIT_ASSERT(xDocSh);
|
|
|
|
|
|
|
|
ScDocument& rDocument = xDocSh->GetDocument();
|
|
|
|
|
|
|
|
auto pSparklineGroup = std::make_shared<sc::SparklineGroup>();
|
|
|
|
|
|
|
|
rDocument.CreateSparkline(ScAddress(0, 6, 0), pSparklineGroup);
|
|
|
|
|
|
|
|
{
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklines.size());
|
|
|
|
}
|
|
|
|
rDocument.CreateSparkline(ScAddress(1, 6, 0), pSparklineGroup);
|
|
|
|
rDocument.CreateSparkline(ScAddress(2, 6, 0), pSparklineGroup);
|
|
|
|
|
|
|
|
{
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(3), pSparklines.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto pSparklineGroup2 = std::make_shared<sc::SparklineGroup>();
|
|
|
|
rDocument.CreateSparkline(ScAddress(3, 6, 0), pSparklineGroup2);
|
|
|
|
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(2), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines2 = pSparklineList->getSparklinesFor(pSparklineGroup2);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklines2.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
rDocument.DeleteSparkline(ScAddress(3, 6, 0));
|
|
|
|
|
|
|
|
{
|
|
|
|
auto* pSparklineList = rDocument.GetSparklineList(SCTAB(0));
|
|
|
|
|
|
|
|
auto pSparklineGroups = pSparklineList->getSparklineGroups();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(1), pSparklineGroups.size());
|
|
|
|
|
|
|
|
auto pSparklines = pSparklineList->getSparklinesFor(pSparklineGroups[0]);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(size_t(3), pSparklines.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
xDocSh->DoClose();
|
|
|
|
}
|
|
|
|
|
2022-03-10 14:08:35 +09:00
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(SparklineTest);
|
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|