[Libreoffice-commits] core.git: sw/JunitTest_sw_complex.mk sw/PythonTest_sw_python.mk sw/qa

kadertarlan kadertarlan1 at gmail.com
Fri Dec 18 04:00:36 PST 2015


 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(-)

New commits:
commit 214b0c8356ab88e75cb4bbc2ad3109ee536dcd70
Author: kadertarlan <kadertarlan1 at gmail.com>
Date:   Fri Dec 18 05:51:32 2015 +0200

    Java unittest(CheckCrossReferences.java) converted to Python unittest
    
    Change-Id: I9b856c9ffd7b3b380b2c1ba37c7c07355423c1f5
    Reviewed-on: https://gerrit.libreoffice.org/20786
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>

diff --git a/sw/JunitTest_sw_complex.mk b/sw/JunitTest_sw_complex.mk
index cdf9a94..ae96c28 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 c24d418..44d7ff4 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 651604b..0000000
--- 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 0000000..da6006e
--- /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()
+


More information about the Libreoffice-commits mailing list