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>
102 lines
2.7 KiB
C++
102 lines
2.7 KiB
C++
/*
|
|
* 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: */
|