sd/qa/uitest/impress_tests/tdf126605.py |   27 -------------
 sd/qa/unit/uiimpress.cxx                |   64 ++++++++++++++++++++++++++++----
 2 files changed, 57 insertions(+), 34 deletions(-)

New commits:
commit e410094c1c0565cbff335c71cc5ebb2ea4e706e2
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri Nov 12 11:55:07 2021 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Nov 12 14:58:32 2021 +0100

    tdf#126605: sd: move UItest to CppUnittest
    
    Change-Id: I6c7da3f903199027cd7cb446bdc559fcc27b3828
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125096
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sd/qa/uitest/impress_tests/tdf126605.py 
b/sd/qa/uitest/impress_tests/tdf126605.py
deleted file mode 100644
index ba277f726951..000000000000
--- a/sd/qa/uitest/impress_tests/tdf126605.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
-#
-# 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/.
-
-from uitest.framework import UITestCase
-from libreoffice.uno.propertyvalue import mkPropertyValues
-
-class tdf126605(UITestCase):
-
-   def test_run(self):
-        with self.ui_test.create_doc_in_start_center("impress"):
-            xTemplateDlg = self.xUITest.getTopFocusWindow()
-            xCancelBtn = xTemplateDlg.getChild("close")
-            self.ui_test.close_dialog_through_button(xCancelBtn)
-
-            xDoc = self.xUITest.getTopFocusWindow()
-            xEdit = xDoc.getChild("impress_win")
-            xEdit.executeAction("TYPE", mkPropertyValues({"TEXT":"test"}))
-
-            # Without the accompanying fix in place, it would crash at this 
point
-            self.xUITest.executeCommand(".uno:ParaRightToLeft")
-            self.xUITest.executeCommand(".uno:ParaLeftToRight")
-
-
-# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx
index 3368a45c3b61..68786fac3698 100644
--- a/sd/qa/unit/uiimpress.cxx
+++ b/sd/qa/unit/uiimpress.cxx
@@ -18,6 +18,7 @@
 #include <com/sun/star/drawing/XDrawView.hpp>
 #include <com/sun/star/frame/DispatchHelper.hpp>
 #include <com/sun/star/table/XMergeableCell.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
 
 #include <comphelper/processfactory.hxx>
 #include <comphelper/propertysequence.hxx>
@@ -64,7 +65,7 @@ public:
     virtual void tearDown() override;
 
     void checkCurrentPageNumber(sal_uInt16 nNum);
-    void insertStringToObject(sal_uInt16 nObj, const std::string& rStr);
+    void insertStringToObject(sal_uInt16 nObj, const std::string& rStr, bool 
bUseEscape);
     sd::slidesorter::SlideSorterViewShell* getSlideSorterViewShell();
 };
 
@@ -95,7 +96,8 @@ void SdUiImpressTest::checkCurrentPageNumber(sal_uInt16 nNum)
     CPPUNIT_ASSERT_EQUAL(nNum, nPageNumber);
 }
 
-void SdUiImpressTest::insertStringToObject(sal_uInt16 nObj, const std::string& 
rStr)
+void SdUiImpressTest::insertStringToObject(sal_uInt16 nObj, const std::string& 
rStr,
+                                           bool bUseEscape)
 {
     auto pImpressDocument = 
dynamic_cast<SdXImpressDocument*>(mxComponent.get());
     sd::ViewShell* pViewShell = 
pImpressDocument->GetDocShell()->GetViewShell();
@@ -116,11 +118,14 @@ void SdUiImpressTest::insertStringToObject(sal_uInt16 
nObj, const std::string& r
 
     CPPUNIT_ASSERT(pView->IsTextEdit());
 
-    pImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::ESCAPE);
-    pImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::ESCAPE);
-    Scheduler::ProcessEventsToIdle();
+    if (bUseEscape)
+    {
+        pImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, 
awt::Key::ESCAPE);
+        pImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, 
awt::Key::ESCAPE);
+        Scheduler::ProcessEventsToIdle();
 
-    CPPUNIT_ASSERT(!pView->IsTextEdit());
+        CPPUNIT_ASSERT(!pView->IsTextEdit());
+    }
 }
 
 sd::slidesorter::SlideSorterViewShell* 
SdUiImpressTest::getSlideSorterViewShell()
@@ -373,6 +378,51 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf128651)
     CPPUNIT_ASSERT_EQUAL_MESSAGE("Redo changes width", nUndoWidth, nRedoWidth);
 }
 
+CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf126605)
+{
+    mxComponent = loadFromDesktop("private:factory/simpress",
+                                  
"com.sun.star.presentation.PresentationDocument");
+
+    dispatchCommand(mxComponent, ".uno:InsertPage", {});
+    Scheduler::ProcessEventsToIdle();
+
+    insertStringToObject(0, "Test", /*bUseEscape*/ false);
+
+    uno::Reference<drawing::XDrawPagesSupplier> 
xDrawPagesSupplier(mxComponent, uno::UNO_QUERY);
+    uno::Reference<drawing::XDrawPage> 
xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(1),
+                                                 uno::UNO_QUERY);
+
+    uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), 
uno::UNO_QUERY);
+
+    uno::Reference<text::XText> xText
+        = uno::Reference<text::XTextRange>(xShape, 
uno::UNO_QUERY_THROW)->getText();
+    CPPUNIT_ASSERT_MESSAGE("Not a text shape", xText.is());
+
+    uno::Reference<container::XEnumerationAccess> paraEnumAccess(xText, 
uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> 
paraEnum(paraEnumAccess->createEnumeration());
+
+    // Get first paragraph
+    uno::Reference<text::XTextRange> xParagraph(paraEnum->nextElement(), 
uno::UNO_QUERY_THROW);
+    uno::Reference<beans::XPropertySet> xPropSet(xParagraph, 
uno::UNO_QUERY_THROW);
+
+    sal_Int16 nWritingMode = 0;
+    xPropSet->getPropertyValue("WritingMode") >>= nWritingMode;
+    CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nWritingMode);
+
+    // Without the fix in place, this test would have crashed here
+    dispatchCommand(mxComponent, ".uno:ParaRightToLeft", {});
+    Scheduler::ProcessEventsToIdle();
+
+    xPropSet->getPropertyValue("WritingMode") >>= nWritingMode;
+    CPPUNIT_ASSERT_EQUAL(text::WritingMode2::RL_TB, nWritingMode);
+
+    dispatchCommand(mxComponent, ".uno:ParaLeftToRight", {});
+    Scheduler::ProcessEventsToIdle();
+
+    xPropSet->getPropertyValue("WritingMode") >>= nWritingMode;
+    CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nWritingMode);
+}
+
 CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf100950)
 {
     mxComponent = loadFromDesktop("private:factory/simpress",
@@ -384,7 +434,7 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf100950)
     dispatchCommand(mxComponent, ".uno:InsertPage", {});
     Scheduler::ProcessEventsToIdle();
 
-    insertStringToObject(0, "Test");
+    insertStringToObject(0, "Test", /*bUseEscape*/ true);
 
     dispatchCommand(mxComponent, ".uno:Undo", {});
     Scheduler::ProcessEventsToIdle();

Reply via email to