xref: /trunk/test/testgui/source/bvt/gui/BasicFunctionTest.java (revision 7950f2af818787db817abe90d4dbb3d6d8409899)
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 import java.io.File;
35 
36 import org.junit.AfterClass;
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.FileUtil;
42 import org.openoffice.test.common.GraphicsUtil;
43 import org.openoffice.test.common.Logger;
44 
45 import testlib.gui.SCTool;
46 
47 /**
48  *
49  */
50 public class BasicFunctionTest {
51 
52     @Rule
53     public Logger log = Logger.getLogger(this);
54 
55     @BeforeClass
56     public static void beforeClass() {
57         app.clean();
58     }
59 
60     @AfterClass
61     public static void afterClass() {
62         app.stop();
63     }
64 
65     @Before
66     public void before() {
67         app.stop();
68         app.start();
69     }
70 
71 
72     @Test
73     public void smokeTest() {
74         File smoketestOutput = new File(aoo.getUserInstallation(), "user/temp");
75         File testDir = getFile().getParentFile();
76         File smokeTestDir = new File(testDir, "smoketestdoc");
77         File smokeTestTargetDir = new File(smokeTestDir, "target");
78         prepareData(new File(smokeTestTargetDir, "TestExtension.oxt").getAbsolutePath());
79         // Open sample file smoketestdoc.sxw
80         open(prepareData(new File(smokeTestTargetDir, "smoketestdoc.odt").getAbsolutePath()));
81         writer.waitForEnabled(10, 2);
82         // Run test cases
83         app.dispatch("vnd.sun.star.script:Standard.Global.StartTestWithDefaultOptions?language=Basic&location=document", 120);
84         String smoketestlog = FileUtil.readFileAsString(new File(smoketestOutput, "smoketest.log"));
85         String testclosurelog = FileUtil.readFileAsString(new File(smoketestOutput, "testclosure.log"));
86         log.info(smoketestlog + "\n" + testclosurelog);
87         assertTrue("No Error", !smoketestlog.contains("error") && !testclosurelog.contains("error"));
88 
89     }
90 
91     @Test
92     public void testExportAsPDF() throws Exception {
93         String file = prepareData("bvt/pdf.odt");
94         String exportTo1 = getPath("temp/1.pdf");
95         String exportTo2 = getPath("temp/2.pdf");
96         deleteFile(exportTo1);
97         deleteFile(exportTo2);
98         open(file);
99         writer.waitForExistence(10, 1);
100         app.dispatch(".uno:ExportToPDF");
101         pdfGeneralPage.ok();
102         submitSaveDlg(exportTo1);
103         sleep(1);
104         String magic = FileUtil.readFileAsString(exportTo1).substring(0, 4);
105         assertEquals("PDF is exported?", "%PDF", magic);
106 
107         button(".uno:ExportDirectToPDF").click();//Click via toolbar
108         submitSaveDlg(exportTo2);
109         sleep(1);
110         magic = FileUtil.readFileAsString(exportTo2).substring(0, 4);
111         assertEquals("PDF is exported directly?", "%PDF", magic);
112     }
113 
114     /**
115      * Test the File -- Print Dialog show
116      *
117      */
118     @Test
119     public void testPrinter() {
120         // Create a new text document
121         newTextDocument();
122         app.dispatch(".uno:PrinterSetup");
123         if (activeMsgBox.exists(2))
124             activeMsgBox.ok();
125 
126 //      PrintService[] ps = PrintServiceLookup.lookupPrintServices(null, null);
127 //      String[] names = new String[ps.length];
128 //      for (int i = 0; i < ps.length; i++) {
129 //          names[i] = ps[i].getName();
130 //      }
131 //
132 //      assertArrayEquals("Printers Names", names, printerSetUpDlgPrinterNames.getItemsText());
133         assertTrue("Printer Setup dialog appears", printerSetUpDlg.exists(3));
134         printerSetUpDlg.cancel();
135     }
136 
137     /**
138      * Test the File -- Java Dialog show
139      *
140      */
141 //  @Test
142 //  public void testJavaDialog() {
143 //
144 //      // Create a new text document and launch a Wizards dialog which need JVM
145 //      // work correctly.
146 //      app.dispatch("private:factory/swriter");
147 //      File tempfile = new File(oo.getUserInstallation(), "user/template/myAgendaTemplate.ott");
148 //      FileUtil.deleteFile(tempfile);
149 //      sleep(3);
150 //      app.dispatch("service:com.sun.star.wizards.agenda.CallWizard?start");
151 //      sleep(5);
152 //      assertTrue(Wizards_AgendaDialog.exists(10));
153 //      Wizards_AgendaDialog_FinishButton.click();
154 //      sleep(10);
155 //      writer.focus();
156 //      sleep(1);
157 //      app.dispatch(".uno:SelectAll");
158 //      typeKeys("<$copy>");
159 //      // System.out.println("now txt:"+app.getClipboard());
160 //      // assertTrue(app.getClipboard().startsWith("<Name>"));
161 //      assertNotNull(app.getClipboard());
162 //  }
163 
164     /**
165      * Test the Tools / Macros / Organize Dialogs" show
166      *
167      */
168     @Test
169     public void testRunMacro() {
170         open(prepareData("bvt/macro.ods"));
171         calc.waitForExistence(10, 2);
172         app.dispatch(".uno:RunMacro");
173         runMacroDlgCategories.expand("macro.ods");
174         runMacroDlgCategories.expand("Standard");
175         runMacroDlgCategories.select("Module1");
176         runMacroDlgCommands.select(0);
177         runMacroDlg.ok();
178         assertEquals("A3 should be =1+3", "4", SCTool.getCellText("A3"));
179         discard();
180     }
181 
182     /**
183      * Test the About Dialog show
184      *
185      */
186     @Test
187     public void testHelp() {
188         app.dispatch(".uno:About");
189         assertTrue(aboutDialog.exists(5));
190         aboutDialog.ok();
191         sleep(1);
192         typeKeys("<F1>");
193         assertTrue(helpWindow.exists(5));
194         helpWindow.close();
195     }
196 
197     /**
198      * Test inserting a picture in text document
199      *
200      * @throws Exception
201      */
202 
203     @Test
204     public void testInsertPictureInDocument() throws Exception {
205         String bmp_green = prepareData("image/green_256x256.bmp");
206         String bmp_red = prepareData("image/red_256x256.bmp");
207 
208         // Create a new text document
209         newTextDocument();
210         // Insert a picture fully filled with green
211         app.dispatch(".uno:InsertGraphic");
212         submitOpenDlg(bmp_green);
213         writer.click(5,200);
214         sleep(1);
215 
216         // Verify if the picture is inserted successfully
217         Rectangle rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFF00FF00);
218         assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
219         // insert another picture
220         app.dispatch(".uno:InsertGraphic");
221         submitOpenDlg(bmp_red);
222         writer.click(5, 200);
223         sleep(1);
224         // Verify if the picture is inserted successfully
225         rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFFFF0000);
226         assertTrue("Green Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
227         discard();
228     }
229 
230     @Test
231     public void testInsertPictureInSpreadsheet() throws Exception {
232         String bmp_green = prepareData("image/green_64x64.png");
233         String bmp_red = prepareData("image/red_64x64.png");
234         newSpreadsheet();
235         // Insert a picture fully filled with green
236         app.dispatch(".uno:InsertGraphic");
237         submitOpenDlg(bmp_green);
238         calc.click(5, 150);
239         sleep(1);
240 
241         // Verify if the picture is inserted successfully
242         Rectangle rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFF00FF00);
243         assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
244 
245         SCTool.selectRange("C1");
246         // insert another picture
247         app.dispatch(".uno:InsertGraphic");
248         submitOpenDlg(bmp_red);
249         calc.click(5, 150);
250         sleep(1);
251         // Verify if the picture is inserted successfully
252         rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFFFF0000);
253         assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
254         discard();
255     }
256 
257     @Test
258     public void testInsertPictureInPresentation() throws Exception {
259         String bmp_green = prepareData("image/green_256x256.bmp");
260         String bmp_red = prepareData("image/red_256x256.bmp");
261         newPresentation();
262         // Insert a picture fully filled with green
263         app.dispatch(".uno:InsertGraphic");
264         submitOpenDlg(bmp_green);
265         impress.click(5, 5);
266         sleep(1);
267 
268         // Verify if the picture is inserted successfully
269         Rectangle rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFF00FF00);
270         assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
271         // insert another picture
272         app.dispatch(".uno:InsertGraphic");
273         submitOpenDlg(bmp_red);
274         impress.click(1, 1);
275         sleep(1);
276         // Verify if the picture is inserted successfully
277         rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFFFF0000);
278         assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
279         discard();
280     }
281 
282     @Test
283     public void testSlideShow() throws Exception {
284         open(prepareData("bvt/slideshow.odp"));
285         impress.waitForExistence(10, 2);
286         sleep(1);
287         impress.typeKeys("<F5>");
288         sleep(3);
289         Rectangle rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFFFF0000);
290         assertNotNull("1st slide appears", rectangle);
291         slideShow.click(0.5, 0.5);
292         sleep(2);
293         rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF00FF00);
294         assertNotNull("2nd slide appears", rectangle);
295         typeKeys("<enter>");
296         sleep(2);
297         rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
298         assertNotNull("3rd slide appears", rectangle);
299         slideShow.click(0.5, 0.5);
300         sleep(2);
301         rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
302         assertNull("The end", rectangle);
303         slideShow.click(0.5, 0.5);
304         sleep(3);
305         assertFalse("Quit", slideShow.exists());
306     }
307 
308     @Test
309     public void testFind() {
310         open(prepareData("bvt/find.odt"));
311         writer.waitForExistence(10, 2);
312         app.dispatch(".uno:SearchDialog");
313         findDlgFor.setText("OpenOffice");
314         findDlgFind.click();
315         sleep(1);
316         writer.typeKeys("<$copy>");
317         assertEquals("OpenOffice", app.getClipboard());
318         findDlgFindAll.click();
319         sleep(1);
320         writer.typeKeys("<$copy>");
321         assertEquals("OpenOfficeOpenOfficeOpenOffice", app.getClipboard());
322         findDlgReplaceWith.setText("Awesome OpenOffice");
323         findDlgReplaceAll.click();
324         sleep(1);
325         msgbox("Search key replaced 3 times.").ok();
326         findDlg.close();
327         sleep(1);
328         assertEquals(
329                 "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. ",
330                 copyAll());
331         discard();
332     }
333 
334     @Test
335     public void testFindFormulasAndValues() {
336         open(prepareData("bvt/searchFormulasValues.ods"));
337         calc.waitForExistence(10, 2);
338 
339         // Searching for 2003 by formula finds A2
340         SCTool.selectRange("A1");
341         app.dispatch(".uno:SearchDialog");
342         findDlgFor.setText("2003");
343         findDlgMore.click();
344         findDlgCalcSearchIn.select("Formulas");
345         findDlgFind.click();
346         sleep(1);
347         assertEquals("wrong cell found for formulas search", "A2", scInputBarPosition.getText());
348         findDlg.close();
349 
350         // Searching for October by value finds A2
351         SCTool.selectRange("A1");
352         app.dispatch(".uno:SearchDialog");
353         findDlgFor.setText("October");
354         findDlgMore.click();
355         findDlgCalcSearchIn.select("Values");
356         findDlgFind.click();
357         sleep(1);
358         assertEquals("wrong cell found for values search", "A2", scInputBarPosition.getText());
359         findDlg.close();
360 
361         discard();
362     }
363 
364     @Test
365     public void testFillInSpreadsheet() {
366         String[][] expected1 = new String[][] { { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, };
367         String[][] expected2 = new String[][] { { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, };
368         String[][] expected3 = new String[][] { { "Hi friends", "Hi friends", "Hi friends", "Hi friends" } };
369         String[][] expected4 = new String[][] { { "99999.999", "99999.999", "99999.999", "99999.999" } };
370         String[][] expected5 = new String[][] {
371         { "99999.999", "-10" }, { "100000.999", "-9" }, { "100001.999", "-8" }, { "100002.999", "-7" }, { "100003.999", "-6" }
372         };
373         newSpreadsheet();
374         SCTool.selectRange("C5");
375         typeKeys("1<enter>");
376         SCTool.selectRange("C5:C10");
377         app.dispatch(".uno:FillDown");
378         assertArrayEquals("Fill Down:", expected1, SCTool.getCellTexts("C5:C10"));
379 
380         SCTool.selectRange("D10");
381         typeKeys("2<enter>");
382         SCTool.selectRange("D5:D10");
383         app.dispatch(".uno:FillUp");
384         assertArrayEquals("Fill Up:", expected2, SCTool.getCellTexts("D5:D10"));
385 
386         SCTool.selectRange("A1");
387         typeKeys("Hi friends<enter>");
388         SCTool.selectRange("A1:D1");
389         app.dispatch(".uno:FillRight");
390         assertArrayEquals("Fill Right:", expected3, SCTool.getCellTexts("A1:D1"));
391 
392         SCTool.selectRange("D2");
393         typeKeys("99999.999<enter>");
394         SCTool.selectRange("A2:D2");
395         app.dispatch(".uno:FillLeft");
396         assertArrayEquals("Fill left:", expected4, SCTool.getCellTexts("A2:D2"));
397 
398         SCTool.selectRange("E1");
399         typeKeys("99999.999<tab>-10<enter>");
400 
401         SCTool.selectRange("E1:F5");
402         app.dispatch(".uno:FillSeries");
403         fillSeriesDlg.ok();
404         sleep(1);
405         assertArrayEquals("Fill series..", expected5, SCTool.getCellTexts("E1:F5"));
406         discard();
407     }
408 
409     @Test
410     public void testSort() {
411         String[][] expected1 = new String[][] { { "-9999999" }, { "-1.1" }, { "-1.1" }, { "0" }, { "0" }, { "0.1" }, { "10" }, { "12" }, { "9999999" }, { "9999999" },
412 
413         };
414         String[][] expected2 = new String[][] { { "TRUE", "Oracle" }, { "TRUE", "OpenOffice" }, { "FALSE", "OpenOffice" }, { "TRUE", "IBM" }, { "FALSE", "IBM" },
415                 { "TRUE", "Google" }, { "FALSE", "facebook " }, { "TRUE", "Apache" }, { "TRUE", "!yahoo" }, { "TRUE", "" },
416 
417         };
418 
419         String[][] expected3 = new String[][] { { "Sunday" }, { "Monday" }, { "Tuesday" }, { "Wednesday" }, { "Thursday" }, { "Friday" }, { "Saturday" },
420 
421         };
422 
423         String[][] expected4 = new String[][] { { "-$10.00" }, { "$0.00" }, { "$0.00" }, { "$1.00" }, { "$3.00" }, { "$9.00" }, { "$123.00" }, { "$200.00" }, { "$400.00" },
424                 { "$10,000.00" },
425 
426         };
427         open(prepareData("bvt/sort.ods"));
428         calc.waitForExistence(10, 2);
429         SCTool.selectRange("A1:A10");
430         app.dispatch(".uno:DataSort");
431         sortWarningDlgCurrent.click();
432         assertEquals(1, sortPageBy1.getSelIndex());
433         sortPage.ok();
434         sleep(1);
435         assertArrayEquals("Sorted Data", expected1, SCTool.getCellTexts("A1:A10"));
436         SCTool.selectRange("B1:C10");
437         app.dispatch(".uno:DataSort");
438 
439         sortPageBy1.select(2);
440         sortPageDescending1.check();
441         assertFalse(sortPageBy3.isEnabled());
442         assertFalse(sortPageAscending3.isEnabled());
443         assertFalse(sortPageDescending3.isEnabled());
444         sortPageBy2.select(1);
445         assertTrue(sortPageBy3.isEnabled());
446         assertTrue(sortPageAscending3.isEnabled());
447         assertTrue(sortPageDescending3.isEnabled());
448         sortPageDescending2.check();
449         sortPageBy2.select(0);
450         assertFalse(sortPageBy3.isEnabled());
451         assertFalse(sortPageAscending3.isEnabled());
452         assertFalse(sortPageDescending3.isEnabled());
453         sortPageBy2.select(1);
454         sortPage.ok();
455         sleep(1);
456 
457         assertArrayEquals("Sorted Data", expected2, SCTool.getCellTexts("B1:C10"));
458         SCTool.selectRange("D1:D7");
459         app.dispatch(".uno:DataSort");
460         sortWarningDlgCurrent.click();
461         sortOptionsPage.select();
462         sortOptionsPageRangeContainsColumnLabels.uncheck();
463         sortOptionsPageCustomSortOrder.check();
464         sortOptionsPageCustomSortOrderList.select("Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday");
465         sortOptionsPage.ok();
466         sleep(1);
467         assertArrayEquals("Sorted Data", expected3, SCTool.getCellTexts("D1:D7"));
468 
469         SCTool.selectRange("E1:E10");
470         app.dispatch(".uno:DataSort");
471         sortWarningDlgCurrent.click();
472         sortPage.ok();
473         sleep(1);
474         assertArrayEquals("Sorted Data", expected4, SCTool.getCellTexts("E1:E10"));
475         discard();
476     }
477 
478     /**
479      * Test insert a chart in a draw document 1. New a draw document 2. Insert a
480      * chart 3. Check if the chart is inserted successfully
481      *
482      * @throws Exception
483      */
484     @Test
485     public void testInsertChartInDraw() throws Exception {
486         // Create a new drawing document
487         newDrawing();
488         // Insert a chart
489         app.dispatch(".uno:InsertObjectChart");
490         sleep(3);
491 
492         // Verify if the chart is inserted successfully
493         assertTrue("Chart Editor appears", chart.exists(3));
494         // Focus on edit pane
495         draw.click(5, 5);
496         sleep(1);
497         assertFalse("Chart Editor appears", chart.exists());
498         discard();
499     }
500 
501     /**
502      * Test insert a chart in a text document 1. New a text document 2. Insert a
503      * chart 3. Check if the chart is inserted successfully
504      *
505      * @throws Exception
506      */
507     @Test
508     public void testInsertChartInDocument() throws Exception {
509         // Create a new text document
510         newTextDocument();
511         // Insert a chart
512         app.dispatch(".uno:InsertObjectChart");
513         sleep(3);
514 
515         // Verify if the chart is inserted successfully
516         assertTrue("Chart Editor appears", chart.exists(3));
517         // Focus on edit pane
518         writer.click(5, 5);
519         sleep(1);
520         assertFalse("Chart Editor appears", chart.exists());
521         discard();
522     }
523 
524     /**
525      * Test insert a chart in a spreadsheet document 1. New a spreadsheet
526      * document 2. Insert a chart 3. Check if the chart is inserted successfully
527      *
528      * @throws Exception
529      */
530     @Test
531     public void testInsertChartInSpreadsheet() throws Exception {
532         // Create a new spreadsheet document
533         newSpreadsheet();
534         // Insert a chart
535         app.dispatch(".uno:InsertObjectChart");
536         sleep(3);
537         chartWizard.ok();
538 
539         // Verify if the chart is inserted successfully
540         assertTrue("Chart Editor appears", chart.exists(3));
541         // Focus on edit pane
542         calc.click(5, 5);
543         sleep(1);
544         assertFalse("Chart Editor appears", chart.exists());
545         discard();
546     }
547 
548     /**
549      * Test insert a chart in a presentation document 1. New a presentation
550      * document 2. Insert a chart 3. Check if the chart is inserted successfully
551      *
552      * @throws Exception
553      */
554     @Test
555     public void testInsertChartInPresentation() throws Exception {
556         // Create a new presentation document
557         newPresentation();
558         // Insert a chart
559         app.dispatch(".uno:InsertObjectChart");
560         sleep(3);
561         // Verify if the chart is inserted successfully
562         assertTrue("Chart Editor appears", chart.exists(3));
563         // Focus on edit pane
564         impress.click(5, 5);
565         sleep(1);
566         assertFalse("Chart Editor appears", chart.exists());
567         discard();
568     }
569 
570     /**
571      * Test insert a table in a draw document 1. New a draw document 2. Insert a
572      * default table 3. Check if the table is inserted successfully
573      *
574      * @throws Exception
575      */
576     @Test
577     public void testInsertTableInDraw() throws Exception {
578         // Create a new drawing document
579         newDrawing();
580         // Insert a table
581         app.dispatch(".uno:InsertTable");
582         insertTable.ok();
583         sleep(1);
584         draw.typeKeys("3");
585         assertTrue("Table Toolbar appears", tableToolbar.exists(3));
586 //      assertEquals("The cell content", "3", copyAll());
587         discard();
588     }
589 
590     /**
591      * Test insert a table in a text document 1. New a text document 2. Insert a
592      * default table 3. Check if the table is inserted successfully
593      *
594      * @throws Exception
595      */
596     @Test
597     public void testInsertTableInDocument() throws Exception {
598         // Create a new text document
599         newTextDocument();
600         // Insert a table
601         app.dispatch(".uno:InsertTable");
602         writerInsertTable.ok();
603         sleep(1);
604         writer.typeKeys("3");
605         // Verify if the table toolbar is active
606         assertTrue("Table Toolbar appears", tableToolbar.exists(3));
607 //      assertEquals("The cell content", "3", copyAll());
608         discard();
609     }
610 
611     /**
612      * Test insert a table in a presentation document 1. New a presentation
613      * document 2. Insert a default table 3. Check if the table is inserted
614      * successfully
615      *
616      * @throws Exception
617      */
618     @Test
619     public void testInsertTableInPresentation() throws Exception {
620         // Create a new presentation document
621         newPresentation();
622 
623         // Insert a table
624         app.dispatch(".uno:InsertTable");
625         insertTable.ok();
626         sleep(1);
627         impress.typeKeys("3");
628         assertTrue("Table Toolbar appears", tableToolbar.exists(3));
629 //      assertEquals("The cell content", "3", copyAll());
630         discard();
631     }
632 
633     /**
634      * Test insert a function in a spreadsheet document via Sum button 1. New a
635      * spreadsheet document 2. Insert a function via Sum button 3. Check if the
636      * result is correct
637      *
638      * @throws Exception
639      */
640     @Test
641     public void testSumInFormulaBar() throws Exception {
642         // Create a new spreadsheet document
643         newSpreadsheet();
644         // Insert source numbers
645         String sourceNumber1 = "5";
646         String sourceNumber2 = "3";
647         String expectedResult = "8";
648         SCTool.selectRange("A1");
649         typeKeys(sourceNumber1);
650         SCTool.selectRange("B1");
651         typeKeys(sourceNumber2);
652         // Insert a function via Sum button
653         SCTool.selectRange("C1");
654         scInputBarSum.click();
655         typeKeys("<enter>");
656         // Verify if the calculated result is equal to the expected result
657         assertEquals("The calculated result", expectedResult, SCTool.getCellText("C1"));
658         discard();
659     }
660 
661     /**
662      * Test insert a function in a spreadsheet document via inputbar 1. New a
663      * spreadsheet document 2. Insert a function via inputbar: COS 3. Check if
664      * the result is correct
665      *
666      * @throws Exception
667      */
668     @Test
669     public void testInsertFunctionViaFormulaBar() throws Exception {
670         // Create a new spreadsheet document
671         newSpreadsheet();
672         // Insert source numbers and expected result
673         String sourceData = "0";
674         String expectedResult = "1";
675         SCTool.selectRange("A1");
676         typeKeys(sourceData);
677 
678         // Insert a function via inputbar: COS
679         SCTool.selectRange("D1");
680         scInputBarInput.inputKeys("=COS(A1)");
681         typeKeys("<enter>");
682 
683         // Verify if the calculated result is equal to the expected result
684         assertEquals("The calculated result", expectedResult, SCTool.getCellText("D1"));
685         discard();
686     }
687 
688     /**
689      * Test insert a function in a spreadsheet document via Function Wizard
690      * Dialog 1. New a spreadsheet document 2. Insert a function via Function
691      * Wizard Dialog: ABS 3. Check if the result is correct
692      *
693      * @throws Exception
694      */
695     @Test
696     public void testFunctionWizardInFormulaBar() throws Exception {
697         // Create a new spreadsheet document
698         newSpreadsheet();
699         // Insert source number
700         String sourceNumber = "-5";
701         String expectedResult = "5";
702         SCTool.selectRange("A1");
703         typeKeys(sourceNumber);
704         typeKeys("<enter>");
705         // Insert a function via Function Wizard Dialog: ABS
706         SCTool.selectRange("B1");
707         app.dispatch(".uno:FunctionDialog");
708         // SC_FunctionWizardDlg_FunctionList.doubleClick(5, 5);
709         scFunctionWizardDlgFunctionList.select("ABS");
710         scFunctionWizardDlgNext.click(); // Use "Next" button
711         scFunctionWizardDlgEdit1.typeKeys("A1");
712         scFunctionWizardDlg.ok();
713         // Verify if the calculated result is equal to the expected result
714         assertEquals("The calculated result", expectedResult, SCTool.getCellText("B1"));
715         discard();
716     }
717 }
718