diff options
Diffstat (limited to 'sw/qa/complex/writer/CheckCrossReferences.java')
-rw-r--r-- | sw/qa/complex/writer/CheckCrossReferences.java | 334 |
1 files changed, 128 insertions, 206 deletions
diff --git a/sw/qa/complex/writer/CheckCrossReferences.java b/sw/qa/complex/writer/CheckCrossReferences.java index 7b469c0a4afc..cc7fcb1c7e53 100644 --- a/sw/qa/complex/writer/CheckCrossReferences.java +++ b/sw/qa/complex/writer/CheckCrossReferences.java @@ -1,123 +1,96 @@ -/* - * CheckCrossReferences.java - * - * Created on November 1, 2007, 1:49 PM - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ +/************************************************************************* +* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +* +************************************************************************/ package complex.writer; -import complexlib.ComplexTestCase; 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.*; /** * * @author od138299 */ -public class CheckCrossReferences extends ComplexTestCase { +public class CheckCrossReferences { - private com.sun.star.text.XTextDocument xDoc; private com.sun.star.container.XEnumeration xParaEnum; private com.sun.star.container.XEnumeration xPortionEnum; private com.sun.star.util.XRefreshable xFldsRefresh; - public String[] getTestMethodNames() { - return new String[]{"checkCrossReferences"}; - } - - public com.sun.star.text.XTextField getNextField() { - - com.sun.star.text.XTextField xField = null; + public com.sun.star.text.XTextField getNextField() + throws com.sun.star.uno.Exception + { if ( xPortionEnum != null ) { - try { - while ( xPortionEnum.hasMoreElements() ) { - com.sun.star.beans.XPropertySet xPortionProps = - (com.sun.star.beans.XPropertySet)UnoRuntime.queryInterface( - com.sun.star.beans.XPropertySet.class , xPortionEnum.nextElement()); - final String sPortionType = - xPortionProps.getPropertyValue( "TextPortionType" ).toString(); - if ( sPortionType.equals( "TextField") ) { - xField = (com.sun.star.text.XTextField)UnoRuntime.queryInterface( - com.sun.star.text.XTextField.class, - xPortionProps.getPropertyValue( "TextField" ) ); - if ( xField == null ) { - System.out.println("Cannot retrieve next field."); - failed("Cannot retrieve next field."); - return null; - } - return xField; - } + while ( xPortionEnum.hasMoreElements() ) { + com.sun.star.beans.XPropertySet xPortionProps = + (com.sun.star.beans.XPropertySet)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 = (com.sun.star.text.XTextField)UnoRuntime.queryInterface( + com.sun.star.text.XTextField.class, + xPortionProps.getPropertyValue( "TextField" ) ); + assertNotNull("Cannot retrieve next field.", xField); + return xField; } - } catch (com.sun.star.container.NoSuchElementException e) { - System.out.println("Cannot retrieve next field."); - e.printStackTrace(); - failed(e.getMessage()); - return null; - } catch (com.sun.star.beans.UnknownPropertyException e) { - System.out.println("Cannot retrieve next field."); - e.printStackTrace(); - failed(e.getMessage()); - return null; - } catch (com.sun.star.lang.WrappedTargetException e) { - System.out.println("Cannot retrieve next field."); - e.printStackTrace(); - failed(e.getMessage()); - return null; } } while ( xParaEnum.hasMoreElements() ) { - try { - com.sun.star.container.XEnumerationAccess aPara = - (com.sun.star.container.XEnumerationAccess)UnoRuntime.queryInterface( - com.sun.star.container.XEnumerationAccess.class, xParaEnum.nextElement()); - xPortionEnum = aPara.createEnumeration(); - while ( xPortionEnum.hasMoreElements() ) { - com.sun.star.beans.XPropertySet xPortionProps = - (com.sun.star.beans.XPropertySet)UnoRuntime.queryInterface( - com.sun.star.beans.XPropertySet.class , xPortionEnum.nextElement()); - final String sPortionType = - xPortionProps.getPropertyValue( "TextPortionType" ).toString(); - if ( sPortionType.equals( "TextField") ) { - xField = (com.sun.star.text.XTextField)UnoRuntime.queryInterface( - com.sun.star.text.XTextField.class, - xPortionProps.getPropertyValue( "TextField" ) ); - if ( xField == null ) { - System.out.println("Cannot retrieve next field."); - failed("Cannot retrieve next field."); - return null; - } - return xField; - } + com.sun.star.container.XEnumerationAccess aPara = + (com.sun.star.container.XEnumerationAccess)UnoRuntime.queryInterface( + com.sun.star.container.XEnumerationAccess.class, xParaEnum.nextElement()); + xPortionEnum = aPara.createEnumeration(); + while ( xPortionEnum.hasMoreElements() ) { + com.sun.star.beans.XPropertySet xPortionProps = + (com.sun.star.beans.XPropertySet)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 = (com.sun.star.text.XTextField)UnoRuntime.queryInterface( + com.sun.star.text.XTextField.class, + xPortionProps.getPropertyValue( "TextField" ) ); + assertNotNull("Cannot retrieve next field.", xField); + return xField; } - } catch (com.sun.star.container.NoSuchElementException e) { - System.out.println("Cannot retrieve next field."); - e.printStackTrace(); - failed(e.getMessage()); - return null; - } catch (com.sun.star.beans.UnknownPropertyException e) { - System.out.println("Cannot retrieve next field."); - e.printStackTrace(); - failed(e.getMessage()); - return null; - } catch (com.sun.star.lang.WrappedTargetException e) { - System.out.println("Cannot retrieve next field."); - e.printStackTrace(); - failed(e.getMessage()); - return null; } } - if ( xField == null ) { - System.out.println("Cannot retrieve next field."); - failed("Cannot retrieve next field."); - return null; - } - - return xField; + fail("Cannot retrieve next field."); + return null; // unreachable } public com.sun.star.beans.XPropertySet getFieldProps( @@ -126,11 +99,7 @@ public class CheckCrossReferences extends ComplexTestCase { (com.sun.star.beans.XPropertySet)UnoRuntime.queryInterface( com.sun.star.beans.XPropertySet.class, xField ); - if ( xProps == null ) { - System.out.println("Cannot retrieve field properties."); - failed("Cannot retrieve field properties."); - return null; - } + assertNotNull("Cannot retrieve field properties.", xProps); return xProps; } @@ -138,56 +107,26 @@ public class CheckCrossReferences extends ComplexTestCase { public void checkField( com.sun.star.text.XTextField xField, com.sun.star.beans.XPropertySet xProps, short nFormat, - String aExpectedFldResult ) { + String aExpectedFldResult ) + throws com.sun.star.uno.Exception + { // set requested format - try { - xProps.setPropertyValue("ReferenceFieldPart", new Short(nFormat)); - } catch (com.sun.star.lang.IllegalArgumentException e) { - System.out.println("Cannot set ReferenceFieldPart property at field."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } catch (com.sun.star.beans.PropertyVetoException e) { - System.out.println("Cannot set ReferenceFieldPart property at field."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } catch (com.sun.star.lang.WrappedTargetException e) { - System.out.println("Cannot set ReferenceFieldPart property at field."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } catch (com.sun.star.beans.UnknownPropertyException e) { - System.out.println("Cannot set ReferenceFieldPart property at field."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } + xProps.setPropertyValue("ReferenceFieldPart", new Short(nFormat)); + // refresh fields in order to get new format applied xFldsRefresh.refresh(); String aFldResult = xField.getPresentation( false ); - assure( "set reference field format doesn't result in correct field result", - aFldResult.equals(aExpectedFldResult), true ); + assertEquals( "set reference field format doesn't result in correct field result", + aExpectedFldResult, aFldResult); } - public void checkCrossReferences() throws com.sun.star.uno.Exception { - // load test document - try { - XMultiServiceFactory xMSF = (XMultiServiceFactory)param.getMSF(); - xDoc = util.WriterTools.loadTextDoc( xMSF, util.utils.getFullTestURL("CheckCrossReferences.odt")); - } catch(com.sun.star.uno.RuntimeException e) { - System.out.println("Cannot load test document."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } - + @Test public void checkCrossReferences() throws com.sun.star.uno.Exception { // setup paragraph enumeration { com.sun.star.container.XEnumerationAccess xParaEnumAccess = (com.sun.star.container.XEnumerationAccess)UnoRuntime.queryInterface( - com.sun.star.container.XEnumerationAccess.class, xDoc.getText()); + com.sun.star.container.XEnumerationAccess.class, document.getText()); xParaEnum = xParaEnumAccess.createEnumeration(); } @@ -195,7 +134,7 @@ public class CheckCrossReferences extends ComplexTestCase { { com.sun.star.text.XTextFieldsSupplier xFieldSupp = (com.sun.star.text.XTextFieldsSupplier)UnoRuntime.queryInterface( - com.sun.star.text.XTextFieldsSupplier.class, xDoc); + com.sun.star.text.XTextFieldsSupplier.class, document); xFldsRefresh = (com.sun.star.util.XRefreshable)UnoRuntime.queryInterface( com.sun.star.util.XRefreshable.class, xFieldSupp.getTextFields()); } @@ -214,7 +153,6 @@ public class CheckCrossReferences extends ComplexTestCase { com.sun.star.text.XTextField xField = null; com.sun.star.beans.XPropertySet xProps = null; - log.println( "Checking field reference formats NUMBER, NUMBER_NO_CONTEXT and NUMBER_FULL_CONTEXT for existing fields" ); xField = getNextField(); xProps = getFieldProps( xField ); checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult2 ); @@ -254,63 +192,36 @@ public class CheckCrossReferences extends ComplexTestCase { // insert a certain cross-reference bookmark and a reference field to this bookmark { - log.println("Checking insert of cross-reference bookmark and corresponding reference field"); // restart paragraph enumeration com.sun.star.container.XEnumerationAccess xParaEnumAccess = (com.sun.star.container.XEnumerationAccess)UnoRuntime.queryInterface( - com.sun.star.container.XEnumerationAccess.class, xDoc.getText()); + 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() ) { - try { - xParaTextRange = (com.sun.star.text.XTextRange)UnoRuntime.queryInterface( - com.sun.star.text.XTextRange.class, xParaEnum.nextElement()); - if ( xParaTextRange.getString().equals( "J" ) ) { - break; - } - else { - xParaTextRange = null; - } - } catch (com.sun.star.container.NoSuchElementException e) { - System.out.println("Cannot find paragraph to insert cross-reference bookmark."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } catch (com.sun.star.lang.WrappedTargetException e) { - System.out.println("Cannot find paragraph to insert cross-reference bookmark."); - e.printStackTrace(); - failed(e.getMessage()); - return; + xParaTextRange = (com.sun.star.text.XTextRange)UnoRuntime.queryInterface( + com.sun.star.text.XTextRange.class, xParaEnum.nextElement()); + if ( xParaTextRange.getString().equals( "J" ) ) { + break; + } + else { + xParaTextRange = null; } } - if ( xParaTextRange == null ) { - System.out.println("Cannot find paragraph to insert cross-reference bookmark."); - failed("Cannot find paragraph to insert cross-reference bookmark."); - return; - } + assertNotNull( + "Cannot find paragraph to insert cross-reference bookmark.", + xParaTextRange); // insert bookmark XMultiServiceFactory xFac = (XMultiServiceFactory)UnoRuntime.queryInterface( - XMultiServiceFactory.class, xDoc); + XMultiServiceFactory.class, document); final String cBookmarkName = "__RefNumPara__47114711"; - com.sun.star.text.XTextContent xBookmark = null; - try { - xBookmark = (com.sun.star.text.XTextContent)UnoRuntime.queryInterface( - com.sun.star.text.XTextContent.class, - xFac.createInstance( "com.sun.star.text.Bookmark" ) ); - } catch (com.sun.star.lang.IllegalArgumentException e) { - System.out.println("Cannot create bookmark."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } catch (com.sun.star.uno.Exception e) { - System.out.println("Cannot create bookmark."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } + com.sun.star.text.XTextContent xBookmark = + (com.sun.star.text.XTextContent)UnoRuntime.queryInterface( + com.sun.star.text.XTextContent.class, + xFac.createInstance( "com.sun.star.text.Bookmark" ) ); if ( xBookmark != null ) { com.sun.star.container.XNamed xName = (com.sun.star.container.XNamed)UnoRuntime.queryInterface( @@ -320,22 +231,10 @@ public class CheckCrossReferences extends ComplexTestCase { } // insert reference field, which references the inserted bookmark - com.sun.star.text.XTextContent xNewField = null; - try { - xNewField = (com.sun.star.text.XTextContent)UnoRuntime.queryInterface( - com.sun.star.text.XTextContent.class, - xFac.createInstance( "com.sun.star.text.TextField.GetReference" ) ); - } catch (com.sun.star.lang.IllegalArgumentException e) { - System.out.println("Cannot create new field."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } catch (com.sun.star.uno.Exception e) { - System.out.println("Cannot create new field."); - e.printStackTrace(); - failed(e.getMessage()); - return; - } + com.sun.star.text.XTextContent xNewField = + (com.sun.star.text.XTextContent)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 = (com.sun.star.beans.XPropertySet)UnoRuntime.queryInterface( @@ -354,16 +253,39 @@ public class CheckCrossReferences extends ComplexTestCase { com.sun.star.text.XTextField xField = (com.sun.star.text.XTextField)UnoRuntime.queryInterface( com.sun.star.text.XTextField.class, xNewField ); - assure( "inserted reference field doesn't has correct field result", - xField.getPresentation( false ).equals("J"), true ); + assertEquals( "inserted reference field doesn't has correct field result", + "J", xField.getPresentation( false ) ); xParaTextRange.getStart().setString( "Hallo new bookmark: " ); xFldsRefresh.refresh(); - assure( "inserted reference field doesn't has correct field result. Instead it's: "+xField.getPresentation( false ), - xField.getPresentation( false ).equals("Hallo new bookmark: J"), true ); + assertEquals( "inserted reference field doesn't has correct field result", + "Hallo new bookmark: J", xField.getPresentation( false ) ); } + } + + @Before public void setUpDocument() throws com.sun.star.uno.Exception { + document = util.WriterTools.loadTextDoc( + UnoRuntime.queryInterface( + XMultiServiceFactory.class, + connection.getComponentContext().getServiceManager()), + TestDocument.getUrl("CheckCrossReferences.odt")); + } - // closing test document - util.DesktopTools.closeDoc( xDoc ); + @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(); } |