1b164ae3eSLei De Bin /**************************************************************
2b164ae3eSLei De Bin  *
3b164ae3eSLei De Bin  * Licensed to the Apache Software Foundation (ASF) under one
4b164ae3eSLei De Bin  * or more contributor license agreements.  See the NOTICE file
5b164ae3eSLei De Bin  * distributed with this work for additional information
6b164ae3eSLei De Bin  * regarding copyright ownership.  The ASF licenses this file
7b164ae3eSLei De Bin  * to you under the Apache License, Version 2.0 (the
8b164ae3eSLei De Bin  * "License"); you may not use this file except in compliance
9b164ae3eSLei De Bin  * with the License.  You may obtain a copy of the License at
10b164ae3eSLei De Bin  *
11b164ae3eSLei De Bin  *   http://www.apache.org/licenses/LICENSE-2.0
12b164ae3eSLei De Bin  *
13b164ae3eSLei De Bin  * Unless required by applicable law or agreed to in writing,
14b164ae3eSLei De Bin  * software distributed under the License is distributed on an
15b164ae3eSLei De Bin  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b164ae3eSLei De Bin  * KIND, either express or implied.  See the License for the
17b164ae3eSLei De Bin  * specific language governing permissions and limitations
18b164ae3eSLei De Bin  * under the License.
19b164ae3eSLei De Bin  *
20b164ae3eSLei De Bin  *************************************************************/
21b164ae3eSLei De Bin 
22faa4b864SLei De Bin /**
23faa4b864SLei De Bin  *
24faa4b864SLei De Bin  */
2580a6f5c5SLiu Zhe package bvt.gui;
2632c31156SLiu Zhe 
2722a14f28SLiu Zhe import static org.junit.Assert.*;
2822a14f28SLiu Zhe import static org.openoffice.test.common.Testspace.*;
2922a14f28SLiu Zhe import static org.openoffice.test.vcl.Tester.*;
30b4d2d410SLiu Zhe import static testlib.gui.AppTool.*;
3122a14f28SLiu Zhe import static testlib.gui.UIMap.*;
32faa4b864SLei De Bin 
33faa4b864SLei De Bin import java.awt.Rectangle;
3491745ed9SLiu Zhe import java.io.File;
35faa4b864SLei De Bin 
3691745ed9SLiu Zhe import org.junit.AfterClass;
37faa4b864SLei De Bin import org.junit.Before;
38b4d2d410SLiu Zhe import org.junit.BeforeClass;
39faa4b864SLei De Bin import org.junit.Rule;
40faa4b864SLei De Bin import org.junit.Test;
41faa4b864SLei De Bin import org.openoffice.test.common.FileUtil;
42faa4b864SLei De Bin import org.openoffice.test.common.GraphicsUtil;
4322a14f28SLiu Zhe import org.openoffice.test.common.Logger;
44faa4b864SLei De Bin 
45b4d2d410SLiu Zhe import testlib.gui.SCTool;
46faa4b864SLei De Bin 
47faa4b864SLei De Bin /**
48faa4b864SLei De Bin  *
49faa4b864SLei De Bin  */
5009c344eeSLiu Zhe public class BasicFunctionTest {
51faa4b864SLei De Bin 
52faa4b864SLei De Bin 	@Rule
5322a14f28SLiu Zhe 	public Logger log = Logger.getLogger(this);
5432c31156SLiu Zhe 
55b4d2d410SLiu Zhe 	@BeforeClass
beforeClass()569edf8282SLiu Zhe 	public static void beforeClass() {
57b4d2d410SLiu Zhe 		app.clean();
582fc12ec5SLiu Zhe 	}
592fc12ec5SLiu Zhe 
6091745ed9SLiu Zhe 	@AfterClass
afterClass()619edf8282SLiu Zhe 	public static void afterClass() {
629edf8282SLiu Zhe 		app.stop();
6391745ed9SLiu Zhe 	}
6491745ed9SLiu Zhe 
65b4d2d410SLiu Zhe 	@Before
before()66b4d2d410SLiu Zhe 	public void before() {
679edf8282SLiu Zhe 		app.stop();
68b4d2d410SLiu Zhe 		app.start();
69faa4b864SLei De Bin 	}
709edf8282SLiu Zhe 
7132c31156SLiu Zhe 
7291745ed9SLiu Zhe 	@Test
smokeTest()7391745ed9SLiu Zhe 	public void smokeTest() {
7491745ed9SLiu Zhe 		File smoketestOutput = new File(aoo.getUserInstallation(), "user/temp");
7591745ed9SLiu Zhe 		prepareData("TestExtension.oxt");
7691745ed9SLiu Zhe 		// Open sample file smoketestdoc.sxw
7791745ed9SLiu Zhe 		open(prepareData("smoketestdoc.sxw"));
7891745ed9SLiu Zhe 		writer.waitForEnabled(10, 2);
7991745ed9SLiu Zhe 		// Run test cases
8091745ed9SLiu Zhe 		app.dispatch("vnd.sun.star.script:Standard.Global.StartTestWithDefaultOptions?language=Basic&location=document", 120);
8191745ed9SLiu Zhe 		String smoketestlog = FileUtil.readFileAsString(new File(smoketestOutput, "smoketest.log"));
8291745ed9SLiu Zhe 		String testclosurelog = FileUtil.readFileAsString(new File(smoketestOutput, "testclosure.log"));
8391745ed9SLiu Zhe 		log.info(smoketestlog + "\n" + testclosurelog);
8491745ed9SLiu Zhe 		assertTrue("No Error", !smoketestlog.contains("error") && !testclosurelog.contains("error"));
8591745ed9SLiu Zhe 
8691745ed9SLiu Zhe 	}
8791745ed9SLiu Zhe 
88faa4b864SLei De Bin 	@Test
testExportAsPDF()8932c31156SLiu Zhe 	public void testExportAsPDF() throws Exception {
90b4d2d410SLiu Zhe 		String file = prepareData("bvt/pdf.odt");
91b4d2d410SLiu Zhe 		String exportTo1 = getPath("temp/1.pdf");
92b4d2d410SLiu Zhe 		String exportTo2 = getPath("temp/2.pdf");
93b4d2d410SLiu Zhe 		deleteFile(exportTo1);
94b4d2d410SLiu Zhe 		deleteFile(exportTo2);
95b4d2d410SLiu Zhe 		open(file);
96b4d2d410SLiu Zhe 		writer.waitForExistence(10, 1);
97cb6199d5SLiu Zhe 		app.dispatch(".uno:ExportToPDF");
98b4d2d410SLiu Zhe 		pdfGeneralPage.ok();
99b4d2d410SLiu Zhe 		submitSaveDlg(exportTo1);
100b4d2d410SLiu Zhe 		sleep(1);
101b4d2d410SLiu Zhe 		String magic = FileUtil.readFileAsString(exportTo1).substring(0, 4);
102b4d2d410SLiu Zhe 		assertEquals("PDF is exported?", "%PDF", magic);
103b4d2d410SLiu Zhe 
104b4d2d410SLiu Zhe 		button(".uno:ExportDirectToPDF").click();//Click via toolbar
105b4d2d410SLiu Zhe 		submitSaveDlg(exportTo2);
106b4d2d410SLiu Zhe 		sleep(1);
107b4d2d410SLiu Zhe 		magic = FileUtil.readFileAsString(exportTo2).substring(0, 4);
108b4d2d410SLiu Zhe 		assertEquals("PDF is exported directly?", "%PDF", magic);
109faa4b864SLei De Bin 	}
11032c31156SLiu Zhe 
111faa4b864SLei De Bin 	/**
11232c31156SLiu Zhe 	 * Test the File -- Print Dialog show
113faa4b864SLei De Bin 	 *
11432c31156SLiu Zhe 	 */
115faa4b864SLei De Bin 	@Test
testPrinter()116b4d2d410SLiu Zhe 	public void testPrinter() {
11732c31156SLiu Zhe 		// Create a new text document
118b4d2d410SLiu Zhe 		newTextDocument();
119b4d2d410SLiu Zhe 		app.dispatch(".uno:PrinterSetup");
120b4d2d410SLiu Zhe 		if (activeMsgBox.exists(2))
121b4d2d410SLiu Zhe 			activeMsgBox.ok();
122b4d2d410SLiu Zhe 
123b4d2d410SLiu Zhe //		PrintService[] ps = PrintServiceLookup.lookupPrintServices(null, null);
124b4d2d410SLiu Zhe //		String[] names = new String[ps.length];
125b4d2d410SLiu Zhe //		for (int i = 0; i < ps.length; i++) {
126b4d2d410SLiu Zhe //			names[i] = ps[i].getName();
127b4d2d410SLiu Zhe //		}
128b4d2d410SLiu Zhe //
129b4d2d410SLiu Zhe //		assertArrayEquals("Printers Names", names, printerSetUpDlgPrinterNames.getItemsText());
130b4d2d410SLiu Zhe 		assertTrue("Printer Setup dialog appears", printerSetUpDlg.exists(3));
131b4d2d410SLiu Zhe 		printerSetUpDlg.cancel();
13232c31156SLiu Zhe 	}
13332c31156SLiu Zhe 
134faa4b864SLei De Bin 	/**
13532c31156SLiu Zhe 	 * Test the File -- Java Dialog show
136faa4b864SLei De Bin 	 *
13732c31156SLiu Zhe 	 */
138b4d2d410SLiu Zhe //	@Test
139b4d2d410SLiu Zhe //	public void testJavaDialog() {
140b4d2d410SLiu Zhe //
141b4d2d410SLiu Zhe //		// Create a new text document and launch a Wizards dialog which need JVM
142b4d2d410SLiu Zhe //		// work correctly.
143b4d2d410SLiu Zhe //		app.dispatch("private:factory/swriter");
144b4d2d410SLiu Zhe //		File tempfile = new File(oo.getUserInstallation(), "user/template/myAgendaTemplate.ott");
145b4d2d410SLiu Zhe //		FileUtil.deleteFile(tempfile);
146b4d2d410SLiu Zhe //		sleep(3);
147b4d2d410SLiu Zhe //		app.dispatch("service:com.sun.star.wizards.agenda.CallWizard?start");
148b4d2d410SLiu Zhe //		sleep(5);
149b4d2d410SLiu Zhe //		assertTrue(Wizards_AgendaDialog.exists(10));
150b4d2d410SLiu Zhe //		Wizards_AgendaDialog_FinishButton.click();
151b4d2d410SLiu Zhe //		sleep(10);
152b4d2d410SLiu Zhe //		writer.focus();
153b4d2d410SLiu Zhe //		sleep(1);
154b4d2d410SLiu Zhe //		app.dispatch(".uno:SelectAll");
155b4d2d410SLiu Zhe //		typeKeys("<$copy>");
156b4d2d410SLiu Zhe //		// System.out.println("now txt:"+app.getClipboard());
157b4d2d410SLiu Zhe //		// assertTrue(app.getClipboard().startsWith("<Name>"));
158b4d2d410SLiu Zhe //		assertNotNull(app.getClipboard());
159b4d2d410SLiu Zhe //	}
16032c31156SLiu Zhe 
161faa4b864SLei De Bin 	/**
16232c31156SLiu Zhe 	 * Test the Tools / Macros / Organize Dialogs" show
163faa4b864SLei De Bin 	 *
16432c31156SLiu Zhe 	 */
165faa4b864SLei De Bin 	@Test
testRunMacro()166b4d2d410SLiu Zhe 	public void testRunMacro() {
167b4d2d410SLiu Zhe 		open(prepareData("bvt/macro.ods"));
168b4d2d410SLiu Zhe 		calc.waitForExistence(10, 2);
169b4d2d410SLiu Zhe 		app.dispatch(".uno:RunMacro");
170b4d2d410SLiu Zhe 		runMacroDlgCategories.expand("macro.ods");
171b4d2d410SLiu Zhe 		runMacroDlgCategories.expand("Standard");
172b4d2d410SLiu Zhe 		runMacroDlgCategories.select("Module1");
173b4d2d410SLiu Zhe 		runMacroDlgCommands.select(0);
174b4d2d410SLiu Zhe 		runMacroDlg.ok();
175b4d2d410SLiu Zhe 		assertEquals("A3 should be =1+3", "4", SCTool.getCellText("A3"));
176b4d2d410SLiu Zhe 		discard();
177faa4b864SLei De Bin 	}
17832c31156SLiu Zhe 
179faa4b864SLei De Bin 	/**
18032c31156SLiu Zhe 	 * Test the About Dialog show
181faa4b864SLei De Bin 	 *
18232c31156SLiu Zhe 	 */
183faa4b864SLei De Bin 	@Test
testHelp()184b4d2d410SLiu Zhe 	public void testHelp() {
185cb6199d5SLiu Zhe 		app.dispatch(".uno:About");
186b4d2d410SLiu Zhe 		assertTrue(aboutDialog.exists(5));
187b4d2d410SLiu Zhe 		aboutDialog.ok();
188b4d2d410SLiu Zhe 		sleep(1);
189b4d2d410SLiu Zhe 		typeKeys("<F1>");
190b4d2d410SLiu Zhe 		assertTrue(helpWindow.exists(5));
191b4d2d410SLiu Zhe 		helpWindow.close();
192faa4b864SLei De Bin 	}
19332c31156SLiu Zhe 
194faa4b864SLei De Bin 	/**
195faa4b864SLei De Bin 	 * Test inserting a picture in text document
19632c31156SLiu Zhe 	 *
197faa4b864SLei De Bin 	 * @throws Exception
198faa4b864SLei De Bin 	 */
19932c31156SLiu Zhe 
200faa4b864SLei De Bin 	@Test
testInsertPictureInDocument()201faa4b864SLei De Bin 	public void testInsertPictureInDocument() throws Exception {
2026b55ece7SLiu Zhe 		String bmp_green = prepareData("image/green_256x256.bmp");
2036b55ece7SLiu Zhe 		String bmp_red = prepareData("image/red_256x256.bmp");
20432c31156SLiu Zhe 
20532c31156SLiu Zhe 		// Create a new text document
206b4d2d410SLiu Zhe 		newTextDocument();
20732c31156SLiu Zhe 		// Insert a picture fully filled with green
20832c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
209faa4b864SLei De Bin 		submitOpenDlg(bmp_green);
210b4d2d410SLiu Zhe 		writer.click(5,200);
211faa4b864SLei De Bin 		sleep(1);
21232c31156SLiu Zhe 
213faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
21422a14f28SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFF00FF00);
215b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
21632c31156SLiu Zhe 		// insert another picture
21732c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
218faa4b864SLei De Bin 		submitOpenDlg(bmp_red);
219b4d2d410SLiu Zhe 		writer.click(5, 200);
220faa4b864SLei De Bin 		sleep(1);
221faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
22222a14f28SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFFFF0000);
223b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
224b4d2d410SLiu Zhe 		discard();
225faa4b864SLei De Bin 	}
226faa4b864SLei De Bin 
227faa4b864SLei De Bin 	@Test
testInsertPictureInSpreadsheet()228faa4b864SLei De Bin 	public void testInsertPictureInSpreadsheet() throws Exception {
229b4d2d410SLiu Zhe 		String bmp_green = prepareData("image/green_64x64.png");
230b4d2d410SLiu Zhe 		String bmp_red = prepareData("image/red_64x64.png");
231b4d2d410SLiu Zhe 		newSpreadsheet();
23232c31156SLiu Zhe 		// Insert a picture fully filled with green
23332c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
234faa4b864SLei De Bin 		submitOpenDlg(bmp_green);
235b4d2d410SLiu Zhe 		calc.click(5, 150);
236faa4b864SLei De Bin 		sleep(1);
23732c31156SLiu Zhe 
238faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
23922a14f28SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFF00FF00);
240b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
241b4d2d410SLiu Zhe 
242b4d2d410SLiu Zhe 		SCTool.selectRange("C1");
24332c31156SLiu Zhe 		// insert another picture
24432c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
245faa4b864SLei De Bin 		submitOpenDlg(bmp_red);
246b4d2d410SLiu Zhe 		calc.click(5, 150);
247faa4b864SLei De Bin 		sleep(1);
248faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
24922a14f28SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFFFF0000);
250b4d2d410SLiu Zhe 		assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
251b4d2d410SLiu Zhe 		discard();
252faa4b864SLei De Bin 	}
25332c31156SLiu Zhe 
254faa4b864SLei De Bin 	@Test
testInsertPictureInPresentation()255faa4b864SLei De Bin 	public void testInsertPictureInPresentation() throws Exception {
2566b55ece7SLiu Zhe 		String bmp_green = prepareData("image/green_256x256.bmp");
2576b55ece7SLiu Zhe 		String bmp_red = prepareData("image/red_256x256.bmp");
258b4d2d410SLiu Zhe 		newPresentation();
25932c31156SLiu Zhe 		// Insert a picture fully filled with green
26032c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
261faa4b864SLei De Bin 		submitOpenDlg(bmp_green);
26232c31156SLiu Zhe 		impress.click(5, 5);
263faa4b864SLei De Bin 		sleep(1);
26432c31156SLiu Zhe 
265faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
26622a14f28SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFF00FF00);
267b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
26832c31156SLiu Zhe 		// insert another picture
26932c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
270faa4b864SLei De Bin 		submitOpenDlg(bmp_red);
271faa4b864SLei De Bin 		impress.click(1, 1);
272faa4b864SLei De Bin 		sleep(1);
273faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
27422a14f28SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFFFF0000);
275b4d2d410SLiu Zhe 		assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
276b4d2d410SLiu Zhe 		discard();
277faa4b864SLei De Bin 	}
27832c31156SLiu Zhe 
279faa4b864SLei De Bin 	@Test
testSlideShow()280faa4b864SLei De Bin 	public void testSlideShow() throws Exception {
281b4d2d410SLiu Zhe 		open(prepareData("bvt/slideshow.odp"));
282faa4b864SLei De Bin 		impress.waitForExistence(10, 2);
283b4d2d410SLiu Zhe 		sleep(1);
284b4d2d410SLiu Zhe 		impress.typeKeys("<F5>");
285faa4b864SLei De Bin 		sleep(3);
286b4d2d410SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFFFF0000);
287faa4b864SLei De Bin 		assertNotNull("1st slide appears", rectangle);
288b4d2d410SLiu Zhe 		slideShow.click(0.5, 0.5);
289faa4b864SLei De Bin 		sleep(2);
290b4d2d410SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF00FF00);
291faa4b864SLei De Bin 		assertNotNull("2nd slide appears", rectangle);
292faa4b864SLei De Bin 		typeKeys("<enter>");
293faa4b864SLei De Bin 		sleep(2);
294b4d2d410SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
295faa4b864SLei De Bin 		assertNotNull("3rd slide appears", rectangle);
296b4d2d410SLiu Zhe 		slideShow.click(0.5, 0.5);
297faa4b864SLei De Bin 		sleep(2);
298b4d2d410SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
299faa4b864SLei De Bin 		assertNull("The end", rectangle);
300b4d2d410SLiu Zhe 		slideShow.click(0.5, 0.5);
301faa4b864SLei De Bin 		sleep(3);
302b4d2d410SLiu Zhe 		assertFalse("Quit", slideShow.exists());
303faa4b864SLei De Bin 	}
30432c31156SLiu Zhe 
305faa4b864SLei De Bin 	@Test
testFind()306faa4b864SLei De Bin 	public void testFind() {
307b4d2d410SLiu Zhe 		open(prepareData("bvt/find.odt"));
308faa4b864SLei De Bin 		writer.waitForExistence(10, 2);
30932c31156SLiu Zhe 		app.dispatch(".uno:SearchDialog");
310b4d2d410SLiu Zhe 		findDlgFor.setText("OpenOffice");
311b4d2d410SLiu Zhe 		findDlgFind.click();
312faa4b864SLei De Bin 		sleep(1);
313b4d2d410SLiu Zhe 		writer.typeKeys("<$copy>");
314faa4b864SLei De Bin 		assertEquals("OpenOffice", app.getClipboard());
315b4d2d410SLiu Zhe 		findDlgFindAll.click();
316faa4b864SLei De Bin 		sleep(1);
317b4d2d410SLiu Zhe 		writer.typeKeys("<$copy>");
318faa4b864SLei De Bin 		assertEquals("OpenOfficeOpenOfficeOpenOffice", app.getClipboard());
319b4d2d410SLiu Zhe 		findDlgReplaceWith.setText("Awesome OpenOffice");
320b4d2d410SLiu Zhe 		findDlgReplaceAll.click();
321faa4b864SLei De Bin 		sleep(1);
322faa4b864SLei De Bin 		msgbox("Search key replaced 3 times.").ok();
323b4d2d410SLiu Zhe 		findDlg.close();
324faa4b864SLei De Bin 		sleep(1);
32532c31156SLiu Zhe 		assertEquals(
32632c31156SLiu Zhe 				"Apache Awesome OpenOffice is comprised of six personal productivity applications: a word processor (and its web-authoring component), spreadsheet, presentation graphics, drawing, equation editor, and database. Awesome OpenOffice is released on Windows, Solaris, Linux and Macintosh operation systems, with more communities joining, including a mature FreeBSD port. Awesome OpenOffice is localized, supporting over 110 languages worldwide. ",
327b4d2d410SLiu Zhe 				copyAll());
32844cf0280SCarl Marcum 		discard();
329faa4b864SLei De Bin 	}
330*133efdc1SDamjan Jovanovic 
331*133efdc1SDamjan Jovanovic 	@Test
testFindFormulasAndValues()332*133efdc1SDamjan Jovanovic 	public void testFindFormulasAndValues() {
333*133efdc1SDamjan Jovanovic 	    open(prepareData("bvt/searchFormulasValues.ods"));
334*133efdc1SDamjan Jovanovic 	    calc.waitForExistence(10, 2);
335*133efdc1SDamjan Jovanovic 
336*133efdc1SDamjan Jovanovic 	    // Searching for 2003 by formula finds A2
337*133efdc1SDamjan Jovanovic 	    SCTool.selectRange("A1");
338*133efdc1SDamjan Jovanovic 	    app.dispatch(".uno:SearchDialog");
339*133efdc1SDamjan Jovanovic         findDlgFor.setText("2003");
340*133efdc1SDamjan Jovanovic         findDlgMore.click();
341*133efdc1SDamjan Jovanovic         findDlgCalcSearchIn.select("Formulas");
342*133efdc1SDamjan Jovanovic         findDlgFind.click();
343*133efdc1SDamjan Jovanovic         sleep(1);
344*133efdc1SDamjan Jovanovic 	    assertEquals("wrong cell found for formulas search", "A2", scInputBarPosition.getText());
345*133efdc1SDamjan Jovanovic 	    findDlg.close();
346*133efdc1SDamjan Jovanovic 
347*133efdc1SDamjan Jovanovic 	    // Searching for October by value finds A2
348*133efdc1SDamjan Jovanovic 	    SCTool.selectRange("A1");
349*133efdc1SDamjan Jovanovic 	    app.dispatch(".uno:SearchDialog");
350*133efdc1SDamjan Jovanovic 	    findDlgFor.setText("October");
351*133efdc1SDamjan Jovanovic 	    findDlgMore.click();
352*133efdc1SDamjan Jovanovic 	    findDlgCalcSearchIn.select("Values");
353*133efdc1SDamjan Jovanovic 	    findDlgFind.click();
354*133efdc1SDamjan Jovanovic 	    sleep(1);
355*133efdc1SDamjan Jovanovic 	    assertEquals("wrong cell found for values search", "A2", scInputBarPosition.getText());
356*133efdc1SDamjan Jovanovic 	    findDlg.close();
357*133efdc1SDamjan Jovanovic 
358*133efdc1SDamjan Jovanovic 	    discard();
359*133efdc1SDamjan Jovanovic 	}
36032c31156SLiu Zhe 
361faa4b864SLei De Bin 	@Test
testFillInSpreadsheet()362faa4b864SLei De Bin 	public void testFillInSpreadsheet() {
36322a14f28SLiu Zhe 		String[][] expected1 = new String[][] { { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, };
36422a14f28SLiu Zhe 		String[][] expected2 = new String[][] { { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, };
36522a14f28SLiu Zhe 		String[][] expected3 = new String[][] { { "Hi friends", "Hi friends", "Hi friends", "Hi friends" } };
36622a14f28SLiu Zhe 		String[][] expected4 = new String[][] { { "99999.999", "99999.999", "99999.999", "99999.999" } };
367faa4b864SLei De Bin 		String[][] expected5 = new String[][] {
36822a14f28SLiu Zhe 		{ "99999.999", "-10" }, { "100000.999", "-9" }, { "100001.999", "-8" }, { "100002.999", "-7" }, { "100003.999", "-6" }
369faa4b864SLei De Bin 		};
370b4d2d410SLiu Zhe 		newSpreadsheet();
371b4d2d410SLiu Zhe 		SCTool.selectRange("C5");
372faa4b864SLei De Bin 		typeKeys("1<enter>");
373b4d2d410SLiu Zhe 		SCTool.selectRange("C5:C10");
37432c31156SLiu Zhe 		app.dispatch(".uno:FillDown");
375b4d2d410SLiu Zhe 		assertArrayEquals("Fill Down:", expected1, SCTool.getCellTexts("C5:C10"));
37632c31156SLiu Zhe 
377b4d2d410SLiu Zhe 		SCTool.selectRange("D10");
378faa4b864SLei De Bin 		typeKeys("2<enter>");
379b4d2d410SLiu Zhe 		SCTool.selectRange("D5:D10");
38032c31156SLiu Zhe 		app.dispatch(".uno:FillUp");
381b4d2d410SLiu Zhe 		assertArrayEquals("Fill Up:", expected2, SCTool.getCellTexts("D5:D10"));
38232c31156SLiu Zhe 
383b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
384faa4b864SLei De Bin 		typeKeys("Hi friends<enter>");
385b4d2d410SLiu Zhe 		SCTool.selectRange("A1:D1");
38632c31156SLiu Zhe 		app.dispatch(".uno:FillRight");
387b4d2d410SLiu Zhe 		assertArrayEquals("Fill Right:", expected3, SCTool.getCellTexts("A1:D1"));
38832c31156SLiu Zhe 
389b4d2d410SLiu Zhe 		SCTool.selectRange("D2");
390faa4b864SLei De Bin 		typeKeys("99999.999<enter>");
391b4d2d410SLiu Zhe 		SCTool.selectRange("A2:D2");
39232c31156SLiu Zhe 		app.dispatch(".uno:FillLeft");
393b4d2d410SLiu Zhe 		assertArrayEquals("Fill left:", expected4, SCTool.getCellTexts("A2:D2"));
394faa4b864SLei De Bin 
395b4d2d410SLiu Zhe 		SCTool.selectRange("E1");
396faa4b864SLei De Bin 		typeKeys("99999.999<tab>-10<enter>");
39732c31156SLiu Zhe 
398b4d2d410SLiu Zhe 		SCTool.selectRange("E1:F5");
39932c31156SLiu Zhe 		app.dispatch(".uno:FillSeries");
400b4d2d410SLiu Zhe 		fillSeriesDlg.ok();
401faa4b864SLei De Bin 		sleep(1);
402b4d2d410SLiu Zhe 		assertArrayEquals("Fill series..", expected5, SCTool.getCellTexts("E1:F5"));
403b4d2d410SLiu Zhe 		discard();
404faa4b864SLei De Bin 	}
40532c31156SLiu Zhe 
406faa4b864SLei De Bin 	@Test
testSort()407faa4b864SLei De Bin 	public void testSort() {
40822a14f28SLiu Zhe 		String[][] expected1 = new String[][] { { "-9999999" }, { "-1.1" }, { "-1.1" }, { "0" }, { "0" }, { "0.1" }, { "10" }, { "12" }, { "9999999" }, { "9999999" },
409faa4b864SLei De Bin 
410faa4b864SLei De Bin 		};
41122a14f28SLiu Zhe 		String[][] expected2 = new String[][] { { "TRUE", "Oracle" }, { "TRUE", "OpenOffice" }, { "FALSE", "OpenOffice" }, { "TRUE", "IBM" }, { "FALSE", "IBM" },
41222a14f28SLiu Zhe 				{ "TRUE", "Google" }, { "FALSE", "facebook " }, { "TRUE", "Apache" }, { "TRUE", "!yahoo" }, { "TRUE", "" },
413faa4b864SLei De Bin 
414faa4b864SLei De Bin 		};
415faa4b864SLei De Bin 
41622a14f28SLiu Zhe 		String[][] expected3 = new String[][] { { "Sunday" }, { "Monday" }, { "Tuesday" }, { "Wednesday" }, { "Thursday" }, { "Friday" }, { "Saturday" },
417faa4b864SLei De Bin 
418faa4b864SLei De Bin 		};
41932c31156SLiu Zhe 
42022a14f28SLiu Zhe 		String[][] expected4 = new String[][] { { "-$10.00" }, { "$0.00" }, { "$0.00" }, { "$1.00" }, { "$3.00" }, { "$9.00" }, { "$123.00" }, { "$200.00" }, { "$400.00" },
42122a14f28SLiu Zhe 				{ "$10,000.00" },
422faa4b864SLei De Bin 
423faa4b864SLei De Bin 		};
424b4d2d410SLiu Zhe 		open(prepareData("bvt/sort.ods"));
425faa4b864SLei De Bin 		calc.waitForExistence(10, 2);
426b4d2d410SLiu Zhe 		SCTool.selectRange("A1:A10");
427cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
428b4d2d410SLiu Zhe 		sortWarningDlgCurrent.click();
429b4d2d410SLiu Zhe 		assertEquals(1, sortPageBy1.getSelIndex());
430b4d2d410SLiu Zhe 		sortPage.ok();
431faa4b864SLei De Bin 		sleep(1);
432b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected1, SCTool.getCellTexts("A1:A10"));
433b4d2d410SLiu Zhe 		SCTool.selectRange("B1:C10");
434cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
4357dd7871fSLei De Bin 
436b4d2d410SLiu Zhe 		sortPageBy1.select(2);
437b4d2d410SLiu Zhe 		sortPageDescending1.check();
438b4d2d410SLiu Zhe 		assertFalse(sortPageBy3.isEnabled());
439b4d2d410SLiu Zhe 		assertFalse(sortPageAscending3.isEnabled());
440b4d2d410SLiu Zhe 		assertFalse(sortPageDescending3.isEnabled());
441b4d2d410SLiu Zhe 		sortPageBy2.select(1);
442b4d2d410SLiu Zhe 		assertTrue(sortPageBy3.isEnabled());
443b4d2d410SLiu Zhe 		assertTrue(sortPageAscending3.isEnabled());
444b4d2d410SLiu Zhe 		assertTrue(sortPageDescending3.isEnabled());
445b4d2d410SLiu Zhe 		sortPageDescending2.check();
446b4d2d410SLiu Zhe 		sortPageBy2.select(0);
447b4d2d410SLiu Zhe 		assertFalse(sortPageBy3.isEnabled());
448b4d2d410SLiu Zhe 		assertFalse(sortPageAscending3.isEnabled());
449b4d2d410SLiu Zhe 		assertFalse(sortPageDescending3.isEnabled());
450b4d2d410SLiu Zhe 		sortPageBy2.select(1);
451b4d2d410SLiu Zhe 		sortPage.ok();
452faa4b864SLei De Bin 		sleep(1);
45332c31156SLiu Zhe 
454b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected2, SCTool.getCellTexts("B1:C10"));
455b4d2d410SLiu Zhe 		SCTool.selectRange("D1:D7");
456cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
457b4d2d410SLiu Zhe 		sortWarningDlgCurrent.click();
458b4d2d410SLiu Zhe 		sortOptionsPage.select();
459b4d2d410SLiu Zhe 		sortOptionsPageRangeContainsColumnLabels.uncheck();
460b4d2d410SLiu Zhe 		sortOptionsPageCustomSortOrder.check();
461b4d2d410SLiu Zhe 		sortOptionsPageCustomSortOrderList.select("Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday");
462b4d2d410SLiu Zhe 		sortOptionsPage.ok();
463faa4b864SLei De Bin 		sleep(1);
464b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected3, SCTool.getCellTexts("D1:D7"));
46532c31156SLiu Zhe 
466b4d2d410SLiu Zhe 		SCTool.selectRange("E1:E10");
467cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
468b4d2d410SLiu Zhe 		sortWarningDlgCurrent.click();
469b4d2d410SLiu Zhe 		sortPage.ok();
470faa4b864SLei De Bin 		sleep(1);
471b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected4, SCTool.getCellTexts("E1:E10"));
472b4d2d410SLiu Zhe 		discard();
473faa4b864SLei De Bin 	}
47432c31156SLiu Zhe 
4757dd2b5bbSLiu Zhe 	/**
47632c31156SLiu Zhe 	 * Test insert a chart in a draw document 1. New a draw document 2. Insert a
47732c31156SLiu Zhe 	 * chart 3. Check if the chart is inserted successfully
47832c31156SLiu Zhe 	 *
4797dd2b5bbSLiu Zhe 	 * @throws Exception
4807dd2b5bbSLiu Zhe 	 */
4817dd2b5bbSLiu Zhe 	@Test
testInsertChartInDraw()48232c31156SLiu Zhe 	public void testInsertChartInDraw() throws Exception {
4837dd2b5bbSLiu Zhe 		// Create a new drawing document
484b4d2d410SLiu Zhe 		newDrawing();
4857dd2b5bbSLiu Zhe 		// Insert a chart
48632c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
4877dd2b5bbSLiu Zhe 		sleep(3);
48832c31156SLiu Zhe 
4897dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
490b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
4917dd2b5bbSLiu Zhe 		// Focus on edit pane
49232c31156SLiu Zhe 		draw.click(5, 5);
4937dd2b5bbSLiu Zhe 		sleep(1);
494b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
495b4d2d410SLiu Zhe 		discard();
4967dd2b5bbSLiu Zhe 	}
49732c31156SLiu Zhe 
4987dd2b5bbSLiu Zhe 	/**
49932c31156SLiu Zhe 	 * Test insert a chart in a text document 1. New a text document 2. Insert a
50032c31156SLiu Zhe 	 * chart 3. Check if the chart is inserted successfully
50132c31156SLiu Zhe 	 *
5027dd2b5bbSLiu Zhe 	 * @throws Exception
5037dd2b5bbSLiu Zhe 	 */
5047dd2b5bbSLiu Zhe 	@Test
testInsertChartInDocument()50532c31156SLiu Zhe 	public void testInsertChartInDocument() throws Exception {
5067dd2b5bbSLiu Zhe 		// Create a new text document
507b4d2d410SLiu Zhe 		newTextDocument();
5087dd2b5bbSLiu Zhe 		// Insert a chart
50932c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
5107dd2b5bbSLiu Zhe 		sleep(3);
51132c31156SLiu Zhe 
5127dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
513b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
5147dd2b5bbSLiu Zhe 		// Focus on edit pane
51532c31156SLiu Zhe 		writer.click(5, 5);
5167dd2b5bbSLiu Zhe 		sleep(1);
517b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
518b4d2d410SLiu Zhe 		discard();
5197dd2b5bbSLiu Zhe 	}
52032c31156SLiu Zhe 
5217dd2b5bbSLiu Zhe 	/**
52232c31156SLiu Zhe 	 * Test insert a chart in a spreadsheet document 1. New a spreadsheet
52332c31156SLiu Zhe 	 * document 2. Insert a chart 3. Check if the chart is inserted successfully
52432c31156SLiu Zhe 	 *
5257dd2b5bbSLiu Zhe 	 * @throws Exception
5267dd2b5bbSLiu Zhe 	 */
5277dd2b5bbSLiu Zhe 	@Test
testInsertChartInSpreadsheet()52832c31156SLiu Zhe 	public void testInsertChartInSpreadsheet() throws Exception {
5297dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
530b4d2d410SLiu Zhe 		newSpreadsheet();
5317dd2b5bbSLiu Zhe 		// Insert a chart
53232c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
5337dd2b5bbSLiu Zhe 		sleep(3);
534b4d2d410SLiu Zhe 		chartWizard.ok();
53532c31156SLiu Zhe 
5367dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
537b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
5387dd2b5bbSLiu Zhe 		// Focus on edit pane
53932c31156SLiu Zhe 		calc.click(5, 5);
54032c31156SLiu Zhe 		sleep(1);
541b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
542b4d2d410SLiu Zhe 		discard();
5437dd2b5bbSLiu Zhe 	}
54432c31156SLiu Zhe 
5457dd2b5bbSLiu Zhe 	/**
54632c31156SLiu Zhe 	 * Test insert a chart in a presentation document 1. New a presentation
54732c31156SLiu Zhe 	 * document 2. Insert a chart 3. Check if the chart is inserted successfully
54832c31156SLiu Zhe 	 *
5497dd2b5bbSLiu Zhe 	 * @throws Exception
5507dd2b5bbSLiu Zhe 	 */
5512aaec72aSLiu Zhe 	@Test
testInsertChartInPresentation()55232c31156SLiu Zhe 	public void testInsertChartInPresentation() throws Exception {
5537dd2b5bbSLiu Zhe 		// Create a new presentation document
554b4d2d410SLiu Zhe 		newPresentation();
5557dd2b5bbSLiu Zhe 		// Insert a chart
55632c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
5577dd2b5bbSLiu Zhe 		sleep(3);
5587dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
559b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
5607dd2b5bbSLiu Zhe 		// Focus on edit pane
56132c31156SLiu Zhe 		impress.click(5, 5);
56232c31156SLiu Zhe 		sleep(1);
563b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
564b4d2d410SLiu Zhe 		discard();
5657dd2b5bbSLiu Zhe 	}
56632c31156SLiu Zhe 
5677dd2b5bbSLiu Zhe 	/**
56832c31156SLiu Zhe 	 * Test insert a table in a draw document 1. New a draw document 2. Insert a
56932c31156SLiu Zhe 	 * default table 3. Check if the table is inserted successfully
57032c31156SLiu Zhe 	 *
5717dd2b5bbSLiu Zhe 	 * @throws Exception
5727dd2b5bbSLiu Zhe 	 */
5737dd2b5bbSLiu Zhe 	@Test
testInsertTableInDraw()57432c31156SLiu Zhe 	public void testInsertTableInDraw() throws Exception {
5757dd2b5bbSLiu Zhe 		// Create a new drawing document
576b4d2d410SLiu Zhe 		newDrawing();
5777dd2b5bbSLiu Zhe 		// Insert a table
57832c31156SLiu Zhe 		app.dispatch(".uno:InsertTable");
579b4d2d410SLiu Zhe 		insertTable.ok();
5807dd2b5bbSLiu Zhe 		sleep(1);
581b4d2d410SLiu Zhe 		draw.typeKeys("3");
582b4d2d410SLiu Zhe 		assertTrue("Table Toolbar appears", tableToolbar.exists(3));
583b4d2d410SLiu Zhe //		assertEquals("The cell content", "3", copyAll());
584b4d2d410SLiu Zhe 		discard();
5857dd2b5bbSLiu Zhe 	}
58632c31156SLiu Zhe 
5877dd2b5bbSLiu Zhe 	/**
58832c31156SLiu Zhe 	 * Test insert a table in a text document 1. New a text document 2. Insert a
58932c31156SLiu Zhe 	 * default table 3. Check if the table is inserted successfully
59032c31156SLiu Zhe 	 *
5917dd2b5bbSLiu Zhe 	 * @throws Exception
5927dd2b5bbSLiu Zhe 	 */
5937dd2b5bbSLiu Zhe 	@Test
testInsertTableInDocument()59432c31156SLiu Zhe 	public void testInsertTableInDocument() throws Exception {
5957dd2b5bbSLiu Zhe 		// Create a new text document
596b4d2d410SLiu Zhe 		newTextDocument();
5977dd2b5bbSLiu Zhe 		// Insert a table
59832c31156SLiu Zhe 		app.dispatch(".uno:InsertTable");
599b4d2d410SLiu Zhe 		writerInsertTable.ok();
6007dd2b5bbSLiu Zhe 		sleep(1);
601b4d2d410SLiu Zhe 		writer.typeKeys("3");
602b4d2d410SLiu Zhe 		// Verify if the table toolbar is active
603b4d2d410SLiu Zhe 		assertTrue("Table Toolbar appears", tableToolbar.exists(3));
604b4d2d410SLiu Zhe //		assertEquals("The cell content", "3", copyAll());
605b4d2d410SLiu Zhe 		discard();
6067dd2b5bbSLiu Zhe 	}
60732c31156SLiu Zhe 
6087dd2b5bbSLiu Zhe 	/**
60932c31156SLiu Zhe 	 * Test insert a table in a presentation document 1. New a presentation
61032c31156SLiu Zhe 	 * document 2. Insert a default table 3. Check if the table is inserted
61132c31156SLiu Zhe 	 * successfully
61232c31156SLiu Zhe 	 *
6137dd2b5bbSLiu Zhe 	 * @throws Exception
6147dd2b5bbSLiu Zhe 	 */
6157dd2b5bbSLiu Zhe 	@Test
testInsertTableInPresentation()61632c31156SLiu Zhe 	public void testInsertTableInPresentation() throws Exception {
6177dd2b5bbSLiu Zhe 		// Create a new presentation document
618b4d2d410SLiu Zhe 		newPresentation();
61932c31156SLiu Zhe 
6207dd2b5bbSLiu Zhe 		// Insert a table
62132c31156SLiu Zhe 		app.dispatch(".uno:InsertTable");
622b4d2d410SLiu Zhe 		insertTable.ok();
6237dd2b5bbSLiu Zhe 		sleep(1);
624b4d2d410SLiu Zhe 		impress.typeKeys("3");
625b4d2d410SLiu Zhe 		assertTrue("Table Toolbar appears", tableToolbar.exists(3));
626b4d2d410SLiu Zhe //		assertEquals("The cell content", "3", copyAll());
627b4d2d410SLiu Zhe 		discard();
6287dd2b5bbSLiu Zhe 	}
6297dd2b5bbSLiu Zhe 
6307dd2b5bbSLiu Zhe 	/**
63132c31156SLiu Zhe 	 * Test insert a function in a spreadsheet document via Sum button 1. New a
63232c31156SLiu Zhe 	 * spreadsheet document 2. Insert a function via Sum button 3. Check if the
63332c31156SLiu Zhe 	 * result is correct
63432c31156SLiu Zhe 	 *
6357dd2b5bbSLiu Zhe 	 * @throws Exception
6367dd2b5bbSLiu Zhe 	 */
6377dd2b5bbSLiu Zhe 	@Test
testSumInFormulaBar()638b4d2d410SLiu Zhe 	public void testSumInFormulaBar() throws Exception {
6397dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
640b4d2d410SLiu Zhe 		newSpreadsheet();
6417dd2b5bbSLiu Zhe 		// Insert source numbers
6427dd2b5bbSLiu Zhe 		String sourceNumber1 = "5";
6437dd2b5bbSLiu Zhe 		String sourceNumber2 = "3";
6447dd2b5bbSLiu Zhe 		String expectedResult = "8";
645b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
6467dd2b5bbSLiu Zhe 		typeKeys(sourceNumber1);
647b4d2d410SLiu Zhe 		SCTool.selectRange("B1");
64832c31156SLiu Zhe 		typeKeys(sourceNumber2);
6497dd2b5bbSLiu Zhe 		// Insert a function via Sum button
650b4d2d410SLiu Zhe 		SCTool.selectRange("C1");
651b4d2d410SLiu Zhe 		scInputBarSum.click();
6527dd2b5bbSLiu Zhe 		typeKeys("<enter>");
6537dd2b5bbSLiu Zhe 		// Verify if the calculated result is equal to the expected result
654b4d2d410SLiu Zhe 		assertEquals("The calculated result", expectedResult, SCTool.getCellText("C1"));
655b4d2d410SLiu Zhe 		discard();
6567dd2b5bbSLiu Zhe 	}
65732c31156SLiu Zhe 
6587dd2b5bbSLiu Zhe 	/**
65932c31156SLiu Zhe 	 * Test insert a function in a spreadsheet document via inputbar 1. New a
66032c31156SLiu Zhe 	 * spreadsheet document 2. Insert a function via inputbar: COS 3. Check if
66132c31156SLiu Zhe 	 * the result is correct
66232c31156SLiu Zhe 	 *
6637dd2b5bbSLiu Zhe 	 * @throws Exception
6647dd2b5bbSLiu Zhe 	 */
6657dd2b5bbSLiu Zhe 	@Test
testInsertFunctionViaFormulaBar()666b4d2d410SLiu Zhe 	public void testInsertFunctionViaFormulaBar() throws Exception {
6677dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
668b4d2d410SLiu Zhe 		newSpreadsheet();
6697dd2b5bbSLiu Zhe 		// Insert source numbers and expected result
67032c31156SLiu Zhe 		String sourceData = "0";
67132c31156SLiu Zhe 		String expectedResult = "1";
672b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
67332c31156SLiu Zhe 		typeKeys(sourceData);
67432c31156SLiu Zhe 
67532c31156SLiu Zhe 		// Insert a function via inputbar: COS
676b4d2d410SLiu Zhe 		SCTool.selectRange("D1");
677b4d2d410SLiu Zhe 		scInputBarInput.inputKeys("=COS(A1)");
6787dd2b5bbSLiu Zhe 		typeKeys("<enter>");
67932c31156SLiu Zhe 
6807dd2b5bbSLiu Zhe 		// Verify if the calculated result is equal to the expected result
681b4d2d410SLiu Zhe 		assertEquals("The calculated result", expectedResult, SCTool.getCellText("D1"));
682b4d2d410SLiu Zhe 		discard();
6837dd2b5bbSLiu Zhe 	}
68432c31156SLiu Zhe 
6857dd2b5bbSLiu Zhe 	/**
68632c31156SLiu Zhe 	 * Test insert a function in a spreadsheet document via Function Wizard
68732c31156SLiu Zhe 	 * Dialog 1. New a spreadsheet document 2. Insert a function via Function
68832c31156SLiu Zhe 	 * Wizard Dialog: ABS 3. Check if the result is correct
68932c31156SLiu Zhe 	 *
6907dd2b5bbSLiu Zhe 	 * @throws Exception
6917dd2b5bbSLiu Zhe 	 */
6927dd2b5bbSLiu Zhe 	@Test
testFunctionWizardInFormulaBar()693b4d2d410SLiu Zhe 	public void testFunctionWizardInFormulaBar() throws Exception {
6947dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
695b4d2d410SLiu Zhe 		newSpreadsheet();
6967dd2b5bbSLiu Zhe 		// Insert source number
6977dd2b5bbSLiu Zhe 		String sourceNumber = "-5";
6987dd2b5bbSLiu Zhe 		String expectedResult = "5";
699b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
7007dd2b5bbSLiu Zhe 		typeKeys(sourceNumber);
7017dd2b5bbSLiu Zhe 		typeKeys("<enter>");
7027dd2b5bbSLiu Zhe 		// Insert a function via Function Wizard Dialog: ABS
703b4d2d410SLiu Zhe 		SCTool.selectRange("B1");
70432c31156SLiu Zhe 		app.dispatch(".uno:FunctionDialog");
70522a14f28SLiu Zhe 		// SC_FunctionWizardDlg_FunctionList.doubleClick(5, 5);
706b4d2d410SLiu Zhe 		scFunctionWizardDlgFunctionList.select("ABS");
707b4d2d410SLiu Zhe 		scFunctionWizardDlgNext.click(); // Use "Next" button
70844cf0280SCarl Marcum 		scFunctionWizardDlgEdit1.typeKeys("A1");
709b4d2d410SLiu Zhe 		scFunctionWizardDlg.ok();
7107dd2b5bbSLiu Zhe 		// Verify if the calculated result is equal to the expected result
711b4d2d410SLiu Zhe 		assertEquals("The calculated result", expectedResult, SCTool.getCellText("B1"));
712b4d2d410SLiu Zhe 		discard();
7137dd2b5bbSLiu Zhe 	}
7147d082fd9SCarl Marcum 
7157d082fd9SCarl Marcum 	/**
7167d082fd9SCarl Marcum 	 * Test open a non-http(s) type hyperlink (with host only) in a text document.
7177d082fd9SCarl Marcum 	 * (coverage included in fvt.gui.sw.hyperlink.WarningDialog
7187d082fd9SCarl Marcum 	 * testHyperlinkDisplaysWarning() and included here for build verification)
7197d082fd9SCarl Marcum 	 * 1. New a text document
7207d082fd9SCarl Marcum 	 * 2. Insert a dav type hyperlink
7217d082fd9SCarl Marcum 	 * 3. Open hyperlink
7227d082fd9SCarl Marcum 	 * 4. Verify security warning dialog is displayed
7237d082fd9SCarl Marcum 	 *
7247d082fd9SCarl Marcum 	 * @throws Exception
7257d082fd9SCarl Marcum 	 */
7267d082fd9SCarl Marcum 	@Test
testNonHttpHyperlinkWithHostOnly()7277d082fd9SCarl Marcum 	public void testNonHttpHyperlinkWithHostOnly() throws Exception {
7287d082fd9SCarl Marcum 		// Create a new text document
7297d082fd9SCarl Marcum 		newTextDocument();
7307d082fd9SCarl Marcum 		writer.waitForExistence(10, 2);
7317d082fd9SCarl Marcum 		// open the hyperlink dialog
7327d082fd9SCarl Marcum 		writer.typeKeys("<alt i>"); // insert menu
7337d082fd9SCarl Marcum 		writer.typeKeys("h"); // hyperlink
7347d082fd9SCarl Marcum 		hyperlinkInetPathComboBox.setText("dav://nonexistant.url.com"); //target
7357d082fd9SCarl Marcum 		hyperlinkInetText.setText("dav://nonexistant.url.com"); // displayed text
7367d082fd9SCarl Marcum 		hyperlinkDialogOkBtn.click(); // apply
7377d082fd9SCarl Marcum 		hyperlinkDialogCancelBtn.click(); // close
7387d082fd9SCarl Marcum 		sleep(1); // give the dialog time to close
7397d082fd9SCarl Marcum 		typeKeys("<shift F10>"); // context menu
7407d082fd9SCarl Marcum 		typeKeys("o"); // open hyperlink
7417d082fd9SCarl Marcum 		// we can't be sure of the language so just check for the dialog
7427d082fd9SCarl Marcum 		boolean msgExists = activeMsgBox.exists(1); // wait 1 second for the dialog
7437d082fd9SCarl Marcum 		if (msgExists) {
7447d082fd9SCarl Marcum 			activeMsgBox.no(); // close dialog
7457d082fd9SCarl Marcum 		}
7467d082fd9SCarl Marcum 		assertTrue("security warning not displayed", msgExists);
7477d082fd9SCarl Marcum 		discard();
7487d082fd9SCarl Marcum 	}
7497d082fd9SCarl Marcum 
7507d082fd9SCarl Marcum }