diff options
author | Arnaud Versini <arnaud.versini@libreoffice.org> | 2013-10-10 12:08:22 +0200 |
---|---|---|
committer | Arnaud Versini <arnaud.versini@libreoffice.org> | 2013-10-13 11:45:21 +0000 |
commit | 1b45e8a86ad46a25b4b47a88d7f42a44bc5d7bdc (patch) | |
tree | f2f3b5042ae4b1be819d8e897bcd641b65af1700 /sw/qa/extras/uiwriter | |
parent | 94755bd8f24582cc40c4257c971f518c270a52e7 (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')
-rw-r--r-- | sw/qa/extras/uiwriter/data/empty.odt | bin | 0 -> 7241 bytes | |||
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter.cxx | 101 |
2 files changed, 101 insertions, 0 deletions
diff --git a/sw/qa/extras/uiwriter/data/empty.odt b/sw/qa/extras/uiwriter/data/empty.odt Binary files differnew file mode 100644 index 000000000000..311cb06e575e --- /dev/null +++ b/sw/qa/extras/uiwriter/data/empty.odt 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: */ |