sw/CppunitTest_sw_uiwriter.mk | 87 ++++++++++++++++++++++++++++++ sw/Module_sw.mk | 1 sw/qa/extras/uiwriter/data/empty.odt |binary sw/qa/extras/uiwriter/uiwriter.cxx | 101 +++++++++++++++++++++++++++++++++++ 4 files changed, 189 insertions(+)
New commits: commit 1b45e8a86ad46a25b4b47a88d7f42a44bc5d7bdc Author: Arnaud Versini <arnaud.vers...@libreoffice.org> Date: Thu Oct 10 12:08:22 2013 +0200 Introduce unit test in replace functionnality in Writer Change-Id: I5ee33965a511c7730610377a2e41f4728a0fe4d2 Reviewed-on: https://gerrit.libreoffice.org/6184 Tested-by: Arnaud Versini <arnaud.vers...@libreoffice.org> Reviewed-by: Arnaud Versini <arnaud.vers...@libreoffice.org> diff --git a/sw/CppunitTest_sw_uiwriter.mk b/sw/CppunitTest_sw_uiwriter.mk new file mode 100644 index 0000000..b14d6c9 --- /dev/null +++ b/sw/CppunitTest_sw_uiwriter.mk @@ -0,0 +1,87 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +#************************************************************************* +# +# 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/. +# +#************************************************************************* + +$(eval $(call gb_CppunitTest_CppunitTest,sw_uiwriter)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sw_uiwriter, \ + sw/qa/extras/uiwriter/uiwriter \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sw_uiwriter, \ + comphelper \ + cppu \ + cppuhelper \ + sal \ + svt \ + sw \ + test \ + unotest \ + vcl \ + tl \ + $(gb_UWINAPI) \ +)) + +$(eval $(call gb_CppunitTest_use_externals,sw_uiwriter,\ + boost_headers \ + libxml2 \ +)) + +$(eval $(call gb_CppunitTest_set_include,sw_uiwriter,\ + -I$(SRCDIR)/sw/inc \ + -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/source/ui/inc \ + -I$(SRCDIR)/sw/qa/extras/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_api,sw_uiwriter,\ + offapi \ + udkapi \ +)) + +$(eval $(call gb_CppunitTest_use_ure,sw_uiwriter)) + +$(eval $(call gb_CppunitTest_use_components,sw_uiwriter,\ + basic/util/sb \ + comphelper/util/comphelp \ + configmgr/source/configmgr \ + embeddedobj/util/embobj \ + fileaccess/source/fileacc \ + filter/source/config/cache/filterconfig1 \ + framework/util/fwk \ + i18npool/util/i18npool \ + linguistic/source/lng \ + package/util/package2 \ + package/source/xstor/xstor \ + sw/util/sw \ + sw/util/swd \ + sax/source/expatwrap/expwrap \ + sfx2/util/sfx \ + svl/source/fsstor/fsstorage \ + svtools/util/svt \ + toolkit/util/tk \ + ucb/source/core/ucb1 \ + ucb/source/ucp/file/ucpfile1 \ + unotools/util/utl \ + unoxml/source/service/unoxml \ + uui/util/uui \ + $(if $(filter-out MACOSX WNT,$(OS)), \ + vcl/vcl.unx \ + ) \ + $(if $(filter DESKTOP,$(BUILD_TYPE)),xmlhelp/util/ucpchelp1) \ + xmloff/util/xo \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,sw_uiwriter)) + +$(eval $(call gb_CppunitTest_use_unittest_configuration,sw_uiwriter)) + +# vim: set noet sw=4 ts=4: diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk index 7048d8e..fe83466 100644 --- a/sw/Module_sw.mk +++ b/sw/Module_sw.mk @@ -43,6 +43,7 @@ endif $(eval $(call gb_Module_add_check_targets,sw,\ CppunitTest_sw_uwriter \ + CppunitTest_sw_uiwriter \ )) $(eval $(call gb_Module_add_slowcheck_targets,sw,\ diff --git a/sw/qa/extras/uiwriter/data/empty.odt b/sw/qa/extras/uiwriter/data/empty.odt new file mode 100644 index 0000000..311cb06 Binary files /dev/null and b/sw/qa/extras/uiwriter/data/empty.odt differ diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx new file mode 100644 index 0000000..f9e37f6 --- /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: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits