Kaydet (Commit) 214b0c83 authored tarafından kadertarlan's avatar kadertarlan Kaydeden (comit) jan iversen

Java unittest(CheckCrossReferences.java) converted to Python unittest

Change-Id: I9b856c9ffd7b3b380b2c1ba37c7c07355423c1f5
Reviewed-on: https://gerrit.libreoffice.org/20786Reviewed-by: 's avatarjan iversen <jani@documentfoundation.org>
Tested-by: 's avatarjan iversen <jani@documentfoundation.org>
üst 6f1e2513
......@@ -29,7 +29,6 @@ $(eval $(call gb_JunitTest_add_sourcefiles,sw_complex,\
sw/qa/complex/checkColor/CheckChangeColor \
sw/qa/complex/indeterminateState/CheckIndeterminateState \
sw/qa/complex/writer/CheckBookmarks \
sw/qa/complex/writer/CheckCrossReferences \
sw/qa/complex/writer/CheckIndexedPropertyValues \
sw/qa/complex/writer/CheckNamedPropertyValues \
sw/qa/complex/writer/CheckTable \
......
......@@ -17,6 +17,7 @@ $(eval $(call gb_PythonTest_add_modules,sw_python,$(SRCDIR)/sw/qa/python,\
check_index \
check_flies \
check_fields \
check_cross_references \
check_styles \
check_table \
get_expression \
......
'''
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/.
This file incorporates work covered by the following license notice:
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed
with this work for additional information regarding copyright
ownership. The ASF licenses this file to you under the Apache
License, Version 2.0 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.apache.org/licenses/LICENSE-2.0 .
'''
import unittest
import unohelper
import os
from com.sun.star.lang import XMultiServiceFactory
from com.sun.star.text import XTextDocument
from com.sun.star.text import XTextField
from com.sun.star.container import XEnumeration
from com.sun.star.util import XRefreshable
from com.sun.star.container import XEnumerationAccess
from com.sun.star.beans import XPropertySet
from com.sun.star.text import XTextFieldsSupplier
from com.sun.star.container import XNamed
from com.sun.star.text.ReferenceFieldPart import NUMBER
from com.sun.star.text.ReferenceFieldPart import NUMBER_NO_CONTEXT
from com.sun.star.text.ReferenceFieldPart import NUMBER_FULL_CONTEXT
from com.sun.star.text.ReferenceFieldSource import BOOKMARK
from com.sun.star.text.ReferenceFieldPart import TEXT
from org.libreoffice.unotest import UnoInProcess
class CheckCrossReferences(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls._uno = UnoInProcess()
cls._uno.setUp()
cls.document = cls._uno.openWriterTemplateDoc("CheckCrossReferences.odt")
cls.xParaEnum = None
cls.xPortionEnum= None
cls.xFieldsRefresh= None
@classmethod
def tearDownClass(cls):
cls._uno.tearDown()
def getNextField(self):
while True:
while self.xPortionEnum == None:
if (not(self.xParaEnum.hasMoreElements())):
self.fail("Cannot retrieve next field.")
aPara = self.xParaEnum.nextElement()
self.xPortionEnum = aPara.createEnumeration()
if ( self.xPortionEnum == None ):
break
while self.xPortionEnum.hasMoreElements():
xPortionProps = self.xPortionEnum.nextElement()
sPortionType = str(xPortionProps.getPropertyValue( "TextPortionType" ))
if ( sPortionType == "TextField" ):
xField = xPortionProps.getPropertyValue( "TextField" )
self.assertTrue(xField) #Cannot retrieve next field
return xField
self.xPortionEnum = None
return None #unreachable
def getFieldProps(self,xField):
xProps = xField
self.assertTrue("Cannot retrieve field properties.", xProps)
return xProps
def checkField(self, xField , xProps, nFormat, aExpectedFieldResult ):
# set requested format
xProps.setPropertyValue("ReferenceFieldPart", int(nFormat))
# refresh fields in order to get new format applied
self.xFieldsRefresh.refresh()
aFieldResult = xField.getPresentation(False)
self.assertEqual(aExpectedFieldResult, aFieldResult) #set reference field format doesn't result in correct field result
def test_checkCrossReferences(self):
xParaEnumAccess = self.document.getText()
self.xParaEnum = xParaEnumAccess.createEnumeration();
#get field refresher
xFieldSupp = self.__class__.document
self.xFieldsRefresh = xFieldSupp.getTextFields()
#check first reference field
#strings for checking
FieldResult1 = "*i*"
FieldResult2 = "+b+*i*"
FieldResult3 = "-1-+b+*i*"
FieldResult4 = "1"
FieldResult5 = "1"
FieldResult6 = "A.1"
FieldResult7 = "2(a)"
FieldResult8 = "2(b)"
FieldResult9 = "2"
FieldResult10 = "1(a)"
FieldResult11 = "(b)"
FieldResult12 = "(a)"
#variables for current field
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult2 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult1 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult3 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult1 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult1 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult3 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult3 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult1 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult3 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult5 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult4 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult6 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult4 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult4 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult6 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult6 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult4 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult6 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult7 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult12 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult7 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult8 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult11 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult8 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult9 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult9 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult9 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult4 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult4 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult4 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult10 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult12 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult10 )
xField = self.getNextField()
xProps = self.getFieldProps(xField)
self.checkField( xField, xProps, NUMBER, FieldResult12 )
self.checkField( xField, xProps, NUMBER_NO_CONTEXT, FieldResult12 )
self.checkField( xField, xProps, NUMBER_FULL_CONTEXT, FieldResult7 )
#insert a certain cross-reference bookmark and a reference field to this bookmark
# restart paragraph enumeration
xParaEnumAccess = self.__class__.document.getText()
self.xParaEnum = xParaEnumAccess.createEnumeration()
# iterate on the paragraphs to find certain paragraph to insert the bookmark
while self.xParaEnum.hasMoreElements():
xParaTextRange = self.xParaEnum.nextElement()
if xParaTextRange.getString() == "J" :
break
else:
xParaTextRange = None
self.assertTrue(xParaTextRange) #Cannot find paragraph to insert cross-reference bookmark
#insert bookmark
xFac = self.__class__.document
cBookmarkName = "__RefNumPara__47114711"
xBookmark = xFac.createInstance( "com.sun.star.text.Bookmark" )
if xBookmark != None:
xName = xBookmark
xName.setName( cBookmarkName )
xBookmark.attach(xParaTextRange.getStart())
# insert reference field, which references the inserted bookmark
xNewField = xFac.createInstance( "com.sun.star.text.TextField.GetReference" )
if xNewField != None:
xFieldProps = xNewField
xFieldProps.setPropertyValue( "ReferenceFieldPart", int(TEXT))
xFieldProps.setPropertyValue( "ReferenceFieldSource", int(BOOKMARK))
xFieldProps.setPropertyValue( "SourceName", cBookmarkName )
xFieldTextRange = self.xParaEnum.nextElement()
xNewField.attach(xFieldTextRange.getEnd())
self.xFieldsRefresh.refresh()
#check inserted reference field
xField = xNewField
self.assertTrue("J", xField.getPresentation(False)) #inserted reference field doesn't has correct field result
xParaTextRange.getStart().setString( "Hallo new bookmark: ")
self.xFieldsRefresh.refresh()
self.assertEqual("Hallo new bookmark: J", xField.getPresentation(False)) #inserted reference field doesn't has correct field result
if __name__ == "__main__":
unittest.main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment