summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkadertarlan <kadertarlan1@gmail.com>2015-12-18 05:51:32 +0200
committerjan iversen <jani@documentfoundation.org>2015-12-18 12:00:04 +0000
commit214b0c8356ab88e75cb4bbc2ad3109ee536dcd70 (patch)
tree3fcba46b70cd20a158107533a044e760bbaaa29f
parent6f1e25133e31dbd8942e669bd658b43869f6dddc (diff)
Java unittest(CheckCrossReferences.java) converted to Python unittest
Change-Id: I9b856c9ffd7b3b380b2c1ba37c7c07355423c1f5 Reviewed-on: https://gerrit.libreoffice.org/20786 Reviewed-by: jan iversen <jani@documentfoundation.org> Tested-by: jan iversen <jani@documentfoundation.org>
-rw-r--r--sw/JunitTest_sw_complex.mk1
-rw-r--r--sw/PythonTest_sw_python.mk1
-rw-r--r--sw/qa/complex/writer/CheckCrossReferences.java312
-rw-r--r--sw/qa/python/check_cross_references.py234
4 files changed, 235 insertions, 313 deletions
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()
+