1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package complex.writer; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 27*b1cdbd2cSJim Jagielski import com.sun.star.container.XNamed; 28*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameAccess; 29*b1cdbd2cSJim Jagielski import com.sun.star.container.XIndexAccess; 30*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 31*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextDocument; 32*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 33*b1cdbd2cSJim Jagielski import complexlib.ComplexTestCase; 34*b1cdbd2cSJim Jagielski import java.math.BigInteger; 35*b1cdbd2cSJim Jagielski import java.util.Collection; 36*b1cdbd2cSJim Jagielski import java.util.ArrayList; 37*b1cdbd2cSJim Jagielski import org.junit.After; 38*b1cdbd2cSJim Jagielski import org.junit.AfterClass; 39*b1cdbd2cSJim Jagielski import org.junit.Before; 40*b1cdbd2cSJim Jagielski import org.junit.BeforeClass; 41*b1cdbd2cSJim Jagielski import org.junit.Test; 42*b1cdbd2cSJim Jagielski import org.openoffice.test.OfficeConnection; 43*b1cdbd2cSJim Jagielski import static org.junit.Assert.*; 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski public class CheckFlies { checkFlies()46*b1cdbd2cSJim Jagielski @Test public void checkFlies() 47*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception 48*b1cdbd2cSJim Jagielski { 49*b1cdbd2cSJim Jagielski com.sun.star.text.XTextFramesSupplier xTFS = (com.sun.star.text.XTextFramesSupplier)UnoRuntime.queryInterface( 50*b1cdbd2cSJim Jagielski com.sun.star.text.XTextFramesSupplier.class, 51*b1cdbd2cSJim Jagielski document); 52*b1cdbd2cSJim Jagielski checkTextFrames(xTFS); 53*b1cdbd2cSJim Jagielski com.sun.star.text.XTextGraphicObjectsSupplier xTGOS = (com.sun.star.text.XTextGraphicObjectsSupplier)UnoRuntime.queryInterface( 54*b1cdbd2cSJim Jagielski com.sun.star.text.XTextGraphicObjectsSupplier.class, 55*b1cdbd2cSJim Jagielski document); 56*b1cdbd2cSJim Jagielski checkGraphicFrames(xTGOS); 57*b1cdbd2cSJim Jagielski com.sun.star.text.XTextEmbeddedObjectsSupplier xTEOS = (com.sun.star.text.XTextEmbeddedObjectsSupplier)UnoRuntime.queryInterface( 58*b1cdbd2cSJim Jagielski com.sun.star.text.XTextEmbeddedObjectsSupplier.class, 59*b1cdbd2cSJim Jagielski document); 60*b1cdbd2cSJim Jagielski checkEmbeddedFrames(xTEOS); 61*b1cdbd2cSJim Jagielski } 62*b1cdbd2cSJim Jagielski checkEmbeddedFrames(com.sun.star.text.XTextEmbeddedObjectsSupplier xTGOS)63*b1cdbd2cSJim Jagielski private void checkEmbeddedFrames(com.sun.star.text.XTextEmbeddedObjectsSupplier xTGOS) 64*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception 65*b1cdbd2cSJim Jagielski { 66*b1cdbd2cSJim Jagielski Collection<String> vExpectedEmbeddedFrames = new ArrayList<String>(); 67*b1cdbd2cSJim Jagielski vExpectedEmbeddedFrames.add("Object1"); 68*b1cdbd2cSJim Jagielski int nEmbeddedFrames = vExpectedEmbeddedFrames.size(); 69*b1cdbd2cSJim Jagielski com.sun.star.container.XNameAccess xEmbeddedFrames = xTGOS.getEmbeddedObjects(); 70*b1cdbd2cSJim Jagielski for(String sFrameName : xEmbeddedFrames.getElementNames()) 71*b1cdbd2cSJim Jagielski { 72*b1cdbd2cSJim Jagielski assertTrue( 73*b1cdbd2cSJim Jagielski "Unexpected frame name", 74*b1cdbd2cSJim Jagielski vExpectedEmbeddedFrames.remove(sFrameName)); 75*b1cdbd2cSJim Jagielski xEmbeddedFrames.getByName(sFrameName); 76*b1cdbd2cSJim Jagielski assertTrue( 77*b1cdbd2cSJim Jagielski "Could not find embedded frame by name.", 78*b1cdbd2cSJim Jagielski xEmbeddedFrames.hasByName(sFrameName)); 79*b1cdbd2cSJim Jagielski } 80*b1cdbd2cSJim Jagielski assertTrue( 81*b1cdbd2cSJim Jagielski "Missing expected embedded frames.", 82*b1cdbd2cSJim Jagielski vExpectedEmbeddedFrames.isEmpty()); 83*b1cdbd2cSJim Jagielski try 84*b1cdbd2cSJim Jagielski { 85*b1cdbd2cSJim Jagielski xEmbeddedFrames.getByName("Nonexisting embedded frame"); 86*b1cdbd2cSJim Jagielski fail("Got nonexisting embedded frame"); 87*b1cdbd2cSJim Jagielski } 88*b1cdbd2cSJim Jagielski catch(com.sun.star.container.NoSuchElementException e) 89*b1cdbd2cSJim Jagielski {} 90*b1cdbd2cSJim Jagielski assertFalse( 91*b1cdbd2cSJim Jagielski "Has nonexisting embedded frame", 92*b1cdbd2cSJim Jagielski xEmbeddedFrames.hasByName("Nonexisting embedded frame")); 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski com.sun.star.container.XIndexAccess xEmbeddedFramesIdx = (com.sun.star.container.XIndexAccess)UnoRuntime.queryInterface( 95*b1cdbd2cSJim Jagielski com.sun.star.container.XIndexAccess.class, 96*b1cdbd2cSJim Jagielski xEmbeddedFrames); 97*b1cdbd2cSJim Jagielski assertEquals( 98*b1cdbd2cSJim Jagielski "Unexpected number of embedded frames reported.", nEmbeddedFrames, 99*b1cdbd2cSJim Jagielski xEmbeddedFramesIdx.getCount()); 100*b1cdbd2cSJim Jagielski for(int nCurrentFrameIdx = 0; nCurrentFrameIdx < xEmbeddedFramesIdx.getCount(); nCurrentFrameIdx++) 101*b1cdbd2cSJim Jagielski { 102*b1cdbd2cSJim Jagielski xEmbeddedFramesIdx.getByIndex(nCurrentFrameIdx); 103*b1cdbd2cSJim Jagielski } 104*b1cdbd2cSJim Jagielski } 105*b1cdbd2cSJim Jagielski checkGraphicFrames(com.sun.star.text.XTextGraphicObjectsSupplier xTGOS)106*b1cdbd2cSJim Jagielski private void checkGraphicFrames(com.sun.star.text.XTextGraphicObjectsSupplier xTGOS) 107*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception 108*b1cdbd2cSJim Jagielski { 109*b1cdbd2cSJim Jagielski Collection<String> vExpectedGraphicFrames = new ArrayList<String>(); 110*b1cdbd2cSJim Jagielski vExpectedGraphicFrames.add("graphics1"); 111*b1cdbd2cSJim Jagielski int nGraphicFrames = vExpectedGraphicFrames.size(); 112*b1cdbd2cSJim Jagielski com.sun.star.container.XNameAccess xGraphicFrames = xTGOS.getGraphicObjects(); 113*b1cdbd2cSJim Jagielski for(String sFrameName : xGraphicFrames.getElementNames()) 114*b1cdbd2cSJim Jagielski { 115*b1cdbd2cSJim Jagielski assertTrue( 116*b1cdbd2cSJim Jagielski "Unexpected frame name", 117*b1cdbd2cSJim Jagielski vExpectedGraphicFrames.remove(sFrameName)); 118*b1cdbd2cSJim Jagielski xGraphicFrames.getByName(sFrameName); 119*b1cdbd2cSJim Jagielski assertTrue( 120*b1cdbd2cSJim Jagielski "Could not find graphics frame by name.", 121*b1cdbd2cSJim Jagielski xGraphicFrames.hasByName(sFrameName)); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski assertTrue( 124*b1cdbd2cSJim Jagielski "Missing expected graphics frames.", 125*b1cdbd2cSJim Jagielski vExpectedGraphicFrames.isEmpty()); 126*b1cdbd2cSJim Jagielski try 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski xGraphicFrames.getByName("Nonexisting graphics frame"); 129*b1cdbd2cSJim Jagielski fail("Got nonexisting graphics frame"); 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski catch(com.sun.star.container.NoSuchElementException e) 132*b1cdbd2cSJim Jagielski {} 133*b1cdbd2cSJim Jagielski assertFalse( 134*b1cdbd2cSJim Jagielski "Has nonexisting graphics frame", 135*b1cdbd2cSJim Jagielski xGraphicFrames.hasByName("Nonexisting graphics frame")); 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski com.sun.star.container.XIndexAccess xGraphicFramesIdx = (com.sun.star.container.XIndexAccess)UnoRuntime.queryInterface( 138*b1cdbd2cSJim Jagielski com.sun.star.container.XIndexAccess.class, 139*b1cdbd2cSJim Jagielski xGraphicFrames); 140*b1cdbd2cSJim Jagielski assertEquals( 141*b1cdbd2cSJim Jagielski "Unexpected number of graphics frames reported.", nGraphicFrames, 142*b1cdbd2cSJim Jagielski xGraphicFramesIdx.getCount()); 143*b1cdbd2cSJim Jagielski for(int nCurrentFrameIdx = 0; nCurrentFrameIdx < xGraphicFramesIdx.getCount(); nCurrentFrameIdx++) 144*b1cdbd2cSJim Jagielski { 145*b1cdbd2cSJim Jagielski xGraphicFramesIdx.getByIndex(nCurrentFrameIdx); 146*b1cdbd2cSJim Jagielski } 147*b1cdbd2cSJim Jagielski } 148*b1cdbd2cSJim Jagielski checkTextFrames(com.sun.star.text.XTextFramesSupplier xTFS)149*b1cdbd2cSJim Jagielski private void checkTextFrames(com.sun.star.text.XTextFramesSupplier xTFS) 150*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception 151*b1cdbd2cSJim Jagielski { 152*b1cdbd2cSJim Jagielski Collection<String> vExpectedTextFrames = new ArrayList<String>(); 153*b1cdbd2cSJim Jagielski vExpectedTextFrames.add("Frame1"); 154*b1cdbd2cSJim Jagielski vExpectedTextFrames.add("Frame2"); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski int nTextFrames = vExpectedTextFrames.size(); 157*b1cdbd2cSJim Jagielski com.sun.star.container.XNameAccess xTextFrames = xTFS.getTextFrames(); 158*b1cdbd2cSJim Jagielski for(String sFrameName : xTextFrames.getElementNames()) 159*b1cdbd2cSJim Jagielski { 160*b1cdbd2cSJim Jagielski assertTrue( 161*b1cdbd2cSJim Jagielski "Unexpected frame name", 162*b1cdbd2cSJim Jagielski vExpectedTextFrames.remove(sFrameName)); 163*b1cdbd2cSJim Jagielski xTextFrames.getByName(sFrameName); 164*b1cdbd2cSJim Jagielski assertTrue( 165*b1cdbd2cSJim Jagielski "Could not find text frame by name.", 166*b1cdbd2cSJim Jagielski xTextFrames.hasByName(sFrameName)); 167*b1cdbd2cSJim Jagielski } 168*b1cdbd2cSJim Jagielski assertTrue( 169*b1cdbd2cSJim Jagielski "Missing expected text frames.", vExpectedTextFrames.isEmpty()); 170*b1cdbd2cSJim Jagielski try 171*b1cdbd2cSJim Jagielski { 172*b1cdbd2cSJim Jagielski xTextFrames.getByName("Nonexisting Textframe"); 173*b1cdbd2cSJim Jagielski fail("Got nonexisting text frame."); 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski catch(com.sun.star.container.NoSuchElementException e) 176*b1cdbd2cSJim Jagielski {} 177*b1cdbd2cSJim Jagielski assertFalse( 178*b1cdbd2cSJim Jagielski "Has nonexisting text frame.", 179*b1cdbd2cSJim Jagielski xTextFrames.hasByName("Nonexisting text frame")); 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski com.sun.star.container.XIndexAccess xTextFramesIdx = (com.sun.star.container.XIndexAccess)UnoRuntime.queryInterface( 182*b1cdbd2cSJim Jagielski com.sun.star.container.XIndexAccess.class, 183*b1cdbd2cSJim Jagielski xTextFrames); 184*b1cdbd2cSJim Jagielski assertEquals( 185*b1cdbd2cSJim Jagielski "Unexpected number of text frames reported.", nTextFrames, 186*b1cdbd2cSJim Jagielski xTextFramesIdx.getCount()); 187*b1cdbd2cSJim Jagielski for(int nCurrentFrameIdx = 0; nCurrentFrameIdx < xTextFramesIdx.getCount(); nCurrentFrameIdx++) 188*b1cdbd2cSJim Jagielski { 189*b1cdbd2cSJim Jagielski xTextFramesIdx.getByIndex(nCurrentFrameIdx); 190*b1cdbd2cSJim Jagielski } 191*b1cdbd2cSJim Jagielski } 192*b1cdbd2cSJim Jagielski setUpDocument()193*b1cdbd2cSJim Jagielski @Before public void setUpDocument() throws com.sun.star.uno.Exception { 194*b1cdbd2cSJim Jagielski document = util.WriterTools.loadTextDoc( 195*b1cdbd2cSJim Jagielski UnoRuntime.queryInterface( 196*b1cdbd2cSJim Jagielski XMultiServiceFactory.class, 197*b1cdbd2cSJim Jagielski connection.getComponentContext().getServiceManager()), 198*b1cdbd2cSJim Jagielski TestDocument.getUrl("CheckFlies.odt")); 199*b1cdbd2cSJim Jagielski } 200*b1cdbd2cSJim Jagielski tearDownDocument()201*b1cdbd2cSJim Jagielski @After public void tearDownDocument() { 202*b1cdbd2cSJim Jagielski util.DesktopTools.closeDoc(document); 203*b1cdbd2cSJim Jagielski } 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski private XTextDocument document = null; 206*b1cdbd2cSJim Jagielski setUpConnection()207*b1cdbd2cSJim Jagielski @BeforeClass public static void setUpConnection() throws Exception { 208*b1cdbd2cSJim Jagielski connection.setUp(); 209*b1cdbd2cSJim Jagielski } 210*b1cdbd2cSJim Jagielski tearDownConnection()211*b1cdbd2cSJim Jagielski @AfterClass public static void tearDownConnection() 212*b1cdbd2cSJim Jagielski throws InterruptedException, com.sun.star.uno.Exception 213*b1cdbd2cSJim Jagielski { 214*b1cdbd2cSJim Jagielski connection.tearDown(); 215*b1cdbd2cSJim Jagielski } 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski private static final OfficeConnection connection = new OfficeConnection(); 218*b1cdbd2cSJim Jagielski } 219