1
0
Fork 0
libreoffice/sw/qa/uitest/writer_tests5/titlePageWizard.py
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

195 lines
9.9 KiB
Python

# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
#
# 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/.
#
from uitest.framework import UITestCase
from uitest.uihelper.common import get_url_for_data_file
# This tests the Format->Title Page wizard, specifically the reset page number portion,
# replacing some pages with title pages,
# inserting pages in the middle of the document,
# and inserting at the very end of the document.
class tdf138907(UITestCase):
def test_tdf138907(self):
with self.ui_test.load_file(get_url_for_data_file("tdf138907_titlePageDialog.odt")) as document:
# Confirm the starting state. Just a page break, without a valid restart page number on page 2
self.assertEqual(document.CurrentController.PageCount, 5)
Paragraphs = document.Text.createEnumeration()
Para1 = Paragraphs.nextElement()
self.assertEqual(Para1.String, "6")
self.assertEqual(Para1.PageDescName, "First Page")
Para2 = Paragraphs.nextElement()
self.assertEqual(Para2.String, "7")
self.assertEqual(Para2.PageDescName, None)
Para3 = Paragraphs.nextElement()
self.assertEqual(Para3.String, "8")
self.assertEqual(Para3.PageDescName, None)
Para4 = Paragraphs.nextElement()
self.assertEqual(Para4.String, "9")
self.assertEqual(Para4.PageDescName, None)
Para5 = Paragraphs.nextElement()
self.assertEqual(Para5.String, "10")
self.assertEqual(Para5.PageDescName, None)
#dialog Title Page
with self.ui_test.execute_dialog_through_command(".uno:TitlePageDialog") as xDialog:
#set restart page number to 2. With this doc, it defaults to resetting to 1.
xRestartNumbering = xDialog.getChild("NF_RESTART_NUMBERING")
xRestartNumbering.executeAction("UP", tuple()) # restart numbering at 2
Paragraphs = document.Text.createEnumeration()
Para1 = Paragraphs.nextElement()
self.assertEqual(Para1.String, "6")
self.assertEqual(Para1.PageDescName, "First Page")
self.assertEqual(Para2.String, "2")
Para2 = Paragraphs.nextElement()
# Without this fix, there was no PageDescName specified, just Landscape as default.
self.assertEqual(Para2.PageDescName, "Landscape")
#re-run dialog Title Page
with self.ui_test.execute_dialog_through_command(".uno:TitlePageDialog"):
pass
# Without this fix, re-running the wizard was failing with the title page restarting at page 2.
Paragraphs = document.Text.createEnumeration()
Para1 = Paragraphs.nextElement()
self.assertEqual(Para1.String, "6")
self.assertEqual(Para1.PageDescName, "First Page")
Para2 = Paragraphs.nextElement()
self.assertEqual(Para2.String, "2")
self.assertEqual(Para2.PageDescName, "Landscape")
#Note: 6 virtual pages, including blank, even page seen in book view
self.assertEqual(document.CurrentController.PageCount, 6)
#Now test replacing several pages with title and index styles
#dialog Title Page
with self.ui_test.execute_dialog_through_command(".uno:TitlePageDialog") as xDialog:
#Convert three pages to title/index pages starting at page two.
xPageCount = xDialog.getChild("NF_PAGE_COUNT")
for _ in range(0,2):
xPageCount.executeAction("UP", tuple())
xUseStartingPage = xDialog.getChild("RB_PAGE_START")
xUseStartingPage.executeAction("CLICK", tuple())
xStartingPage = xDialog.getChild("NF_PAGE_START")
xStartingPage.executeAction("UP", tuple()) #Start at page 2.
Paragraphs = document.Text.createEnumeration()
Para1 = Paragraphs.nextElement()
self.assertEqual(Para1.String, "6")
self.assertEqual(Para1.PageDescName, "First Page")
# Without the fix, the following results are all off by one.
Para2 = Paragraphs.nextElement()
self.assertEqual(Para2.String, "6")
self.assertEqual(Para2.PageDescName, "First Page")
Para3 = Paragraphs.nextElement()
self.assertEqual(Para3.String, "7")
self.assertEqual(Para3.PageDescName, "Index")
Para4 = Paragraphs.nextElement()
self.assertEqual(Para4.String, "8")
self.assertEqual(Para4.PageDescName, "Index")
Para5 = Paragraphs.nextElement()
self.assertEqual(Para5.String, "2")
self.assertEqual(Para5.PageDescName, "Landscape")
#Now test inserting at the end of the document
#dialog Title Page
with self.ui_test.execute_dialog_through_command(".uno:TitlePageDialog") as xDialog:
#Insert three title/index pages at the end of the document (plus a content page).
newPages = xDialog.getChild("RB_INSERT_NEW_PAGES")
newPages.executeAction("CLICK", tuple())
xPageCount = xDialog.getChild("NF_PAGE_COUNT")
for _ in range(0,2):
xPageCount.executeAction("UP", tuple())
xUseStartingPage = xDialog.getChild("RB_PAGE_START")
xUseStartingPage.executeAction("CLICK", tuple())
xStartingPage = xDialog.getChild("NF_PAGE_START")
for _ in range(0,18):
xStartingPage.executeAction("UP", tuple()) #Start at mythical page 20.
# Without the fix, the pages were being inserted before the last page.
text = document.Text.String.replace('\r\n', '\n')
self.assertEqual(text[0:1], "6")
self.assertEqual(text[2:3], "6")
self.assertEqual(text[4:5], "7")
self.assertEqual(text[6:7], "8")
# Without the fix, the new pages were inserted before the last page.
self.assertFalse("\n" in text[8:9])
#Note: 13 total virtual pages, including four blanks, as seen in book view
self.assertEqual(document.CurrentController.PageCount, 13)
#Now test inserting in the middle of the document
#dialog Title Page
with self.ui_test.execute_dialog_through_command(".uno:TitlePageDialog") as xDialog:
#Insert three title/index pages starting at page 2.
newPages = xDialog.getChild("RB_INSERT_NEW_PAGES")
newPages.executeAction("CLICK", tuple())
xPageCount = xDialog.getChild("NF_PAGE_COUNT")
for _ in range(0,2):
xPageCount.executeAction("UP", tuple())
xUseStartingPage = xDialog.getChild("RB_PAGE_START")
xUseStartingPage.executeAction("CLICK", tuple())
xStartingPage = xDialog.getChild("NF_PAGE_START")
for _ in range(0,10):
xStartingPage.executeAction("DOWN", tuple()) #Reset to page 1
xStartingPage.executeAction("UP", tuple()) #Start at page 2.
# Without first re-calculating the layout, the styles were applied to the wrong pages.
Paragraphs = document.Text.createEnumeration()
Para1 = Paragraphs.nextElement()
self.assertEqual(Para1.String, "6")
self.assertEqual(Para1.PageDescName, "First Page")
# The next three pages are the ones that were just inserted.
Para2 = Paragraphs.nextElement()
self.assertEqual(Para2.String, "")
self.assertEqual(Para2.PageDescName, "First Page")
Para3 = Paragraphs.nextElement()
self.assertEqual(Para3.String, "")
self.assertEqual(Para3.PageDescName, "Index")
Para4 = Paragraphs.nextElement()
self.assertEqual(Para4.String, "")
self.assertEqual(Para4.PageDescName, "Index")
# A bit of a quirk is that the style of the first page after the
# title page is still First Page - so that is used as the Normal page style.
# OK - this is a bit of a strange workflow, so just accept that.
Para5 = Paragraphs.nextElement()
self.assertEqual(Para5.String, "6")
self.assertEqual(Para5.PageDescName, "First Page")
Para6 = Paragraphs.nextElement()
self.assertEqual(Para6.String, "7")
self.assertEqual(Para6.PageDescName, "Index")
Para7 = Paragraphs.nextElement()
self.assertEqual(Para7.String, "8")
self.assertEqual(Para7.PageDescName, "Index")
Para8 = Paragraphs.nextElement()
self.assertEqual(Para8.String, "2")
self.assertEqual(Para8.PageDescName, "Landscape")
Para9 = Paragraphs.nextElement()
self.assertEqual(Para9.String, "")
self.assertEqual(Para9.PageDescName, "First Page")
Para10 = Paragraphs.nextElement()
self.assertEqual(Para10.String, "")
self.assertEqual(Para10.PageDescName, "Index")
Para11 = Paragraphs.nextElement()
self.assertEqual(Para11.String, "")
self.assertEqual(Para11.PageDescName, "Index")
# The quirk resets this extra content page to the "style after First page == First Page"
Para12 = Paragraphs.nextElement()
self.assertEqual(Para12.String, "")
self.assertEqual(Para12.PageDescName, "First Page")
#Note: 17 total virtual pages, including five blanks, as seen in book view
self.assertEqual(document.CurrentController.PageCount, 17)
# vim: set shiftwidth=4 softtabstop=4 expandtab: