summaryrefslogtreecommitdiff
path: root/sw/qa/extras/uiwriter/uiwriter.cxx
diff options
context:
space:
mode:
authorArnaud Versini <arnaud.versini@libreoffice.org>2013-10-10 12:08:22 +0200
committerArnaud Versini <arnaud.versini@libreoffice.org>2013-10-13 11:45:21 +0000
commit1b45e8a86ad46a25b4b47a88d7f42a44bc5d7bdc (patch)
treef2f3b5042ae4b1be819d8e897bcd641b65af1700 /sw/qa/extras/uiwriter/uiwriter.cxx
parent94755bd8f24582cc40c4257c971f518c270a52e7 (diff)
Introduce unit test in replace functionnality in Writer
Change-Id: I5ee33965a511c7730610377a2e41f4728a0fe4d2 Reviewed-on: https://gerrit.libreoffice.org/6184 Tested-by: Arnaud Versini <arnaud.versini@libreoffice.org> Reviewed-by: Arnaud Versini <arnaud.versini@libreoffice.org>
Diffstat (limited to 'sw/qa/extras/uiwriter/uiwriter.cxx')
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx101
1 files changed, 101 insertions, 0 deletions
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
new file mode 100644
index 000000000000..f9e37f62578e
--- /dev/null
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -0,0 +1,101 @@
+/*
+ * 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 <swmodeltestbase.hxx>
+#include <ndtxt.hxx>
+
+#include "UndoManager.hxx"
+
+static const char* DATA_DIRECTORY = "/sw/qa/extras/uiwriter/data/";
+
+class SwUiWriterTest : public SwModelTestBase
+{
+
+public:
+ void testReplaceForward();
+ //Regression test of fdo#70143
+ //EDITING: undo search&replace corrupt text when searching backward
+ void testReplaceBackward();
+
+ CPPUNIT_TEST_SUITE(SwUiWriterTest);
+ CPPUNIT_TEST(testReplaceForward);
+ CPPUNIT_TEST(testReplaceBackward);
+ CPPUNIT_TEST_SUITE_END();
+
+private:
+ SwDoc* createEmptyDoc();
+};
+
+SwDoc* SwUiWriterTest::createEmptyDoc()
+{
+ load(DATA_DIRECTORY, "empty.odt");
+
+ SwXTextDocument* pTxtDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get());
+ return pTxtDoc->GetDocShell()->GetDoc();
+}
+
+//Replacement tests
+
+static void lcl_selectCharacters(SwPaM& rPaM, int first, int end)
+{
+ rPaM.GetPoint()->nContent.Assign(rPaM.GetCntntNode(), first);
+ rPaM.SetMark();
+ rPaM.GetPoint()->nContent.Assign(rPaM.GetCntntNode(), end);
+}
+
+static const OUString ORIGINAL_REPLACE_CONTENT("toto titi tutu");
+static const OUString EXPECTED_REPLACE_CONTENT("toto toto tutu");
+
+void SwUiWriterTest::testReplaceForward()
+{
+ SwDoc* pDoc = createEmptyDoc();
+
+ sw::UndoManager& rUndoManager = pDoc->GetUndoManager();
+
+ SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1);
+ SwPaM aPaM(aIdx);
+
+ pDoc->InsertString(aPaM, ORIGINAL_REPLACE_CONTENT);
+
+ SwTxtNode* pTxtNode = aPaM.GetNode()->GetTxtNode();
+ lcl_selectCharacters(aPaM, 5, 9);
+ pDoc->ReplaceRange(aPaM, OUString("toto"), false);
+
+ CPPUNIT_ASSERT_EQUAL(EXPECTED_REPLACE_CONTENT, pTxtNode->GetTxt());
+
+ rUndoManager.Undo();
+
+ CPPUNIT_ASSERT_EQUAL(ORIGINAL_REPLACE_CONTENT, pTxtNode->GetTxt());
+}
+
+void SwUiWriterTest::testReplaceBackward()
+{
+ SwDoc* pDoc = createEmptyDoc();
+
+ sw::UndoManager& rUndoManager = pDoc->GetUndoManager();
+
+ SwNodeIndex aIdx(pDoc->GetNodes().GetEndOfContent(), -1);
+ SwPaM aPaM(aIdx);
+
+ pDoc->InsertString(aPaM, OUString("toto titi tutu"));
+ SwTxtNode* pTxtNode = aPaM.GetNode()->GetTxtNode();
+ lcl_selectCharacters(aPaM, 9, 5);
+
+ pDoc->ReplaceRange(aPaM, OUString("toto"), false);
+
+ CPPUNIT_ASSERT_EQUAL(EXPECTED_REPLACE_CONTENT, pTxtNode->GetTxt());
+
+ rUndoManager.Undo();
+
+ CPPUNIT_ASSERT_EQUAL(ORIGINAL_REPLACE_CONTENT, pTxtNode->GetTxt());
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest);
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */