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 /**
23  *
24  */
25 package bvt.gui;
26 
27 import static org.junit.Assert.*;
28 import static org.openoffice.test.common.Testspace.*;
29 import static org.openoffice.test.vcl.Tester.*;
30 import static testlib.gui.AppTool.*;
31 import static testlib.gui.UIMap.*;
32 
33 import java.awt.Rectangle;
34 
35 import org.junit.AfterClass;
36 import org.junit.Assert;
37 import org.junit.Before;
38 import org.junit.BeforeClass;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.openoffice.test.common.GraphicsUtil;
42 import org.openoffice.test.common.Logger;
43 
44 import testlib.gui.SCTool;
45 
46 /**
47  *
48  */
49 public class FileTypeTest {
50 
51 	@Rule
52 	public Logger log = Logger.getLogger(this);
53 
54 	@BeforeClass
beforeClass()55 	public static void beforeClass() {
56 		app.clean();
57 	}
58 
59 	@AfterClass
afterClass()60 	public static void afterClass() {
61 		app.stop();
62 	}
63 
64 	@Before
before()65 	public void before() {
66 		app.stop();
67 		app.start();
68 	}
69 
70 
71 	/**
72 	 * Test New/Save a text document
73 	 *
74 	 * @throws Exception
75 	 */
76 	@Test
testSaveNewODT()77 	public void testSaveNewODT() throws Exception {
78 		saveNewDocument("helloworld_saveas.odt");
79 	}
80 
81 	@Test
testSaveNewOTT()82 	public void testSaveNewOTT() throws Exception {
83 		saveNewDocument("helloworld_saveas.ott");
84 	}
85 
86 	@Test
testSaveNewSXW()87 	public void testSaveNewSXW() throws Exception {
88 		saveNewDocument("helloworld_saveas.sxw");
89 	}
90 
91 	@Test
testSaveNewSTW()92 	public void testSaveNewSTW() throws Exception {
93 		saveNewDocument("helloworld_saveas.stw");
94 	}
95 
96 	@Test
testSaveNewDOC()97 	public void testSaveNewDOC() throws Exception {
98 		saveNewDocument("helloworld_saveas.doc");
99 	}
100 
101 	@Test
testSaveNewTXT()102 	public void testSaveNewTXT() throws Exception {
103 		saveNewDocument("helloworld_saveas.txt");
104 	}
105 
saveNewDocument(String file)106 	private void saveNewDocument(String file) {
107 		String saveTo = "temp/" + file;
108 		String text = "@AOO";
109 		newTextDocument();
110 		writer.typeKeys(text);
111 		// Verify the text via system clip board
112 		Assert.assertEquals("The typed text into writer", text, copyAll());
113 
114 		// menuItem("Text Properties...").select();
115 		app.dispatch(".uno:FontDialog");
116 		effectsPage.select();
117 		effectsPageColor.select(6);
118 		effectsPage.ok();
119 		sleep(1);
120 
121 		// Save the text document
122 		deleteFile(saveTo);
123 		saveAs(saveTo);
124 		close();
125 		open(saveTo);
126 		// Reopen the saved file
127 		writer.waitForExistence(10, 2);
128 		sleep(1);
129 		// Verify if the text still exists in the file
130 		Assert.assertEquals("The typed text into writer is saved!", text, copyAll());
131 	}
132 
133 	@Test
testSaveNewODS()134 	public void testSaveNewODS() throws Exception {
135 		saveNewSpreadsheet("helloworld_saveas.ods");
136 	}
137 
138 	@Test
testSaveNewOTS()139 	public void testSaveNewOTS() throws Exception {
140 		saveNewSpreadsheet("helloworld_saveas.ots");
141 	}
142 
143 	@Test
testSaveNewSXC()144 	public void testSaveNewSXC() throws Exception {
145 		saveNewSpreadsheet("helloworld_saveas.sxc");
146 	}
147 
148 	@Test
testSaveNewSTC()149 	public void testSaveNewSTC() throws Exception {
150 		saveNewSpreadsheet("helloworld_saveas.stc");
151 	}
152 
153 	// @Test
154 	// public void testSaveNewCSV() throws Exception {
155 	// saveNewSpreadsheet("helloworld_saveas.csv");
156 	// }
157 
158 	@Test
testSaveNewXLS()159 	public void testSaveNewXLS() throws Exception {
160 		saveNewSpreadsheet("helloworld_saveas.xls");
161 	}
162 
saveNewSpreadsheet(String file)163 	private void saveNewSpreadsheet(String file) {
164 		String saveTo = "temp/" + file;
165 		String text = "@AOO";
166 		newSpreadsheet();
167 		SCTool.selectRange("A65536");
168 		calc.typeKeys(text);
169 		deleteFile(saveTo);
170 		saveAs(saveTo);
171 		close();
172 		open(saveTo);
173 		calc.waitForExistence(10, 2);
174 		sleep(1);
175 		Assert.assertEquals("The typed text is saved!", text, SCTool.getCellText("A65536"));
176 	}
177 
178 	@Test
testSaveNewODP()179 	public void testSaveNewODP() throws Exception {
180 		saveNewPresentation("helloworld_saveas.odp");
181 	}
182 
183 	@Test
testSaveNewOTP()184 	public void testSaveNewOTP() throws Exception {
185 		saveNewPresentation("helloworld_saveas.otp");
186 	}
187 
188 	@Test
testSaveNewPPT()189 	public void testSaveNewPPT() throws Exception {
190 		saveNewPresentation("helloworld_saveas.ppt");
191 	}
192 
193 	@Test
testSaveNewPOT()194 	public void testSaveNewPOT() throws Exception {
195 		saveNewPresentation("helloworld_saveas.pot");
196 	}
197 
198 	@Test
testSaveNewSXI()199 	public void testSaveNewSXI() throws Exception {
200 		saveNewPresentation("helloworld_saveas.sxi");
201 	}
202 
203 	@Test
testSaveNewSTI()204 	public void testSaveNewSTI() throws Exception {
205 		saveNewPresentation("helloworld_saveas.sti");
206 	}
207 
saveNewPresentation(String file)208 	private void saveNewPresentation(String file) {
209 		String saveTo = "temp/" + file;
210 		String text = "@AOO";
211 		newPresentation();
212 		impress.typeKeys(text);
213 		impress.doubleClick(0.1, 0.5);
214 		deleteFile(saveTo);
215 		saveAs(saveTo);
216 		close();
217 		open(saveTo);
218 		impress.waitForExistence(10, 2);
219 		sleep(1);
220 		impress.typeKeys("<tab><enter>");
221 		sleep(1);
222 		Assert.assertEquals("The typed text is saved!", text, copyAll().trim());
223 	}
224 
225 	// drawing
226 
227 	/**
228 	 * Test save a new drawing as .odg
229 	 */
230 	@Test
testSaveNewODG()231 	public void testSaveNewODG() throws Exception {
232 		saveNewDrawing("draw_saveas.odg");
233 	}
234 
235 	/**
236 	 * Test save a new drawing as .otg
237 	 */
238 	@Test
testSaveNewOTG()239 	public void testSaveNewOTG() throws Exception {
240 		saveNewDrawing("draw_saveas.otg");
241 	}
242 
243 	/**
244 	 * Test save a new drawing as .sxd
245 	 */
246 	@Test
testSaveNewSXD()247 	public void testSaveNewSXD() throws Exception {
248 		saveNewDrawing("draw_saveas.sxd");
249 	}
250 
251 	/**
252 	 * Test save a new drawing as .std
253 	 */
254 	@Test
testSaveNewSTD()255 	public void testSaveNewSTD() throws Exception {
256 		saveNewDrawing("draw_saveas.std");
257 	}
258 
259 	/**
260 	 * New/Save a draw document 1. New a draw document 2. Insert a picture 3.
261 	 * Save it as the input filename 4. Reopen the saved file 5. Check if the
262 	 * picture is still there
263 	 *
264 	 * @param filename
265 	 *            : filename to be saved
266 	 * @throws Exception
267 	 */
saveNewDrawing(String filename)268 	public void saveNewDrawing(String filename) {
269 		String saveTo = "temp/" + filename;
270 		String bmp_green = prepareData("image/green_256x256.bmp");
271 		// Create a new drawing document
272 		newDrawing();
273 		// Insert a picture fully filled with green
274 		app.dispatch(".uno:InsertGraphic");
275 		submitOpenDlg(bmp_green);
276 		// Focus on edit pane
277 		draw.click(5, 5);
278 		sleep(1);
279 		// Verify if the picture is inserted successfully
280 		Rectangle rectangle = GraphicsUtil.findRectangle(draw.getScreenRectangle(), 0xFF00FF00);
281 		assertNotNull("Green rectangle: " + rectangle, rectangle);
282 		deleteFile(saveTo);
283 		saveAs(saveTo);
284 		close();
285 		open(saveTo);
286 		draw.waitForExistence(10, 2);
287 		sleep(1);
288 		// Verify if the picture still exists in the file
289 		Rectangle rectangle1 = GraphicsUtil.findRectangle(draw.getScreenRectangle(), 0xFF00FF00);
290 		assertNotNull("Green rectangle: " + rectangle1, rectangle1);
291 	}
292 
293 	// math
294 	/**
295 	 * Test save a new math as .odf
296 	 */
297 	@Test
testSaveNewODF()298 	public void testSaveNewODF() throws Exception {
299 		saveNewMath("math_saveas.odf");
300 	}
301 
302 	/**
303 	 * Test save a new math as .sxm
304 	 */
305 	@Test
testSaveNewSXM()306 	public void testSaveNewSXM() throws Exception {
307 		saveNewMath("math_saveas.sxm");
308 	}
309 
310 	/**
311 	 * Test save a new math as .mml
312 	 */
313 	@Test
testSaveNewMML()314 	public void testSaveNewMML() throws Exception {
315 		saveNewMath("math_saveas.mml");
316 	}
317 
318 	/**
319 	 * New/Save a math 1. New a math 2. Insert a formula 3. Save it as the input
320 	 * filename 4. Reopen the saved file 5. Check if the formula is still there
321 	 *
322 	 * @param filename
323 	 *            : filename to be saved
324 	 * @throws Exception
325 	 */
saveNewMath(String filename)326 	public void saveNewMath(String filename) {
327 		String saveTo = "temp/" + filename;
328 		String text = "5 times 3 = 15";
329 		// Create a new math
330 		newFormula();
331 		// Insert a formula
332 		mathEditWindow.typeKeys(text);
333 		// Verify the text via system clip board
334 		assertEquals("The typed formula into math", text, copyAll());
335 
336 		// Save the formula
337 		deleteFile(saveTo);
338 		saveAs(saveTo);
339 		close();
340 		open(saveTo);
341 		mathEditWindow.waitForExistence(10, 2);
342 		sleep(1);
343 		mathEditWindow.focus();
344 		assertEquals("The typed formula into math is saved", text, copyAll());
345 	}
346 }
347