1*b0a35ca4SLi Feng Wang /************************************************************** 2*b0a35ca4SLi Feng Wang * 3*b0a35ca4SLi Feng Wang * Licensed to the Apache Software Foundation (ASF) under one 4*b0a35ca4SLi Feng Wang * or more contributor license agreements. See the NOTICE file 5*b0a35ca4SLi Feng Wang * distributed with this work for additional information 6*b0a35ca4SLi Feng Wang * regarding copyright ownership. The ASF licenses this file 7*b0a35ca4SLi Feng Wang * to you under the Apache License, Version 2.0 (the 8*b0a35ca4SLi Feng Wang * "License"); you may not use this file except in compliance 9*b0a35ca4SLi Feng Wang * with the License. You may obtain a copy of the License at 10*b0a35ca4SLi Feng Wang * 11*b0a35ca4SLi Feng Wang * http://www.apache.org/licenses/LICENSE-2.0 12*b0a35ca4SLi Feng Wang * 13*b0a35ca4SLi Feng Wang * Unless required by applicable law or agreed to in writing, 14*b0a35ca4SLi Feng Wang * software distributed under the License is distributed on an 15*b0a35ca4SLi Feng Wang * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b0a35ca4SLi Feng Wang * KIND, either express or implied. See the License for the 17*b0a35ca4SLi Feng Wang * specific language governing permissions and limitations 18*b0a35ca4SLi Feng Wang * under the License. 19*b0a35ca4SLi Feng Wang * 20*b0a35ca4SLi Feng Wang *************************************************************/ 21*b0a35ca4SLi Feng Wang 22*b0a35ca4SLi Feng Wang package fvt.uno.sc.object; 23*b0a35ca4SLi Feng Wang 24*b0a35ca4SLi Feng Wang import static org.junit.Assert.assertEquals; 25*b0a35ca4SLi Feng Wang 26*b0a35ca4SLi Feng Wang import java.util.Arrays; 27*b0a35ca4SLi Feng Wang import java.util.Collection; 28*b0a35ca4SLi Feng Wang 29*b0a35ca4SLi Feng Wang import org.junit.After; 30*b0a35ca4SLi Feng Wang import org.junit.AfterClass; 31*b0a35ca4SLi Feng Wang import org.junit.Before; 32*b0a35ca4SLi Feng Wang import org.junit.BeforeClass; 33*b0a35ca4SLi Feng Wang import org.junit.Test; 34*b0a35ca4SLi Feng Wang import org.junit.runner.RunWith; 35*b0a35ca4SLi Feng Wang import org.junit.runners.Parameterized; 36*b0a35ca4SLi Feng Wang import org.junit.runners.Parameterized.Parameters; 37*b0a35ca4SLi Feng Wang import org.openoffice.test.uno.UnoApp; 38*b0a35ca4SLi Feng Wang 39*b0a35ca4SLi Feng Wang import testlib.uno.SCUtil; 40*b0a35ca4SLi Feng Wang import testlib.uno.ShapeUtil; 41*b0a35ca4SLi Feng Wang 42*b0a35ca4SLi Feng Wang import com.sun.star.awt.Point; 43*b0a35ca4SLi Feng Wang import com.sun.star.awt.Size; 44*b0a35ca4SLi Feng Wang import com.sun.star.drawing.XDrawPage; 45*b0a35ca4SLi Feng Wang import com.sun.star.drawing.XDrawPageSupplier; 46*b0a35ca4SLi Feng Wang import com.sun.star.drawing.XShape; 47*b0a35ca4SLi Feng Wang import com.sun.star.drawing.XShapes; 48*b0a35ca4SLi Feng Wang import com.sun.star.lang.XComponent; 49*b0a35ca4SLi Feng Wang import com.sun.star.sheet.XSpreadsheet; 50*b0a35ca4SLi Feng Wang import com.sun.star.sheet.XSpreadsheetDocument; 51*b0a35ca4SLi Feng Wang import com.sun.star.uno.UnoRuntime; 52*b0a35ca4SLi Feng Wang 53*b0a35ca4SLi Feng Wang /** 54*b0a35ca4SLi Feng Wang * Check the shapes can be added and removed 55*b0a35ca4SLi Feng Wang * 56*b0a35ca4SLi Feng Wang */ 57*b0a35ca4SLi Feng Wang @RunWith(value = Parameterized.class) 58*b0a35ca4SLi Feng Wang public class DrawingObject { 59*b0a35ca4SLi Feng Wang 60*b0a35ca4SLi Feng Wang private String inputType; 61*b0a35ca4SLi Feng Wang private String fileType; 62*b0a35ca4SLi Feng Wang 63*b0a35ca4SLi Feng Wang private static final UnoApp unoApp = new UnoApp(); 64*b0a35ca4SLi Feng Wang 65*b0a35ca4SLi Feng Wang XComponent scComponent = null; 66*b0a35ca4SLi Feng Wang XSpreadsheetDocument scDocument = null; 67*b0a35ca4SLi Feng Wang 68*b0a35ca4SLi Feng Wang @Parameters data()69*b0a35ca4SLi Feng Wang public static Collection<Object[]> data() throws Exception { 70*b0a35ca4SLi Feng Wang 71*b0a35ca4SLi Feng Wang return Arrays.asList(new Object[][] { 72*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.RectangleShape", "ods"}, 73*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.EllipseShape", "ods"}, 74*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.LineShape", "ods"}, 75*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.GraphicObjectShape", "ods"}, 76*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.MeasureShape", "ods"}, 77*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.PageShape", "ods"}, 78*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.TextShape", "ods"}, 79*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.RectangleShape", "xls"}, 80*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.EllipseShape", "xls"}, 81*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.LineShape", "xls"}, 82*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.MeasureShape", "xls"}, 83*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.PageShape", "xls"}, 84*b0a35ca4SLi Feng Wang {"com.sun.star.drawing.TextShape", "xls"}, 85*b0a35ca4SLi Feng Wang }); 86*b0a35ca4SLi Feng Wang } 87*b0a35ca4SLi Feng Wang DrawingObject( String inputType, String fileType)88*b0a35ca4SLi Feng Wang public DrawingObject( String inputType, String fileType) { 89*b0a35ca4SLi Feng Wang // this.expected = expected; 90*b0a35ca4SLi Feng Wang this.inputType = inputType; 91*b0a35ca4SLi Feng Wang // this.numberData = numberData; 92*b0a35ca4SLi Feng Wang this.fileType = fileType; 93*b0a35ca4SLi Feng Wang } 94*b0a35ca4SLi Feng Wang 95*b0a35ca4SLi Feng Wang @Before setUp()96*b0a35ca4SLi Feng Wang public void setUp() throws Exception { 97*b0a35ca4SLi Feng Wang scComponent = unoApp.newDocument("scalc"); 98*b0a35ca4SLi Feng Wang scDocument = SCUtil.getSCDocument(scComponent); 99*b0a35ca4SLi Feng Wang } 100*b0a35ca4SLi Feng Wang 101*b0a35ca4SLi Feng Wang @After tearDown()102*b0a35ca4SLi Feng Wang public void tearDown() throws Exception { 103*b0a35ca4SLi Feng Wang unoApp.closeDocument(scComponent); 104*b0a35ca4SLi Feng Wang 105*b0a35ca4SLi Feng Wang } 106*b0a35ca4SLi Feng Wang 107*b0a35ca4SLi Feng Wang @BeforeClass setUpConnection()108*b0a35ca4SLi Feng Wang public static void setUpConnection() throws Exception { 109*b0a35ca4SLi Feng Wang unoApp.start(); 110*b0a35ca4SLi Feng Wang } 111*b0a35ca4SLi Feng Wang 112*b0a35ca4SLi Feng Wang @AfterClass tearDownConnection()113*b0a35ca4SLi Feng Wang public static void tearDownConnection() throws InterruptedException, Exception { 114*b0a35ca4SLi Feng Wang unoApp.close(); 115*b0a35ca4SLi Feng Wang SCUtil.clearTempDir(); 116*b0a35ca4SLi Feng Wang } 117*b0a35ca4SLi Feng Wang 118*b0a35ca4SLi Feng Wang /** 119*b0a35ca4SLi Feng Wang * Check Drawing Object 120*b0a35ca4SLi Feng Wang * 1. Create a spreadsheet file. 121*b0a35ca4SLi Feng Wang * 2. Add shape. 122*b0a35ca4SLi Feng Wang * 3. Save file as ODF/MSBinary format. 123*b0a35ca4SLi Feng Wang * 4. Close and reopen file. -> Check the shape added. 124*b0a35ca4SLi Feng Wang * 5. Remove shape. 125*b0a35ca4SLi Feng Wang * 6. Save file as ODF/MSBinary format. 126*b0a35ca4SLi Feng Wang * 7. Close and reopen file. -> Check the shape removed. 127*b0a35ca4SLi Feng Wang * @throws Exception 128*b0a35ca4SLi Feng Wang */ 129*b0a35ca4SLi Feng Wang 130*b0a35ca4SLi Feng Wang @Test testDrawingObject()131*b0a35ca4SLi Feng Wang public void testDrawingObject() throws Exception { 132*b0a35ca4SLi Feng Wang 133*b0a35ca4SLi Feng Wang String fileName = inputType; 134*b0a35ca4SLi Feng Wang 135*b0a35ca4SLi Feng Wang scDocument = SCUtil.getSCDocument(scComponent); 136*b0a35ca4SLi Feng Wang XSpreadsheet xSheet = SCUtil.getCurrentSheet(scDocument); 137*b0a35ca4SLi Feng Wang XDrawPageSupplier xDrawPageSupplier = 138*b0a35ca4SLi Feng Wang (XDrawPageSupplier)UnoRuntime.queryInterface(XDrawPageSupplier.class, xSheet); 139*b0a35ca4SLi Feng Wang XDrawPage xDrawPage = xDrawPageSupplier.getDrawPage(); 140*b0a35ca4SLi Feng Wang XShapes xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage); 141*b0a35ca4SLi Feng Wang 142*b0a35ca4SLi Feng Wang //Execute add shape action 143*b0a35ca4SLi Feng Wang Point po = new Point(100, 100); 144*b0a35ca4SLi Feng Wang Size Si = new Size(5000, 5000); 145*b0a35ca4SLi Feng Wang XShape xShape = ShapeUtil.createShape(scComponent, po, Si, inputType); 146*b0a35ca4SLi Feng Wang xShapes.add(xShape); 147*b0a35ca4SLi Feng Wang 148*b0a35ca4SLi Feng Wang //Verify shape is added correctly 149*b0a35ca4SLi Feng Wang 150*b0a35ca4SLi Feng Wang //Verify number of shape in sheet. 151*b0a35ca4SLi Feng Wang assertEquals("Verify number of shape in sheet add execute add action.",1, xShapes.getCount()); 152*b0a35ca4SLi Feng Wang 153*b0a35ca4SLi Feng Wang //Save it, close and reopen it 154*b0a35ca4SLi Feng Wang SCUtil.saveFileAs(scComponent, fileName, fileType); 155*b0a35ca4SLi Feng Wang scDocument = SCUtil.reloadFile(unoApp, scDocument, fileName + "." + fileType); 156*b0a35ca4SLi Feng Wang 157*b0a35ca4SLi Feng Wang xSheet = SCUtil.getCurrentSheet(scDocument); 158*b0a35ca4SLi Feng Wang xDrawPageSupplier = 159*b0a35ca4SLi Feng Wang (XDrawPageSupplier)UnoRuntime.queryInterface(XDrawPageSupplier.class, xSheet); 160*b0a35ca4SLi Feng Wang xDrawPage = xDrawPageSupplier.getDrawPage(); 161*b0a35ca4SLi Feng Wang xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage); 162*b0a35ca4SLi Feng Wang 163*b0a35ca4SLi Feng Wang //Verify number of shape in sheet. 164*b0a35ca4SLi Feng Wang assertEquals("Verify number of shape in sheet.",1, xShapes.getCount()); 165*b0a35ca4SLi Feng Wang 166*b0a35ca4SLi Feng Wang //Verify correct shape type added. 167*b0a35ca4SLi Feng Wang assertEquals("Verify shape type is correct.",inputType, xShape.getShapeType()); 168*b0a35ca4SLi Feng Wang 169*b0a35ca4SLi Feng Wang xShape = (XShape) UnoRuntime.queryInterface(XShape.class, xShapes.getByIndex(0)); 170*b0a35ca4SLi Feng Wang 171*b0a35ca4SLi Feng Wang //Execute remove drawing objects 172*b0a35ca4SLi Feng Wang xShapes.remove(xShape); 173*b0a35ca4SLi Feng Wang 174*b0a35ca4SLi Feng Wang //Verify results after remove shape 175*b0a35ca4SLi Feng Wang assertEquals("Verify results after remove shape.",0, xShapes.getCount()); 176*b0a35ca4SLi Feng Wang 177*b0a35ca4SLi Feng Wang //Save and reload document 178*b0a35ca4SLi Feng Wang 179*b0a35ca4SLi Feng Wang //Save the modified spreadsheet first 180*b0a35ca4SLi Feng Wang SCUtil.save(scDocument); 181*b0a35ca4SLi Feng Wang 182*b0a35ca4SLi Feng Wang //close it and reload it 183*b0a35ca4SLi Feng Wang scDocument = SCUtil.reloadFile(unoApp, scDocument, fileName + "." + fileType); 184*b0a35ca4SLi Feng Wang 185*b0a35ca4SLi Feng Wang //Get Draw page 186*b0a35ca4SLi Feng Wang xSheet = SCUtil.getCurrentSheet(scDocument); 187*b0a35ca4SLi Feng Wang xDrawPageSupplier = 188*b0a35ca4SLi Feng Wang (XDrawPageSupplier)UnoRuntime.queryInterface(XDrawPageSupplier.class, xSheet); 189*b0a35ca4SLi Feng Wang xDrawPage = xDrawPageSupplier.getDrawPage(); 190*b0a35ca4SLi Feng Wang xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xDrawPage); 191*b0a35ca4SLi Feng Wang 192*b0a35ca4SLi Feng Wang //Verify number of shape in sheet after executing remove action. 193*b0a35ca4SLi Feng Wang assertEquals("Verify 0 shape in sheet after executing remove action.", 194*b0a35ca4SLi Feng Wang 0, xShapes.getCount()); 195*b0a35ca4SLi Feng Wang 196*b0a35ca4SLi Feng Wang 197*b0a35ca4SLi Feng Wang 198*b0a35ca4SLi Feng Wang 199*b0a35ca4SLi Feng Wang 200*b0a35ca4SLi Feng Wang } 201*b0a35ca4SLi Feng Wang 202*b0a35ca4SLi Feng Wang } 203