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