[Libreoffice-commits] core.git: sw/CppunitTest_sw_uiwriter.mk sw/Module_sw.mk sw/qa

Arnaud Versini arnaud.versini at libreoffice.org
Sun Oct 13 04:45:42 PDT 2013


 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.versini at 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.versini at libreoffice.org>
    Reviewed-by: Arnaud Versini <arnaud.versini at 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: */


More information about the Libreoffice-commits mailing list