summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-09-03 22:59:11 +0200
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-09-03 23:00:38 +0200
commit41afbdcc624c075888610a049e84a14c548bdaac (patch)
tree0e3326cdd3e84103566684a086ae26d37b4057dc
parent31abf4ce4e18cf2e94c6e598f255ae7cd8f675fa (diff)
fdo#83217: Write test for this.
Change-Id: I5af25079a24d4c18eed70a7f0abc42d84cfc2242
-rw-r--r--sc/qa/unit/ucalc.hxx2
-rw-r--r--sc/qa/unit/ucalc_formula.cxx56
2 files changed, 58 insertions, 0 deletions
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 031517b49323..ec9542c4bc66 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -131,6 +131,7 @@ public:
void testFormulaRefUpdateInsertColumns();
void testFormulaRefUpdateMove();
void testFormulaRefUpdateMoveUndo();
+ void testFormulaRefUpdateMoveToSheet();
void testFormulaRefUpdateDeleteContent();
void testFormulaRefUpdateNamedExpression();
void testFormulaRefUpdateNamedExpressionMove();
@@ -412,6 +413,7 @@ public:
CPPUNIT_TEST(testFormulaRefUpdateInsertColumns);
CPPUNIT_TEST(testFormulaRefUpdateMove);
CPPUNIT_TEST(testFormulaRefUpdateMoveUndo);
+ CPPUNIT_TEST(testFormulaRefUpdateMoveToSheet);
CPPUNIT_TEST(testFormulaRefUpdateDeleteContent);
CPPUNIT_TEST(testFormulaRefUpdateNamedExpression);
CPPUNIT_TEST(testFormulaRefUpdateNamedExpressionMove);
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 416e41dded3c..d4344e27e35f 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -1849,6 +1849,62 @@ void Test::testFormulaRefUpdateMoveUndo()
m_pDoc->DeleteTab(0);
}
+void Test::testFormulaRefUpdateMoveToSheet()
+{
+ sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
+
+ m_pDoc->InsertTab(0, "Sheet1");
+ m_pDoc->InsertTab(1, "Sheet2");
+
+ // Set values to A1:A2 on Sheet1, and B1:B2 to reference them.
+ m_pDoc->SetValue(ScAddress(0,0,0), 11);
+ m_pDoc->SetValue(ScAddress(0,1,0), 12);
+ m_pDoc->SetString(ScAddress(1,0,0), "=A1");
+ m_pDoc->SetString(ScAddress(1,1,0), "=A2");
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,0,0), "A1"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,1,0), "A2"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ CPPUNIT_ASSERT_EQUAL(11.0, m_pDoc->GetValue(ScAddress(1,0,0)));
+ CPPUNIT_ASSERT_EQUAL(12.0, m_pDoc->GetValue(ScAddress(1,1,0)));
+
+ // Move A1:A2 on Sheet1 to B3:B4 on Sheet2.
+ ScDocFunc& rFunc = getDocShell().GetDocFunc();
+ bool bMoved = rFunc.MoveBlock(ScRange(0,0,0,0,1,0), ScAddress(1,2,1), true, true, false, true);
+ CPPUNIT_ASSERT(bMoved);
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,0,0), "Sheet2.B3"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,1,0), "Sheet2.B4"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ // Undo and check again.
+ SfxUndoManager* pUndoMgr = m_pDoc->GetUndoManager();
+ pUndoMgr->Undo();
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,0,0), "A1"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,1,0), "A2"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ // Redo and check.
+ pUndoMgr->Redo();
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,0,0), "Sheet2.B3"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ if (!checkFormula(*m_pDoc, ScAddress(1,1,0), "Sheet2.B4"))
+ CPPUNIT_FAIL("Wrong formula");
+
+ m_pDoc->DeleteTab(1);
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testFormulaRefUpdateDeleteContent()
{
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.