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
569edf8282SLiu Zhe 	public static void beforeClass() {
57b4d2d410SLiu Zhe 		app.clean();
582fc12ec5SLiu Zhe 	}
592fc12ec5SLiu Zhe 
6091745ed9SLiu Zhe 	@AfterClass
619edf8282SLiu Zhe 	public static void afterClass() {
629edf8282SLiu Zhe 		app.stop();
6391745ed9SLiu Zhe 	}
6491745ed9SLiu Zhe 
65b4d2d410SLiu Zhe 	@Before
66b4d2d410SLiu Zhe 	public void before() {
679edf8282SLiu Zhe 		app.stop();
68b4d2d410SLiu Zhe 		app.start();
69faa4b864SLei De Bin 	}
709edf8282SLiu Zhe 
7132c31156SLiu Zhe 
7291745ed9SLiu Zhe 	@Test
7391745ed9SLiu Zhe 	public void smokeTest() {
7491745ed9SLiu Zhe 		File smoketestOutput = new File(aoo.getUserInstallation(), "user/temp");
75*a622bb93SDamjan Jovanovic 		File testDir = getFile().getParentFile();
76*a622bb93SDamjan Jovanovic 		File smokeTestDir = new File(testDir, "smoketestdoc");
77*a622bb93SDamjan Jovanovic 		File smokeTestTargetDir = new File(smokeTestDir, "target");
78*a622bb93SDamjan Jovanovic 		prepareData(new File(smokeTestTargetDir, "TestExtension.oxt").getAbsolutePath());
7991745ed9SLiu Zhe 		// Open sample file smoketestdoc.sxw
80*a622bb93SDamjan Jovanovic 		open(prepareData(new File(smokeTestTargetDir, "smoketestdoc.odt").getAbsolutePath()));
8191745ed9SLiu Zhe 		writer.waitForEnabled(10, 2);
8291745ed9SLiu Zhe 		// Run test cases
8391745ed9SLiu Zhe 		app.dispatch("vnd.sun.star.script:Standard.Global.StartTestWithDefaultOptions?language=Basic&location=document", 120);
8491745ed9SLiu Zhe 		String smoketestlog = FileUtil.readFileAsString(new File(smoketestOutput, "smoketest.log"));
8591745ed9SLiu Zhe 		String testclosurelog = FileUtil.readFileAsString(new File(smoketestOutput, "testclosure.log"));
8691745ed9SLiu Zhe 		log.info(smoketestlog + "\n" + testclosurelog);
8791745ed9SLiu Zhe 		assertTrue("No Error", !smoketestlog.contains("error") && !testclosurelog.contains("error"));
8891745ed9SLiu Zhe 
8991745ed9SLiu Zhe 	}
9091745ed9SLiu Zhe 
91faa4b864SLei De Bin 	@Test
9232c31156SLiu Zhe 	public void testExportAsPDF() throws Exception {
93b4d2d410SLiu Zhe 		String file = prepareData("bvt/pdf.odt");
94b4d2d410SLiu Zhe 		String exportTo1 = getPath("temp/1.pdf");
95b4d2d410SLiu Zhe 		String exportTo2 = getPath("temp/2.pdf");
96b4d2d410SLiu Zhe 		deleteFile(exportTo1);
97b4d2d410SLiu Zhe 		deleteFile(exportTo2);
98b4d2d410SLiu Zhe 		open(file);
99b4d2d410SLiu Zhe 		writer.waitForExistence(10, 1);
100cb6199d5SLiu Zhe 		app.dispatch(".uno:ExportToPDF");
101b4d2d410SLiu Zhe 		pdfGeneralPage.ok();
102b4d2d410SLiu Zhe 		submitSaveDlg(exportTo1);
103b4d2d410SLiu Zhe 		sleep(1);
104b4d2d410SLiu Zhe 		String magic = FileUtil.readFileAsString(exportTo1).substring(0, 4);
105b4d2d410SLiu Zhe 		assertEquals("PDF is exported?", "%PDF", magic);
106b4d2d410SLiu Zhe 
107b4d2d410SLiu Zhe 		button(".uno:ExportDirectToPDF").click();//Click via toolbar
108b4d2d410SLiu Zhe 		submitSaveDlg(exportTo2);
109b4d2d410SLiu Zhe 		sleep(1);
110b4d2d410SLiu Zhe 		magic = FileUtil.readFileAsString(exportTo2).substring(0, 4);
111b4d2d410SLiu Zhe 		assertEquals("PDF is exported directly?", "%PDF", magic);
112faa4b864SLei De Bin 	}
11332c31156SLiu Zhe 
114faa4b864SLei De Bin 	/**
11532c31156SLiu Zhe 	 * Test the File -- Print Dialog show
116faa4b864SLei De Bin 	 *
11732c31156SLiu Zhe 	 */
118faa4b864SLei De Bin 	@Test
119b4d2d410SLiu Zhe 	public void testPrinter() {
12032c31156SLiu Zhe 		// Create a new text document
121b4d2d410SLiu Zhe 		newTextDocument();
122b4d2d410SLiu Zhe 		app.dispatch(".uno:PrinterSetup");
123b4d2d410SLiu Zhe 		if (activeMsgBox.exists(2))
124b4d2d410SLiu Zhe 			activeMsgBox.ok();
125b4d2d410SLiu Zhe 
126b4d2d410SLiu Zhe //		PrintService[] ps = PrintServiceLookup.lookupPrintServices(null, null);
127b4d2d410SLiu Zhe //		String[] names = new String[ps.length];
128b4d2d410SLiu Zhe //		for (int i = 0; i < ps.length; i++) {
129b4d2d410SLiu Zhe //			names[i] = ps[i].getName();
130b4d2d410SLiu Zhe //		}
131b4d2d410SLiu Zhe //
132b4d2d410SLiu Zhe //		assertArrayEquals("Printers Names", names, printerSetUpDlgPrinterNames.getItemsText());
133b4d2d410SLiu Zhe 		assertTrue("Printer Setup dialog appears", printerSetUpDlg.exists(3));
134b4d2d410SLiu Zhe 		printerSetUpDlg.cancel();
13532c31156SLiu Zhe 	}
13632c31156SLiu Zhe 
137faa4b864SLei De Bin 	/**
13832c31156SLiu Zhe 	 * Test the File -- Java Dialog show
139faa4b864SLei De Bin 	 *
14032c31156SLiu Zhe 	 */
141b4d2d410SLiu Zhe //	@Test
142b4d2d410SLiu Zhe //	public void testJavaDialog() {
143b4d2d410SLiu Zhe //
144b4d2d410SLiu Zhe //		// Create a new text document and launch a Wizards dialog which need JVM
145b4d2d410SLiu Zhe //		// work correctly.
146b4d2d410SLiu Zhe //		app.dispatch("private:factory/swriter");
147b4d2d410SLiu Zhe //		File tempfile = new File(oo.getUserInstallation(), "user/template/myAgendaTemplate.ott");
148b4d2d410SLiu Zhe //		FileUtil.deleteFile(tempfile);
149b4d2d410SLiu Zhe //		sleep(3);
150b4d2d410SLiu Zhe //		app.dispatch("service:com.sun.star.wizards.agenda.CallWizard?start");
151b4d2d410SLiu Zhe //		sleep(5);
152b4d2d410SLiu Zhe //		assertTrue(Wizards_AgendaDialog.exists(10));
153b4d2d410SLiu Zhe //		Wizards_AgendaDialog_FinishButton.click();
154b4d2d410SLiu Zhe //		sleep(10);
155b4d2d410SLiu Zhe //		writer.focus();
156b4d2d410SLiu Zhe //		sleep(1);
157b4d2d410SLiu Zhe //		app.dispatch(".uno:SelectAll");
158b4d2d410SLiu Zhe //		typeKeys("<$copy>");
159b4d2d410SLiu Zhe //		// System.out.println("now txt:"+app.getClipboard());
160b4d2d410SLiu Zhe //		// assertTrue(app.getClipboard().startsWith("<Name>"));
161b4d2d410SLiu Zhe //		assertNotNull(app.getClipboard());
162b4d2d410SLiu Zhe //	}
16332c31156SLiu Zhe 
164faa4b864SLei De Bin 	/**
16532c31156SLiu Zhe 	 * Test the Tools / Macros / Organize Dialogs" show
166faa4b864SLei De Bin 	 *
16732c31156SLiu Zhe 	 */
168faa4b864SLei De Bin 	@Test
169b4d2d410SLiu Zhe 	public void testRunMacro() {
170b4d2d410SLiu Zhe 		open(prepareData("bvt/macro.ods"));
171b4d2d410SLiu Zhe 		calc.waitForExistence(10, 2);
172b4d2d410SLiu Zhe 		app.dispatch(".uno:RunMacro");
173b4d2d410SLiu Zhe 		runMacroDlgCategories.expand("macro.ods");
174b4d2d410SLiu Zhe 		runMacroDlgCategories.expand("Standard");
175b4d2d410SLiu Zhe 		runMacroDlgCategories.select("Module1");
176b4d2d410SLiu Zhe 		runMacroDlgCommands.select(0);
177b4d2d410SLiu Zhe 		runMacroDlg.ok();
178b4d2d410SLiu Zhe 		assertEquals("A3 should be =1+3", "4", SCTool.getCellText("A3"));
179b4d2d410SLiu Zhe 		discard();
180faa4b864SLei De Bin 	}
18132c31156SLiu Zhe 
182faa4b864SLei De Bin 	/**
18332c31156SLiu Zhe 	 * Test the About Dialog show
184faa4b864SLei De Bin 	 *
18532c31156SLiu Zhe 	 */
186faa4b864SLei De Bin 	@Test
187b4d2d410SLiu Zhe 	public void testHelp() {
188cb6199d5SLiu Zhe 		app.dispatch(".uno:About");
189b4d2d410SLiu Zhe 		assertTrue(aboutDialog.exists(5));
190b4d2d410SLiu Zhe 		aboutDialog.ok();
191b4d2d410SLiu Zhe 		sleep(1);
192b4d2d410SLiu Zhe 		typeKeys("<F1>");
193b4d2d410SLiu Zhe 		assertTrue(helpWindow.exists(5));
194b4d2d410SLiu Zhe 		helpWindow.close();
195faa4b864SLei De Bin 	}
19632c31156SLiu Zhe 
197faa4b864SLei De Bin 	/**
198faa4b864SLei De Bin 	 * Test inserting a picture in text document
19932c31156SLiu Zhe 	 *
200faa4b864SLei De Bin 	 * @throws Exception
201faa4b864SLei De Bin 	 */
20232c31156SLiu Zhe 
203faa4b864SLei De Bin 	@Test
204faa4b864SLei De Bin 	public void testInsertPictureInDocument() throws Exception {
2056b55ece7SLiu Zhe 		String bmp_green = prepareData("image/green_256x256.bmp");
2066b55ece7SLiu Zhe 		String bmp_red = prepareData("image/red_256x256.bmp");
20732c31156SLiu Zhe 
20832c31156SLiu Zhe 		// Create a new text document
209b4d2d410SLiu Zhe 		newTextDocument();
21032c31156SLiu Zhe 		// Insert a picture fully filled with green
21132c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
212faa4b864SLei De Bin 		submitOpenDlg(bmp_green);
213b4d2d410SLiu Zhe 		writer.click(5,200);
214faa4b864SLei De Bin 		sleep(1);
21532c31156SLiu Zhe 
216faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
21722a14f28SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFF00FF00);
218b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
21932c31156SLiu Zhe 		// insert another picture
22032c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
221faa4b864SLei De Bin 		submitOpenDlg(bmp_red);
222b4d2d410SLiu Zhe 		writer.click(5, 200);
223faa4b864SLei De Bin 		sleep(1);
224faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
22522a14f28SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFFFF0000);
226b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
227b4d2d410SLiu Zhe 		discard();
228faa4b864SLei De Bin 	}
229faa4b864SLei De Bin 
230faa4b864SLei De Bin 	@Test
231faa4b864SLei De Bin 	public void testInsertPictureInSpreadsheet() throws Exception {
232b4d2d410SLiu Zhe 		String bmp_green = prepareData("image/green_64x64.png");
233b4d2d410SLiu Zhe 		String bmp_red = prepareData("image/red_64x64.png");
234b4d2d410SLiu Zhe 		newSpreadsheet();
23532c31156SLiu Zhe 		// Insert a picture fully filled with green
23632c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
237faa4b864SLei De Bin 		submitOpenDlg(bmp_green);
238b4d2d410SLiu Zhe 		calc.click(5, 150);
239faa4b864SLei De Bin 		sleep(1);
24032c31156SLiu Zhe 
241faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
24222a14f28SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFF00FF00);
243b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
244b4d2d410SLiu Zhe 
245b4d2d410SLiu Zhe 		SCTool.selectRange("C1");
24632c31156SLiu Zhe 		// insert another picture
24732c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
248faa4b864SLei De Bin 		submitOpenDlg(bmp_red);
249b4d2d410SLiu Zhe 		calc.click(5, 150);
250faa4b864SLei De Bin 		sleep(1);
251faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
25222a14f28SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFFFF0000);
253b4d2d410SLiu Zhe 		assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
254b4d2d410SLiu Zhe 		discard();
255faa4b864SLei De Bin 	}
25632c31156SLiu Zhe 
257faa4b864SLei De Bin 	@Test
258faa4b864SLei De Bin 	public void testInsertPictureInPresentation() throws Exception {
2596b55ece7SLiu Zhe 		String bmp_green = prepareData("image/green_256x256.bmp");
2606b55ece7SLiu Zhe 		String bmp_red = prepareData("image/red_256x256.bmp");
261b4d2d410SLiu Zhe 		newPresentation();
26232c31156SLiu Zhe 		// Insert a picture fully filled with green
26332c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
264faa4b864SLei De Bin 		submitOpenDlg(bmp_green);
26532c31156SLiu Zhe 		impress.click(5, 5);
266faa4b864SLei De Bin 		sleep(1);
26732c31156SLiu Zhe 
268faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
26922a14f28SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFF00FF00);
270b4d2d410SLiu Zhe 		assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
27132c31156SLiu Zhe 		// insert another picture
27232c31156SLiu Zhe 		app.dispatch(".uno:InsertGraphic");
273faa4b864SLei De Bin 		submitOpenDlg(bmp_red);
274faa4b864SLei De Bin 		impress.click(1, 1);
275faa4b864SLei De Bin 		sleep(1);
276faa4b864SLei De Bin 		// Verify if the picture is inserted successfully
27722a14f28SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFFFF0000);
278b4d2d410SLiu Zhe 		assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
279b4d2d410SLiu Zhe 		discard();
280faa4b864SLei De Bin 	}
28132c31156SLiu Zhe 
282faa4b864SLei De Bin 	@Test
283faa4b864SLei De Bin 	public void testSlideShow() throws Exception {
284b4d2d410SLiu Zhe 		open(prepareData("bvt/slideshow.odp"));
285faa4b864SLei De Bin 		impress.waitForExistence(10, 2);
286b4d2d410SLiu Zhe 		sleep(1);
287b4d2d410SLiu Zhe 		impress.typeKeys("<F5>");
288faa4b864SLei De Bin 		sleep(3);
289b4d2d410SLiu Zhe 		Rectangle rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFFFF0000);
290faa4b864SLei De Bin 		assertNotNull("1st slide appears", rectangle);
291b4d2d410SLiu Zhe 		slideShow.click(0.5, 0.5);
292faa4b864SLei De Bin 		sleep(2);
293b4d2d410SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF00FF00);
294faa4b864SLei De Bin 		assertNotNull("2nd slide appears", rectangle);
295faa4b864SLei De Bin 		typeKeys("<enter>");
296faa4b864SLei De Bin 		sleep(2);
297b4d2d410SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
298faa4b864SLei De Bin 		assertNotNull("3rd slide appears", rectangle);
299b4d2d410SLiu Zhe 		slideShow.click(0.5, 0.5);
300faa4b864SLei De Bin 		sleep(2);
301b4d2d410SLiu Zhe 		rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
302faa4b864SLei De Bin 		assertNull("The end", rectangle);
303b4d2d410SLiu Zhe 		slideShow.click(0.5, 0.5);
304faa4b864SLei De Bin 		sleep(3);
305b4d2d410SLiu Zhe 		assertFalse("Quit", slideShow.exists());
306faa4b864SLei De Bin 	}
30732c31156SLiu Zhe 
308faa4b864SLei De Bin 	@Test
309faa4b864SLei De Bin 	public void testFind() {
310b4d2d410SLiu Zhe 		open(prepareData("bvt/find.odt"));
311faa4b864SLei De Bin 		writer.waitForExistence(10, 2);
31232c31156SLiu Zhe 		app.dispatch(".uno:SearchDialog");
313b4d2d410SLiu Zhe 		findDlgFor.setText("OpenOffice");
314b4d2d410SLiu Zhe 		findDlgFind.click();
315faa4b864SLei De Bin 		sleep(1);
316b4d2d410SLiu Zhe 		writer.typeKeys("<$copy>");
317faa4b864SLei De Bin 		assertEquals("OpenOffice", app.getClipboard());
318b4d2d410SLiu Zhe 		findDlgFindAll.click();
319faa4b864SLei De Bin 		sleep(1);
320b4d2d410SLiu Zhe 		writer.typeKeys("<$copy>");
321faa4b864SLei De Bin 		assertEquals("OpenOfficeOpenOfficeOpenOffice", app.getClipboard());
322b4d2d410SLiu Zhe 		findDlgReplaceWith.setText("Awesome OpenOffice");
323b4d2d410SLiu Zhe 		findDlgReplaceAll.click();
324faa4b864SLei De Bin 		sleep(1);
325faa4b864SLei De Bin 		msgbox("Search key replaced 3 times.").ok();
326b4d2d410SLiu Zhe 		findDlg.close();
327faa4b864SLei De Bin 		sleep(1);
32832c31156SLiu Zhe 		assertEquals(
32932c31156SLiu 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. ",
330b4d2d410SLiu Zhe 				copyAll());
331bf385f73SDamjan Jovanovic 		discard();
332faa4b864SLei De Bin 	}
3332e4d2335SDamjan Jovanovic 
3342e4d2335SDamjan Jovanovic 	@Test
3352e4d2335SDamjan Jovanovic 	public void testFindFormulasAndValues() {
3362e4d2335SDamjan Jovanovic 	    open(prepareData("bvt/searchFormulasValues.ods"));
3372e4d2335SDamjan Jovanovic 	    calc.waitForExistence(10, 2);
3382e4d2335SDamjan Jovanovic 
3392e4d2335SDamjan Jovanovic 	    // Searching for 2003 by formula finds A2
3402e4d2335SDamjan Jovanovic 	    SCTool.selectRange("A1");
3412e4d2335SDamjan Jovanovic 	    app.dispatch(".uno:SearchDialog");
3422e4d2335SDamjan Jovanovic         findDlgFor.setText("2003");
3432e4d2335SDamjan Jovanovic         findDlgMore.click();
3442e4d2335SDamjan Jovanovic         findDlgCalcSearchIn.select("Formulas");
3452e4d2335SDamjan Jovanovic         findDlgFind.click();
3462e4d2335SDamjan Jovanovic         sleep(1);
3472e4d2335SDamjan Jovanovic 	    assertEquals("wrong cell found for formulas search", "A2", scInputBarPosition.getText());
3482e4d2335SDamjan Jovanovic 	    findDlg.close();
3492e4d2335SDamjan Jovanovic 
3502e4d2335SDamjan Jovanovic 	    // Searching for October by value finds A2
3512e4d2335SDamjan Jovanovic 	    SCTool.selectRange("A1");
3522e4d2335SDamjan Jovanovic 	    app.dispatch(".uno:SearchDialog");
3532e4d2335SDamjan Jovanovic 	    findDlgFor.setText("October");
3542e4d2335SDamjan Jovanovic 	    findDlgMore.click();
3552e4d2335SDamjan Jovanovic 	    findDlgCalcSearchIn.select("Values");
3562e4d2335SDamjan Jovanovic 	    findDlgFind.click();
3572e4d2335SDamjan Jovanovic 	    sleep(1);
3582e4d2335SDamjan Jovanovic 	    assertEquals("wrong cell found for values search", "A2", scInputBarPosition.getText());
3592e4d2335SDamjan Jovanovic 	    findDlg.close();
3602e4d2335SDamjan Jovanovic 
3612e4d2335SDamjan Jovanovic 	    discard();
3622e4d2335SDamjan Jovanovic 	}
36332c31156SLiu Zhe 
364faa4b864SLei De Bin 	@Test
365faa4b864SLei De Bin 	public void testFillInSpreadsheet() {
36622a14f28SLiu Zhe 		String[][] expected1 = new String[][] { { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, };
36722a14f28SLiu Zhe 		String[][] expected2 = new String[][] { { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, };
36822a14f28SLiu Zhe 		String[][] expected3 = new String[][] { { "Hi friends", "Hi friends", "Hi friends", "Hi friends" } };
36922a14f28SLiu Zhe 		String[][] expected4 = new String[][] { { "99999.999", "99999.999", "99999.999", "99999.999" } };
370faa4b864SLei De Bin 		String[][] expected5 = new String[][] {
37122a14f28SLiu Zhe 		{ "99999.999", "-10" }, { "100000.999", "-9" }, { "100001.999", "-8" }, { "100002.999", "-7" }, { "100003.999", "-6" }
372faa4b864SLei De Bin 		};
373b4d2d410SLiu Zhe 		newSpreadsheet();
374b4d2d410SLiu Zhe 		SCTool.selectRange("C5");
375faa4b864SLei De Bin 		typeKeys("1<enter>");
376b4d2d410SLiu Zhe 		SCTool.selectRange("C5:C10");
37732c31156SLiu Zhe 		app.dispatch(".uno:FillDown");
378b4d2d410SLiu Zhe 		assertArrayEquals("Fill Down:", expected1, SCTool.getCellTexts("C5:C10"));
37932c31156SLiu Zhe 
380b4d2d410SLiu Zhe 		SCTool.selectRange("D10");
381faa4b864SLei De Bin 		typeKeys("2<enter>");
382b4d2d410SLiu Zhe 		SCTool.selectRange("D5:D10");
38332c31156SLiu Zhe 		app.dispatch(".uno:FillUp");
384b4d2d410SLiu Zhe 		assertArrayEquals("Fill Up:", expected2, SCTool.getCellTexts("D5:D10"));
38532c31156SLiu Zhe 
386b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
387faa4b864SLei De Bin 		typeKeys("Hi friends<enter>");
388b4d2d410SLiu Zhe 		SCTool.selectRange("A1:D1");
38932c31156SLiu Zhe 		app.dispatch(".uno:FillRight");
390b4d2d410SLiu Zhe 		assertArrayEquals("Fill Right:", expected3, SCTool.getCellTexts("A1:D1"));
39132c31156SLiu Zhe 
392b4d2d410SLiu Zhe 		SCTool.selectRange("D2");
393faa4b864SLei De Bin 		typeKeys("99999.999<enter>");
394b4d2d410SLiu Zhe 		SCTool.selectRange("A2:D2");
39532c31156SLiu Zhe 		app.dispatch(".uno:FillLeft");
396b4d2d410SLiu Zhe 		assertArrayEquals("Fill left:", expected4, SCTool.getCellTexts("A2:D2"));
397faa4b864SLei De Bin 
398b4d2d410SLiu Zhe 		SCTool.selectRange("E1");
399faa4b864SLei De Bin 		typeKeys("99999.999<tab>-10<enter>");
40032c31156SLiu Zhe 
401b4d2d410SLiu Zhe 		SCTool.selectRange("E1:F5");
40232c31156SLiu Zhe 		app.dispatch(".uno:FillSeries");
403b4d2d410SLiu Zhe 		fillSeriesDlg.ok();
404faa4b864SLei De Bin 		sleep(1);
405b4d2d410SLiu Zhe 		assertArrayEquals("Fill series..", expected5, SCTool.getCellTexts("E1:F5"));
406b4d2d410SLiu Zhe 		discard();
407faa4b864SLei De Bin 	}
40832c31156SLiu Zhe 
409faa4b864SLei De Bin 	@Test
410faa4b864SLei De Bin 	public void testSort() {
41122a14f28SLiu Zhe 		String[][] expected1 = new String[][] { { "-9999999" }, { "-1.1" }, { "-1.1" }, { "0" }, { "0" }, { "0.1" }, { "10" }, { "12" }, { "9999999" }, { "9999999" },
412faa4b864SLei De Bin 
413faa4b864SLei De Bin 		};
41422a14f28SLiu Zhe 		String[][] expected2 = new String[][] { { "TRUE", "Oracle" }, { "TRUE", "OpenOffice" }, { "FALSE", "OpenOffice" }, { "TRUE", "IBM" }, { "FALSE", "IBM" },
41522a14f28SLiu Zhe 				{ "TRUE", "Google" }, { "FALSE", "facebook " }, { "TRUE", "Apache" }, { "TRUE", "!yahoo" }, { "TRUE", "" },
416faa4b864SLei De Bin 
417faa4b864SLei De Bin 		};
418faa4b864SLei De Bin 
41922a14f28SLiu Zhe 		String[][] expected3 = new String[][] { { "Sunday" }, { "Monday" }, { "Tuesday" }, { "Wednesday" }, { "Thursday" }, { "Friday" }, { "Saturday" },
420faa4b864SLei De Bin 
421faa4b864SLei De Bin 		};
42232c31156SLiu Zhe 
42322a14f28SLiu Zhe 		String[][] expected4 = new String[][] { { "-$10.00" }, { "$0.00" }, { "$0.00" }, { "$1.00" }, { "$3.00" }, { "$9.00" }, { "$123.00" }, { "$200.00" }, { "$400.00" },
42422a14f28SLiu Zhe 				{ "$10,000.00" },
425faa4b864SLei De Bin 
426faa4b864SLei De Bin 		};
427b4d2d410SLiu Zhe 		open(prepareData("bvt/sort.ods"));
428faa4b864SLei De Bin 		calc.waitForExistence(10, 2);
429b4d2d410SLiu Zhe 		SCTool.selectRange("A1:A10");
430cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
431b4d2d410SLiu Zhe 		sortWarningDlgCurrent.click();
432b4d2d410SLiu Zhe 		assertEquals(1, sortPageBy1.getSelIndex());
433b4d2d410SLiu Zhe 		sortPage.ok();
434faa4b864SLei De Bin 		sleep(1);
435b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected1, SCTool.getCellTexts("A1:A10"));
436b4d2d410SLiu Zhe 		SCTool.selectRange("B1:C10");
437cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
4387dd7871fSLei De Bin 
439b4d2d410SLiu Zhe 		sortPageBy1.select(2);
440b4d2d410SLiu Zhe 		sortPageDescending1.check();
441b4d2d410SLiu Zhe 		assertFalse(sortPageBy3.isEnabled());
442b4d2d410SLiu Zhe 		assertFalse(sortPageAscending3.isEnabled());
443b4d2d410SLiu Zhe 		assertFalse(sortPageDescending3.isEnabled());
444b4d2d410SLiu Zhe 		sortPageBy2.select(1);
445b4d2d410SLiu Zhe 		assertTrue(sortPageBy3.isEnabled());
446b4d2d410SLiu Zhe 		assertTrue(sortPageAscending3.isEnabled());
447b4d2d410SLiu Zhe 		assertTrue(sortPageDescending3.isEnabled());
448b4d2d410SLiu Zhe 		sortPageDescending2.check();
449b4d2d410SLiu Zhe 		sortPageBy2.select(0);
450b4d2d410SLiu Zhe 		assertFalse(sortPageBy3.isEnabled());
451b4d2d410SLiu Zhe 		assertFalse(sortPageAscending3.isEnabled());
452b4d2d410SLiu Zhe 		assertFalse(sortPageDescending3.isEnabled());
453b4d2d410SLiu Zhe 		sortPageBy2.select(1);
454b4d2d410SLiu Zhe 		sortPage.ok();
455faa4b864SLei De Bin 		sleep(1);
45632c31156SLiu Zhe 
457b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected2, SCTool.getCellTexts("B1:C10"));
458b4d2d410SLiu Zhe 		SCTool.selectRange("D1:D7");
459cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
460b4d2d410SLiu Zhe 		sortWarningDlgCurrent.click();
461b4d2d410SLiu Zhe 		sortOptionsPage.select();
462b4d2d410SLiu Zhe 		sortOptionsPageRangeContainsColumnLabels.uncheck();
463b4d2d410SLiu Zhe 		sortOptionsPageCustomSortOrder.check();
464b4d2d410SLiu Zhe 		sortOptionsPageCustomSortOrderList.select("Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday");
465b4d2d410SLiu Zhe 		sortOptionsPage.ok();
466faa4b864SLei De Bin 		sleep(1);
467b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected3, SCTool.getCellTexts("D1:D7"));
46832c31156SLiu Zhe 
469b4d2d410SLiu Zhe 		SCTool.selectRange("E1:E10");
470cb6199d5SLiu Zhe 		app.dispatch(".uno:DataSort");
471b4d2d410SLiu Zhe 		sortWarningDlgCurrent.click();
472b4d2d410SLiu Zhe 		sortPage.ok();
473faa4b864SLei De Bin 		sleep(1);
474b4d2d410SLiu Zhe 		assertArrayEquals("Sorted Data", expected4, SCTool.getCellTexts("E1:E10"));
475b4d2d410SLiu Zhe 		discard();
476faa4b864SLei De Bin 	}
47732c31156SLiu Zhe 
4787dd2b5bbSLiu Zhe 	/**
47932c31156SLiu Zhe 	 * Test insert a chart in a draw document 1. New a draw document 2. Insert a
48032c31156SLiu Zhe 	 * chart 3. Check if the chart is inserted successfully
48132c31156SLiu Zhe 	 *
4827dd2b5bbSLiu Zhe 	 * @throws Exception
4837dd2b5bbSLiu Zhe 	 */
4847dd2b5bbSLiu Zhe 	@Test
48532c31156SLiu Zhe 	public void testInsertChartInDraw() throws Exception {
4867dd2b5bbSLiu Zhe 		// Create a new drawing document
487b4d2d410SLiu Zhe 		newDrawing();
4887dd2b5bbSLiu Zhe 		// Insert a chart
48932c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
4907dd2b5bbSLiu Zhe 		sleep(3);
49132c31156SLiu Zhe 
4927dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
493b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
4947dd2b5bbSLiu Zhe 		// Focus on edit pane
49532c31156SLiu Zhe 		draw.click(5, 5);
4967dd2b5bbSLiu Zhe 		sleep(1);
497b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
498b4d2d410SLiu Zhe 		discard();
4997dd2b5bbSLiu Zhe 	}
50032c31156SLiu Zhe 
5017dd2b5bbSLiu Zhe 	/**
50232c31156SLiu Zhe 	 * Test insert a chart in a text document 1. New a text document 2. Insert a
50332c31156SLiu Zhe 	 * chart 3. Check if the chart is inserted successfully
50432c31156SLiu Zhe 	 *
5057dd2b5bbSLiu Zhe 	 * @throws Exception
5067dd2b5bbSLiu Zhe 	 */
5077dd2b5bbSLiu Zhe 	@Test
50832c31156SLiu Zhe 	public void testInsertChartInDocument() throws Exception {
5097dd2b5bbSLiu Zhe 		// Create a new text document
510b4d2d410SLiu Zhe 		newTextDocument();
5117dd2b5bbSLiu Zhe 		// Insert a chart
51232c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
5137dd2b5bbSLiu Zhe 		sleep(3);
51432c31156SLiu Zhe 
5157dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
516b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
5177dd2b5bbSLiu Zhe 		// Focus on edit pane
51832c31156SLiu Zhe 		writer.click(5, 5);
5197dd2b5bbSLiu Zhe 		sleep(1);
520b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
521b4d2d410SLiu Zhe 		discard();
5227dd2b5bbSLiu Zhe 	}
52332c31156SLiu Zhe 
5247dd2b5bbSLiu Zhe 	/**
52532c31156SLiu Zhe 	 * Test insert a chart in a spreadsheet document 1. New a spreadsheet
52632c31156SLiu Zhe 	 * document 2. Insert a chart 3. Check if the chart is inserted successfully
52732c31156SLiu Zhe 	 *
5287dd2b5bbSLiu Zhe 	 * @throws Exception
5297dd2b5bbSLiu Zhe 	 */
5307dd2b5bbSLiu Zhe 	@Test
53132c31156SLiu Zhe 	public void testInsertChartInSpreadsheet() throws Exception {
5327dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
533b4d2d410SLiu Zhe 		newSpreadsheet();
5347dd2b5bbSLiu Zhe 		// Insert a chart
53532c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
5367dd2b5bbSLiu Zhe 		sleep(3);
537b4d2d410SLiu Zhe 		chartWizard.ok();
53832c31156SLiu Zhe 
5397dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
540b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
5417dd2b5bbSLiu Zhe 		// Focus on edit pane
54232c31156SLiu Zhe 		calc.click(5, 5);
54332c31156SLiu Zhe 		sleep(1);
544b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
545b4d2d410SLiu Zhe 		discard();
5467dd2b5bbSLiu Zhe 	}
54732c31156SLiu Zhe 
5487dd2b5bbSLiu Zhe 	/**
54932c31156SLiu Zhe 	 * Test insert a chart in a presentation document 1. New a presentation
55032c31156SLiu Zhe 	 * document 2. Insert a chart 3. Check if the chart is inserted successfully
55132c31156SLiu Zhe 	 *
5527dd2b5bbSLiu Zhe 	 * @throws Exception
5537dd2b5bbSLiu Zhe 	 */
5542aaec72aSLiu Zhe 	@Test
55532c31156SLiu Zhe 	public void testInsertChartInPresentation() throws Exception {
5567dd2b5bbSLiu Zhe 		// Create a new presentation document
557b4d2d410SLiu Zhe 		newPresentation();
5587dd2b5bbSLiu Zhe 		// Insert a chart
55932c31156SLiu Zhe 		app.dispatch(".uno:InsertObjectChart");
5607dd2b5bbSLiu Zhe 		sleep(3);
5617dd2b5bbSLiu Zhe 		// Verify if the chart is inserted successfully
562b4d2d410SLiu Zhe 		assertTrue("Chart Editor appears", chart.exists(3));
5637dd2b5bbSLiu Zhe 		// Focus on edit pane
56432c31156SLiu Zhe 		impress.click(5, 5);
56532c31156SLiu Zhe 		sleep(1);
566b4d2d410SLiu Zhe 		assertFalse("Chart Editor appears", chart.exists());
567b4d2d410SLiu Zhe 		discard();
5687dd2b5bbSLiu Zhe 	}
56932c31156SLiu Zhe 
5707dd2b5bbSLiu Zhe 	/**
57132c31156SLiu Zhe 	 * Test insert a table in a draw document 1. New a draw document 2. Insert a
57232c31156SLiu Zhe 	 * default table 3. Check if the table is inserted successfully
57332c31156SLiu Zhe 	 *
5747dd2b5bbSLiu Zhe 	 * @throws Exception
5757dd2b5bbSLiu Zhe 	 */
5767dd2b5bbSLiu Zhe 	@Test
57732c31156SLiu Zhe 	public void testInsertTableInDraw() throws Exception {
5787dd2b5bbSLiu Zhe 		// Create a new drawing document
579b4d2d410SLiu Zhe 		newDrawing();
5807dd2b5bbSLiu Zhe 		// Insert a table
58132c31156SLiu Zhe 		app.dispatch(".uno:InsertTable");
582b4d2d410SLiu Zhe 		insertTable.ok();
5837dd2b5bbSLiu Zhe 		sleep(1);
584b4d2d410SLiu Zhe 		draw.typeKeys("3");
585b4d2d410SLiu Zhe 		assertTrue("Table Toolbar appears", tableToolbar.exists(3));
586b4d2d410SLiu Zhe //		assertEquals("The cell content", "3", copyAll());
587b4d2d410SLiu Zhe 		discard();
5887dd2b5bbSLiu Zhe 	}
58932c31156SLiu Zhe 
5907dd2b5bbSLiu Zhe 	/**
59132c31156SLiu Zhe 	 * Test insert a table in a text document 1. New a text document 2. Insert a
59232c31156SLiu Zhe 	 * default table 3. Check if the table is inserted successfully
59332c31156SLiu Zhe 	 *
5947dd2b5bbSLiu Zhe 	 * @throws Exception
5957dd2b5bbSLiu Zhe 	 */
5967dd2b5bbSLiu Zhe 	@Test
59732c31156SLiu Zhe 	public void testInsertTableInDocument() throws Exception {
5987dd2b5bbSLiu Zhe 		// Create a new text document
599b4d2d410SLiu Zhe 		newTextDocument();
6007dd2b5bbSLiu Zhe 		// Insert a table
60132c31156SLiu Zhe 		app.dispatch(".uno:InsertTable");
602b4d2d410SLiu Zhe 		writerInsertTable.ok();
6037dd2b5bbSLiu Zhe 		sleep(1);
604b4d2d410SLiu Zhe 		writer.typeKeys("3");
605b4d2d410SLiu Zhe 		// Verify if the table toolbar is active
606b4d2d410SLiu Zhe 		assertTrue("Table Toolbar appears", tableToolbar.exists(3));
607b4d2d410SLiu Zhe //		assertEquals("The cell content", "3", copyAll());
608b4d2d410SLiu Zhe 		discard();
6097dd2b5bbSLiu Zhe 	}
61032c31156SLiu Zhe 
6117dd2b5bbSLiu Zhe 	/**
61232c31156SLiu Zhe 	 * Test insert a table in a presentation document 1. New a presentation
61332c31156SLiu Zhe 	 * document 2. Insert a default table 3. Check if the table is inserted
61432c31156SLiu Zhe 	 * successfully
61532c31156SLiu Zhe 	 *
6167dd2b5bbSLiu Zhe 	 * @throws Exception
6177dd2b5bbSLiu Zhe 	 */
6187dd2b5bbSLiu Zhe 	@Test
61932c31156SLiu Zhe 	public void testInsertTableInPresentation() throws Exception {
6207dd2b5bbSLiu Zhe 		// Create a new presentation document
621b4d2d410SLiu Zhe 		newPresentation();
62232c31156SLiu Zhe 
6237dd2b5bbSLiu Zhe 		// Insert a table
62432c31156SLiu Zhe 		app.dispatch(".uno:InsertTable");
625b4d2d410SLiu Zhe 		insertTable.ok();
6267dd2b5bbSLiu Zhe 		sleep(1);
627b4d2d410SLiu Zhe 		impress.typeKeys("3");
628b4d2d410SLiu Zhe 		assertTrue("Table Toolbar appears", tableToolbar.exists(3));
629b4d2d410SLiu Zhe //		assertEquals("The cell content", "3", copyAll());
630b4d2d410SLiu Zhe 		discard();
6317dd2b5bbSLiu Zhe 	}
6327dd2b5bbSLiu Zhe 
6337dd2b5bbSLiu Zhe 	/**
63432c31156SLiu Zhe 	 * Test insert a function in a spreadsheet document via Sum button 1. New a
63532c31156SLiu Zhe 	 * spreadsheet document 2. Insert a function via Sum button 3. Check if the
63632c31156SLiu Zhe 	 * result is correct
63732c31156SLiu Zhe 	 *
6387dd2b5bbSLiu Zhe 	 * @throws Exception
6397dd2b5bbSLiu Zhe 	 */
6407dd2b5bbSLiu Zhe 	@Test
641b4d2d410SLiu Zhe 	public void testSumInFormulaBar() throws Exception {
6427dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
643b4d2d410SLiu Zhe 		newSpreadsheet();
6447dd2b5bbSLiu Zhe 		// Insert source numbers
6457dd2b5bbSLiu Zhe 		String sourceNumber1 = "5";
6467dd2b5bbSLiu Zhe 		String sourceNumber2 = "3";
6477dd2b5bbSLiu Zhe 		String expectedResult = "8";
648b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
6497dd2b5bbSLiu Zhe 		typeKeys(sourceNumber1);
650b4d2d410SLiu Zhe 		SCTool.selectRange("B1");
65132c31156SLiu Zhe 		typeKeys(sourceNumber2);
6527dd2b5bbSLiu Zhe 		// Insert a function via Sum button
653b4d2d410SLiu Zhe 		SCTool.selectRange("C1");
654b4d2d410SLiu Zhe 		scInputBarSum.click();
6557dd2b5bbSLiu Zhe 		typeKeys("<enter>");
6567dd2b5bbSLiu Zhe 		// Verify if the calculated result is equal to the expected result
657b4d2d410SLiu Zhe 		assertEquals("The calculated result", expectedResult, SCTool.getCellText("C1"));
658b4d2d410SLiu Zhe 		discard();
6597dd2b5bbSLiu Zhe 	}
66032c31156SLiu Zhe 
6617dd2b5bbSLiu Zhe 	/**
66232c31156SLiu Zhe 	 * Test insert a function in a spreadsheet document via inputbar 1. New a
66332c31156SLiu Zhe 	 * spreadsheet document 2. Insert a function via inputbar: COS 3. Check if
66432c31156SLiu Zhe 	 * the result is correct
66532c31156SLiu Zhe 	 *
6667dd2b5bbSLiu Zhe 	 * @throws Exception
6677dd2b5bbSLiu Zhe 	 */
6687dd2b5bbSLiu Zhe 	@Test
669b4d2d410SLiu Zhe 	public void testInsertFunctionViaFormulaBar() throws Exception {
6707dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
671b4d2d410SLiu Zhe 		newSpreadsheet();
6727dd2b5bbSLiu Zhe 		// Insert source numbers and expected result
67332c31156SLiu Zhe 		String sourceData = "0";
67432c31156SLiu Zhe 		String expectedResult = "1";
675b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
67632c31156SLiu Zhe 		typeKeys(sourceData);
67732c31156SLiu Zhe 
67832c31156SLiu Zhe 		// Insert a function via inputbar: COS
679b4d2d410SLiu Zhe 		SCTool.selectRange("D1");
680b4d2d410SLiu Zhe 		scInputBarInput.inputKeys("=COS(A1)");
6817dd2b5bbSLiu Zhe 		typeKeys("<enter>");
68232c31156SLiu Zhe 
6837dd2b5bbSLiu Zhe 		// Verify if the calculated result is equal to the expected result
684b4d2d410SLiu Zhe 		assertEquals("The calculated result", expectedResult, SCTool.getCellText("D1"));
685b4d2d410SLiu Zhe 		discard();
6867dd2b5bbSLiu Zhe 	}
68732c31156SLiu Zhe 
6887dd2b5bbSLiu Zhe 	/**
68932c31156SLiu Zhe 	 * Test insert a function in a spreadsheet document via Function Wizard
69032c31156SLiu Zhe 	 * Dialog 1. New a spreadsheet document 2. Insert a function via Function
69132c31156SLiu Zhe 	 * Wizard Dialog: ABS 3. Check if the result is correct
69232c31156SLiu Zhe 	 *
6937dd2b5bbSLiu Zhe 	 * @throws Exception
6947dd2b5bbSLiu Zhe 	 */
6957dd2b5bbSLiu Zhe 	@Test
696b4d2d410SLiu Zhe 	public void testFunctionWizardInFormulaBar() throws Exception {
6977dd2b5bbSLiu Zhe 		// Create a new spreadsheet document
698b4d2d410SLiu Zhe 		newSpreadsheet();
6997dd2b5bbSLiu Zhe 		// Insert source number
7007dd2b5bbSLiu Zhe 		String sourceNumber = "-5";
7017dd2b5bbSLiu Zhe 		String expectedResult = "5";
702b4d2d410SLiu Zhe 		SCTool.selectRange("A1");
7037dd2b5bbSLiu Zhe 		typeKeys(sourceNumber);
7047dd2b5bbSLiu Zhe 		typeKeys("<enter>");
7057dd2b5bbSLiu Zhe 		// Insert a function via Function Wizard Dialog: ABS
706b4d2d410SLiu Zhe 		SCTool.selectRange("B1");
70732c31156SLiu Zhe 		app.dispatch(".uno:FunctionDialog");
70822a14f28SLiu Zhe 		// SC_FunctionWizardDlg_FunctionList.doubleClick(5, 5);
709b4d2d410SLiu Zhe 		scFunctionWizardDlgFunctionList.select("ABS");
710b4d2d410SLiu Zhe 		scFunctionWizardDlgNext.click(); // Use "Next" button
711f9b06548Sdamjan 		scFunctionWizardDlgEdit1.typeKeys("A1");
712b4d2d410SLiu Zhe 		scFunctionWizardDlg.ok();
7137dd2b5bbSLiu Zhe 		// Verify if the calculated result is equal to the expected result
714b4d2d410SLiu Zhe 		assertEquals("The calculated result", expectedResult, SCTool.getCellText("B1"));
715b4d2d410SLiu Zhe 		discard();
7167dd2b5bbSLiu Zhe 	}
717faa4b864SLei De Bin }
718