From 214b0c8356ab88e75cb4bbc2ad3109ee536dcd70 Mon Sep 17 00:00:00 2001 From: kadertarlan Date: Fri, 18 Dec 2015 05:51:32 +0200 Subject: Java unittest(CheckCrossReferences.java) converted to Python unittest Change-Id: I9b856c9ffd7b3b380b2c1ba37c7c07355423c1f5 Reviewed-on: https://gerrit.libreoffice.org/20786 Reviewed-by: jan iversen Tested-by: jan iversen --- sw/JunitTest_sw_complex.mk | 1 - sw/PythonTest_sw_python.mk | 1 + sw/qa/complex/writer/CheckCrossReferences.java | 312 ------------------------- sw/qa/python/check_cross_references.py | 234 +++++++++++++++++++ 4 files changed, 235 insertions(+), 313 deletions(-) delete mode 100644 sw/qa/complex/writer/CheckCrossReferences.java create mode 100644 sw/qa/python/check_cross_references.py (limited to 'sw') diff --git a/sw/JunitTest_sw_complex.mk b/sw/JunitTest_sw_complex.mk index cdf9a944f319..ae96c28d0753 100644 --- a/sw/JunitTest_sw_complex.mk +++ b/sw/JunitTest_sw_complex.mk @@ -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 \ diff --git a/sw/PythonTest_sw_python.mk b/sw/PythonTest_sw_python.mk index c24d418e82d3..44d7ff4d9776 100644 --- a/sw/PythonTest_sw_python.mk +++ b/sw/PythonTest_sw_python.mk @@ -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 \ diff --git a/sw/qa/complex/writer/CheckCrossReferences.java b/sw/qa/complex/writer/CheckCrossReferences.java deleted file mode 100644 index 651604b439b7..000000000000 --- a/sw/qa/complex/writer/CheckCrossReferences.java +++ /dev/null @@ -1,312 +0,0 @@ -/* - * 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 . - */ - -package complex.writer; - -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.text.XTextDocument; -import com.sun.star.uno.UnoRuntime; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.openoffice.test.OfficeConnection; -import static org.junit.Assert.*; - -public class CheckCrossReferences { - - private com.sun.star.container.XEnumeration xParaEnum; - private com.sun.star.container.XEnumeration xPortionEnum; - private com.sun.star.util.XRefreshable xFieldsRefresh; - - public com.sun.star.text.XTextField getNextField() - throws com.sun.star.uno.Exception - { - while (true) { - while (xPortionEnum == null) { - if (!xParaEnum.hasMoreElements()) - fail("Cannot retrieve next field."); - - com.sun.star.container.XEnumerationAccess aPara = - UnoRuntime.queryInterface( - com.sun.star.container.XEnumerationAccess.class, xParaEnum.nextElement()); - xPortionEnum = aPara.createEnumeration(); - } - - if ( xPortionEnum == null ) - break; - - while ( xPortionEnum.hasMoreElements() ) { - com.sun.star.beans.XPropertySet xPortionProps = - UnoRuntime.queryInterface( - com.sun.star.beans.XPropertySet.class , xPortionEnum.nextElement()); - final String sPortionType = - xPortionProps.getPropertyValue( "TextPortionType" ).toString(); - if ( sPortionType.equals( "TextField") ) { - com.sun.star.text.XTextField xField = UnoRuntime.queryInterface( - com.sun.star.text.XTextField.class, - xPortionProps.getPropertyValue( "TextField" ) ); - assertNotNull("Cannot retrieve next field.", xField); - return xField; - } - } - xPortionEnum = null; - } - - return null; // unreachable - } - - public com.sun.star.beans.XPropertySet getFieldProps( - com.sun.star.text.XTextField xField ) { - com.sun.star.beans.XPropertySet xProps = - UnoRuntime.queryInterface( - com.sun.star.beans.XPropertySet.class, xField ); - - assertNotNull("Cannot retrieve field properties.", xProps); - - return xProps; - } - - public void checkField( com.sun.star.text.XTextField xField, - com.sun.star.beans.XPropertySet xProps, - short nFormat, - String aExpectedFieldResult ) - throws com.sun.star.uno.Exception - { - // set requested format - xProps.setPropertyValue("ReferenceFieldPart", Short.valueOf(nFormat)); - - // refresh fields in order to get new format applied - xFieldsRefresh.refresh(); - - String aFieldResult = xField.getPresentation( false ); - assertEquals( "set reference field format doesn't result in correct field result", - aExpectedFieldResult, aFieldResult); - } - - @Test public void checkCrossReferences() throws com.sun.star.uno.Exception { - // setup paragraph enumeration - { - com.sun.star.container.XEnumerationAccess xParaEnumAccess = - UnoRuntime.queryInterface( - com.sun.star.container.XEnumerationAccess.class, document.getText()); - xParaEnum = xParaEnumAccess.createEnumeration(); - } - - // get field refresher - { - com.sun.star.text.XTextFieldsSupplier xFieldSupp = - UnoRuntime.queryInterface( - com.sun.star.text.XTextFieldsSupplier.class, document); - xFieldsRefresh = UnoRuntime.queryInterface( - com.sun.star.util.XRefreshable.class, xFieldSupp.getTextFields()); - } - - // check first reference field - { - // strings for checking - final String FieldResult1 = "*i*"; - final String FieldResult2 = "+b+*i*"; - final String FieldResult3 = "-1-+b+*i*"; - final String FieldResult4 = "1"; - final String FieldResult5 = "1"; - final String FieldResult6 = "A.1"; - final String FieldResult7 = "2(a)"; - final String FieldResult8 = "2(b)"; - final String FieldResult9 = "2"; - final String FieldResult10 = "1(a)"; - final String FieldResult11 = "(b)"; - final String FieldResult12 = "(a)"; - - // variables for current field - com.sun.star.text.XTextField xField = null; - com.sun.star.beans.XPropertySet xProps = null; - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult2 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult1 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult3 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult1 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult1 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult3 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult3 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult1 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult3 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult5 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult4 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult6 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult4 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult4 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult6 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult6 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult4 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult6 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult7 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult12 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult7 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult8 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult11 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult8 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult9 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult9 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult9 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult4 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult4 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult4 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult10 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult12 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult10 ); - - xField = getNextField(); - xProps = getFieldProps( xField ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FieldResult12 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FieldResult12 ); - checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FieldResult7 ); - } - - // insert a certain cross-reference bookmark and a reference field to this bookmark - { - // restart paragraph enumeration - com.sun.star.container.XEnumerationAccess xParaEnumAccess = - UnoRuntime.queryInterface( - com.sun.star.container.XEnumerationAccess.class, document.getText()); - xParaEnum = xParaEnumAccess.createEnumeration(); - - // iterate on the paragraphs to find certain paragraph to insert the bookmark - com.sun.star.text.XTextRange xParaTextRange = null; - while ( xParaEnum.hasMoreElements() ) { - xParaTextRange = UnoRuntime.queryInterface( - com.sun.star.text.XTextRange.class, xParaEnum.nextElement()); - if ( xParaTextRange.getString().equals( "J" ) ) { - break; - } - else { - xParaTextRange = null; - } - } - assertNotNull( - "Cannot find paragraph to insert cross-reference bookmark.", - xParaTextRange); - - // insert bookmark - XMultiServiceFactory xFac = UnoRuntime.queryInterface( - XMultiServiceFactory.class, document); - final String cBookmarkName = "__RefNumPara__47114711"; - com.sun.star.text.XTextContent xBookmark = - UnoRuntime.queryInterface( - com.sun.star.text.XTextContent.class, - xFac.createInstance( "com.sun.star.text.Bookmark" ) ); - if ( xBookmark != null ) { - com.sun.star.container.XNamed xName = - UnoRuntime.queryInterface( - com.sun.star.container.XNamed.class, xBookmark ); - xName.setName( cBookmarkName ); - xBookmark.attach(xParaTextRange.getStart()); - } - - // insert reference field, which references the inserted bookmark - com.sun.star.text.XTextContent xNewField = - UnoRuntime.queryInterface( - com.sun.star.text.XTextContent.class, - xFac.createInstance( "com.sun.star.text.TextField.GetReference" ) ); - if ( xNewField != null ) { - com.sun.star.beans.XPropertySet xFieldProps = - UnoRuntime.queryInterface( - com.sun.star.beans.XPropertySet.class, xNewField ); - xFieldProps.setPropertyValue( "ReferenceFieldPart", Short.valueOf(com.sun.star.text.ReferenceFieldPart.TEXT) ); - xFieldProps.setPropertyValue( "ReferenceFieldSource", Short.valueOf(com.sun.star.text.ReferenceFieldSource.BOOKMARK) ); - xFieldProps.setPropertyValue( "SourceName", cBookmarkName ); - com.sun.star.text.XTextRange xFieldTextRange = - UnoRuntime.queryInterface( - com.sun.star.text.XTextRange.class, xParaEnum.nextElement()); - xNewField.attach(xFieldTextRange.getEnd()); - xFieldsRefresh.refresh(); - } - - // check inserted reference field - com.sun.star.text.XTextField xField = - UnoRuntime.queryInterface( - com.sun.star.text.XTextField.class, xNewField ); - assertEquals( "inserted reference field doesn't has correct field result", - "J", xField.getPresentation( false ) ); - - xParaTextRange.getStart().setString( "Hallo new bookmark: " ); - xFieldsRefresh.refresh(); - assertEquals( "inserted reference field doesn't has correct field result", - "Hallo new bookmark: J", xField.getPresentation( false ) ); - } - } - - @Before public void setUpDocument() { - document = util.WriterTools.loadTextDoc( - UnoRuntime.queryInterface( - XMultiServiceFactory.class, - connection.getComponentContext().getServiceManager()), - TestDocument.getUrl("CheckCrossReferences.odt")); - } - - @After public void tearDownDocument() { - util.DesktopTools.closeDoc(document); - } - - private XTextDocument document = null; - - @BeforeClass public static void setUpConnection() throws Exception { - connection.setUp(); - } - - @AfterClass public static void tearDownConnection() - throws InterruptedException, com.sun.star.uno.Exception - { - connection.tearDown(); - } - - private static final OfficeConnection connection = new OfficeConnection(); -} diff --git a/sw/qa/python/check_cross_references.py b/sw/qa/python/check_cross_references.py new file mode 100644 index 000000000000..da6006eb79bf --- /dev/null +++ b/sw/qa/python/check_cross_references.py @@ -0,0 +1,234 @@ +''' + 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() + -- cgit v1.2.3