xref: /trunk/test/testgui/source/bvt/gui/BasicFunctionTest.java (revision 118e126ca1039489d385fbdca8ef1379cfda5d4d)
180a6f5c5SLiu Zhe /**************************************************************
280a6f5c5SLiu Zhe  *
380a6f5c5SLiu Zhe  * Licensed to the Apache Software Foundation (ASF) under one
480a6f5c5SLiu Zhe  * or more contributor license agreements.  See the NOTICE file
580a6f5c5SLiu Zhe  * distributed with this work for additional information
680a6f5c5SLiu Zhe  * regarding copyright ownership.  The ASF licenses this file
780a6f5c5SLiu Zhe  * to you under the Apache License, Version 2.0 (the
880a6f5c5SLiu Zhe  * "License"); you may not use this file except in compliance
980a6f5c5SLiu Zhe  * with the License.  You may obtain a copy of the License at
1080a6f5c5SLiu Zhe  *
1180a6f5c5SLiu Zhe  *   http://www.apache.org/licenses/LICENSE-2.0
1280a6f5c5SLiu Zhe  *
1380a6f5c5SLiu Zhe  * Unless required by applicable law or agreed to in writing,
1480a6f5c5SLiu Zhe  * software distributed under the License is distributed on an
1580a6f5c5SLiu Zhe  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1680a6f5c5SLiu Zhe  * KIND, either express or implied.  See the License for the
1780a6f5c5SLiu Zhe  * specific language governing permissions and limitations
1880a6f5c5SLiu Zhe  * under the License.
1980a6f5c5SLiu Zhe  *
2080a6f5c5SLiu Zhe  *************************************************************/
2180a6f5c5SLiu Zhe 
222c9c3879Smseidel 
232c9c3879Smseidel 
2480a6f5c5SLiu Zhe /**
2580a6f5c5SLiu Zhe  *
2680a6f5c5SLiu Zhe  */
2780a6f5c5SLiu Zhe package bvt.gui;
2880a6f5c5SLiu Zhe 
2980a6f5c5SLiu Zhe import static org.junit.Assert.*;
3080a6f5c5SLiu Zhe import static org.openoffice.test.common.Testspace.*;
3180a6f5c5SLiu Zhe import static org.openoffice.test.vcl.Tester.*;
3280a6f5c5SLiu Zhe import static testlib.gui.AppTool.*;
3380a6f5c5SLiu Zhe import static testlib.gui.UIMap.*;
3480a6f5c5SLiu Zhe 
3580a6f5c5SLiu Zhe import java.awt.Rectangle;
3691745ed9SLiu Zhe import java.io.File;
3780a6f5c5SLiu Zhe 
3891745ed9SLiu Zhe import org.junit.AfterClass;
3980a6f5c5SLiu Zhe import org.junit.Before;
4080a6f5c5SLiu Zhe import org.junit.BeforeClass;
4180a6f5c5SLiu Zhe import org.junit.Rule;
4280a6f5c5SLiu Zhe import org.junit.Test;
4380a6f5c5SLiu Zhe import org.openoffice.test.common.FileUtil;
4480a6f5c5SLiu Zhe import org.openoffice.test.common.GraphicsUtil;
4580a6f5c5SLiu Zhe import org.openoffice.test.common.Logger;
4680a6f5c5SLiu Zhe 
4780a6f5c5SLiu Zhe import testlib.gui.SCTool;
4880a6f5c5SLiu Zhe 
4980a6f5c5SLiu Zhe /**
5080a6f5c5SLiu Zhe  *
5180a6f5c5SLiu Zhe  */
5280a6f5c5SLiu Zhe public class BasicFunctionTest {
5380a6f5c5SLiu Zhe 
5480a6f5c5SLiu Zhe     @Rule
5580a6f5c5SLiu Zhe     public Logger log = Logger.getLogger(this);
5680a6f5c5SLiu Zhe 
5780a6f5c5SLiu Zhe     @BeforeClass
beforeClass()589edf8282SLiu Zhe     public static void beforeClass() {
5980a6f5c5SLiu Zhe         app.clean();
6080a6f5c5SLiu Zhe     }
6180a6f5c5SLiu Zhe 
6291745ed9SLiu Zhe     @AfterClass
afterClass()639edf8282SLiu Zhe     public static void afterClass() {
649edf8282SLiu Zhe         app.stop();
6591745ed9SLiu Zhe     }
6691745ed9SLiu Zhe 
6780a6f5c5SLiu Zhe     @Before
before()6880a6f5c5SLiu Zhe     public void before() {
699edf8282SLiu Zhe         app.stop();
7080a6f5c5SLiu Zhe         app.start();
7180a6f5c5SLiu Zhe     }
7280a6f5c5SLiu Zhe 
739edf8282SLiu Zhe 
7480a6f5c5SLiu Zhe     @Test
smokeTest()7591745ed9SLiu Zhe     public void smokeTest() {
7691745ed9SLiu Zhe         File smoketestOutput = new File(aoo.getUserInstallation(), "user/temp");
77a622bb93SDamjan Jovanovic         File testDir = getFile().getParentFile();
78a622bb93SDamjan Jovanovic         File smokeTestDir = new File(testDir, "smoketestdoc");
79a622bb93SDamjan Jovanovic         File smokeTestTargetDir = new File(smokeTestDir, "target");
80a622bb93SDamjan Jovanovic         prepareData(new File(smokeTestTargetDir, "TestExtension.oxt").getAbsolutePath());
8191745ed9SLiu Zhe         // Open sample file smoketestdoc.sxw
82a622bb93SDamjan Jovanovic         open(prepareData(new File(smokeTestTargetDir, "smoketestdoc.odt").getAbsolutePath()));
8391745ed9SLiu Zhe         writer.waitForEnabled(10, 2);
8491745ed9SLiu Zhe         // Run test cases
8591745ed9SLiu Zhe         app.dispatch("vnd.sun.star.script:Standard.Global.StartTestWithDefaultOptions?language=Basic&location=document", 120);
8691745ed9SLiu Zhe         String smoketestlog = FileUtil.readFileAsString(new File(smoketestOutput, "smoketest.log"));
8791745ed9SLiu Zhe         String testclosurelog = FileUtil.readFileAsString(new File(smoketestOutput, "testclosure.log"));
8891745ed9SLiu Zhe         log.info(smoketestlog + "\n" + testclosurelog);
8991745ed9SLiu Zhe         assertTrue("No Error", !smoketestlog.contains("error") && !testclosurelog.contains("error"));
9091745ed9SLiu Zhe 
9191745ed9SLiu Zhe     }
9291745ed9SLiu Zhe 
9391745ed9SLiu Zhe     @Test
testExportAsPDF()9480a6f5c5SLiu Zhe     public void testExportAsPDF() throws Exception {
9580a6f5c5SLiu Zhe         String file = prepareData("bvt/pdf.odt");
9680a6f5c5SLiu Zhe         String exportTo1 = getPath("temp/1.pdf");
9780a6f5c5SLiu Zhe         String exportTo2 = getPath("temp/2.pdf");
9880a6f5c5SLiu Zhe         deleteFile(exportTo1);
9980a6f5c5SLiu Zhe         deleteFile(exportTo2);
10080a6f5c5SLiu Zhe         open(file);
10180a6f5c5SLiu Zhe         writer.waitForExistence(10, 1);
10280a6f5c5SLiu Zhe         app.dispatch(".uno:ExportToPDF");
10380a6f5c5SLiu Zhe         pdfGeneralPage.ok();
10480a6f5c5SLiu Zhe         submitSaveDlg(exportTo1);
10580a6f5c5SLiu Zhe         sleep(1);
10680a6f5c5SLiu Zhe         String magic = FileUtil.readFileAsString(exportTo1).substring(0, 4);
10780a6f5c5SLiu Zhe         assertEquals("PDF is exported?", "%PDF", magic);
10880a6f5c5SLiu Zhe 
10980a6f5c5SLiu Zhe         button(".uno:ExportDirectToPDF").click();//Click via toolbar
11080a6f5c5SLiu Zhe         submitSaveDlg(exportTo2);
11180a6f5c5SLiu Zhe         sleep(1);
11280a6f5c5SLiu Zhe         magic = FileUtil.readFileAsString(exportTo2).substring(0, 4);
11380a6f5c5SLiu Zhe         assertEquals("PDF is exported directly?", "%PDF", magic);
11480a6f5c5SLiu Zhe     }
11580a6f5c5SLiu Zhe 
11680a6f5c5SLiu Zhe     /**
11780a6f5c5SLiu Zhe      * Test the File -- Print Dialog show
11880a6f5c5SLiu Zhe      *
11980a6f5c5SLiu Zhe      */
12080a6f5c5SLiu Zhe     @Test
testPrinter()12180a6f5c5SLiu Zhe     public void testPrinter() {
12280a6f5c5SLiu Zhe         // Create a new text document
12380a6f5c5SLiu Zhe         newTextDocument();
12480a6f5c5SLiu Zhe         app.dispatch(".uno:PrinterSetup");
12580a6f5c5SLiu Zhe         if (activeMsgBox.exists(2))
12680a6f5c5SLiu Zhe             activeMsgBox.ok();
12780a6f5c5SLiu Zhe 
12880a6f5c5SLiu Zhe //      PrintService[] ps = PrintServiceLookup.lookupPrintServices(null, null);
12980a6f5c5SLiu Zhe //      String[] names = new String[ps.length];
13080a6f5c5SLiu Zhe //      for (int i = 0; i < ps.length; i++) {
13180a6f5c5SLiu Zhe //          names[i] = ps[i].getName();
13280a6f5c5SLiu Zhe //      }
13380a6f5c5SLiu Zhe //
13480a6f5c5SLiu Zhe //      assertArrayEquals("Printers Names", names, printerSetUpDlgPrinterNames.getItemsText());
13580a6f5c5SLiu Zhe         assertTrue("Printer Setup dialog appears", printerSetUpDlg.exists(3));
13680a6f5c5SLiu Zhe         printerSetUpDlg.cancel();
13780a6f5c5SLiu Zhe     }
13880a6f5c5SLiu Zhe 
13980a6f5c5SLiu Zhe     /**
14080a6f5c5SLiu Zhe      * Test the File -- Java Dialog show
14180a6f5c5SLiu Zhe      *
14280a6f5c5SLiu Zhe      */
14380a6f5c5SLiu Zhe //  @Test
14480a6f5c5SLiu Zhe //  public void testJavaDialog() {
14580a6f5c5SLiu Zhe //
14680a6f5c5SLiu Zhe //      // Create a new text document and launch a Wizards dialog which need JVM
14780a6f5c5SLiu Zhe //      // work correctly.
14880a6f5c5SLiu Zhe //      app.dispatch("private:factory/swriter");
14980a6f5c5SLiu Zhe //      File tempfile = new File(oo.getUserInstallation(), "user/template/myAgendaTemplate.ott");
15080a6f5c5SLiu Zhe //      FileUtil.deleteFile(tempfile);
15180a6f5c5SLiu Zhe //      sleep(3);
15280a6f5c5SLiu Zhe //      app.dispatch("service:com.sun.star.wizards.agenda.CallWizard?start");
15380a6f5c5SLiu Zhe //      sleep(5);
15480a6f5c5SLiu Zhe //      assertTrue(Wizards_AgendaDialog.exists(10));
15580a6f5c5SLiu Zhe //      Wizards_AgendaDialog_FinishButton.click();
15680a6f5c5SLiu Zhe //      sleep(10);
15780a6f5c5SLiu Zhe //      writer.focus();
15880a6f5c5SLiu Zhe //      sleep(1);
15980a6f5c5SLiu Zhe //      app.dispatch(".uno:SelectAll");
16080a6f5c5SLiu Zhe //      typeKeys("<$copy>");
16180a6f5c5SLiu Zhe //      // System.out.println("now txt:"+app.getClipboard());
16280a6f5c5SLiu Zhe //      // assertTrue(app.getClipboard().startsWith("<Name>"));
16380a6f5c5SLiu Zhe //      assertNotNull(app.getClipboard());
16480a6f5c5SLiu Zhe //  }
16580a6f5c5SLiu Zhe 
16680a6f5c5SLiu Zhe     /**
16780a6f5c5SLiu Zhe      * Test the Tools / Macros / Organize Dialogs" show
16880a6f5c5SLiu Zhe      *
16980a6f5c5SLiu Zhe      */
17080a6f5c5SLiu Zhe     @Test
testRunMacro()17180a6f5c5SLiu Zhe     public void testRunMacro() {
17280a6f5c5SLiu Zhe         open(prepareData("bvt/macro.ods"));
17380a6f5c5SLiu Zhe         calc.waitForExistence(10, 2);
17480a6f5c5SLiu Zhe         app.dispatch(".uno:RunMacro");
17580a6f5c5SLiu Zhe         runMacroDlgCategories.expand("macro.ods");
17680a6f5c5SLiu Zhe         runMacroDlgCategories.expand("Standard");
17780a6f5c5SLiu Zhe         runMacroDlgCategories.select("Module1");
17880a6f5c5SLiu Zhe         runMacroDlgCommands.select(0);
17980a6f5c5SLiu Zhe         runMacroDlg.ok();
180882d61ebSCarl Marcum         sleep(1);
18180a6f5c5SLiu Zhe         assertEquals("A3 should be =1+3", "4", SCTool.getCellText("A3"));
18280a6f5c5SLiu Zhe         discard();
18380a6f5c5SLiu Zhe     }
18480a6f5c5SLiu Zhe 
18580a6f5c5SLiu Zhe     /**
18680a6f5c5SLiu Zhe      * Test the About Dialog show
18780a6f5c5SLiu Zhe      *
18880a6f5c5SLiu Zhe      */
18980a6f5c5SLiu Zhe     @Test
testHelp()19080a6f5c5SLiu Zhe     public void testHelp() {
19180a6f5c5SLiu Zhe         app.dispatch(".uno:About");
19280a6f5c5SLiu Zhe         assertTrue(aboutDialog.exists(5));
19380a6f5c5SLiu Zhe         aboutDialog.ok();
19480a6f5c5SLiu Zhe         sleep(1);
19580a6f5c5SLiu Zhe         typeKeys("<F1>");
19680a6f5c5SLiu Zhe         assertTrue(helpWindow.exists(5));
19780a6f5c5SLiu Zhe         helpWindow.close();
19880a6f5c5SLiu Zhe     }
19980a6f5c5SLiu Zhe 
20080a6f5c5SLiu Zhe     /**
20180a6f5c5SLiu Zhe      * Test inserting a picture in text document
20280a6f5c5SLiu Zhe      *
20380a6f5c5SLiu Zhe      * @throws Exception
20480a6f5c5SLiu Zhe      */
20580a6f5c5SLiu Zhe 
20680a6f5c5SLiu Zhe     @Test
testInsertPictureInDocument()20780a6f5c5SLiu Zhe     public void testInsertPictureInDocument() throws Exception {
20880a6f5c5SLiu Zhe         String bmp_green = prepareData("image/green_256x256.bmp");
20980a6f5c5SLiu Zhe         String bmp_red = prepareData("image/red_256x256.bmp");
21080a6f5c5SLiu Zhe 
21180a6f5c5SLiu Zhe         // Create a new text document
21280a6f5c5SLiu Zhe         newTextDocument();
21380a6f5c5SLiu Zhe         // Insert a picture fully filled with green
21480a6f5c5SLiu Zhe         app.dispatch(".uno:InsertGraphic");
21580a6f5c5SLiu Zhe         submitOpenDlg(bmp_green);
21680a6f5c5SLiu Zhe         writer.click(5,200);
21780a6f5c5SLiu Zhe         sleep(1);
21880a6f5c5SLiu Zhe 
21980a6f5c5SLiu Zhe         // Verify if the picture is inserted successfully
22080a6f5c5SLiu Zhe         Rectangle rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFF00FF00);
22180a6f5c5SLiu Zhe         assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
22280a6f5c5SLiu Zhe         // insert another picture
22380a6f5c5SLiu Zhe         app.dispatch(".uno:InsertGraphic");
22480a6f5c5SLiu Zhe         submitOpenDlg(bmp_red);
22580a6f5c5SLiu Zhe         writer.click(5, 200);
22680a6f5c5SLiu Zhe         sleep(1);
22780a6f5c5SLiu Zhe         // Verify if the picture is inserted successfully
22880a6f5c5SLiu Zhe         rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFFFF0000);
22980a6f5c5SLiu Zhe         assertTrue("Green Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
23080a6f5c5SLiu Zhe         discard();
23180a6f5c5SLiu Zhe     }
23280a6f5c5SLiu Zhe 
23380a6f5c5SLiu Zhe     @Test
testInsertPictureInSpreadsheet()23480a6f5c5SLiu Zhe     public void testInsertPictureInSpreadsheet() throws Exception {
23580a6f5c5SLiu Zhe         String bmp_green = prepareData("image/green_64x64.png");
23680a6f5c5SLiu Zhe         String bmp_red = prepareData("image/red_64x64.png");
23780a6f5c5SLiu Zhe         newSpreadsheet();
23880a6f5c5SLiu Zhe         // Insert a picture fully filled with green
23980a6f5c5SLiu Zhe         app.dispatch(".uno:InsertGraphic");
24080a6f5c5SLiu Zhe         submitOpenDlg(bmp_green);
24180a6f5c5SLiu Zhe         calc.click(5, 150);
24280a6f5c5SLiu Zhe         sleep(1);
24380a6f5c5SLiu Zhe 
24480a6f5c5SLiu Zhe         // Verify if the picture is inserted successfully
24580a6f5c5SLiu Zhe         Rectangle rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFF00FF00);
24680a6f5c5SLiu Zhe         assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
24780a6f5c5SLiu Zhe 
24880a6f5c5SLiu Zhe         SCTool.selectRange("C1");
24980a6f5c5SLiu Zhe         // insert another picture
25080a6f5c5SLiu Zhe         app.dispatch(".uno:InsertGraphic");
25180a6f5c5SLiu Zhe         submitOpenDlg(bmp_red);
25280a6f5c5SLiu Zhe         calc.click(5, 150);
25380a6f5c5SLiu Zhe         sleep(1);
25480a6f5c5SLiu Zhe         // Verify if the picture is inserted successfully
25580a6f5c5SLiu Zhe         rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFFFF0000);
25680a6f5c5SLiu Zhe         assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
25780a6f5c5SLiu Zhe         discard();
25880a6f5c5SLiu Zhe     }
25980a6f5c5SLiu Zhe 
26080a6f5c5SLiu Zhe     @Test
testInsertPictureInPresentation()26180a6f5c5SLiu Zhe     public void testInsertPictureInPresentation() throws Exception {
26280a6f5c5SLiu Zhe         String bmp_green = prepareData("image/green_256x256.bmp");
26380a6f5c5SLiu Zhe         String bmp_red = prepareData("image/red_256x256.bmp");
26480a6f5c5SLiu Zhe         newPresentation();
26580a6f5c5SLiu Zhe         // Insert a picture fully filled with green
26680a6f5c5SLiu Zhe         app.dispatch(".uno:InsertGraphic");
26780a6f5c5SLiu Zhe         submitOpenDlg(bmp_green);
26880a6f5c5SLiu Zhe         impress.click(5, 5);
26980a6f5c5SLiu Zhe         sleep(1);
27080a6f5c5SLiu Zhe 
27180a6f5c5SLiu Zhe         // Verify if the picture is inserted successfully
27280a6f5c5SLiu Zhe         Rectangle rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFF00FF00);
27380a6f5c5SLiu Zhe         assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
27480a6f5c5SLiu Zhe         // insert another picture
27580a6f5c5SLiu Zhe         app.dispatch(".uno:InsertGraphic");
27680a6f5c5SLiu Zhe         submitOpenDlg(bmp_red);
27780a6f5c5SLiu Zhe         impress.click(1, 1);
27880a6f5c5SLiu Zhe         sleep(1);
27980a6f5c5SLiu Zhe         // Verify if the picture is inserted successfully
28080a6f5c5SLiu Zhe         rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFFFF0000);
28180a6f5c5SLiu Zhe         assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
28280a6f5c5SLiu Zhe         discard();
28380a6f5c5SLiu Zhe     }
28480a6f5c5SLiu Zhe 
28580a6f5c5SLiu Zhe     @Test
testSlideShow()28680a6f5c5SLiu Zhe     public void testSlideShow() throws Exception {
28780a6f5c5SLiu Zhe         open(prepareData("bvt/slideshow.odp"));
28880a6f5c5SLiu Zhe         impress.waitForExistence(10, 2);
28980a6f5c5SLiu Zhe         sleep(1);
29080a6f5c5SLiu Zhe         impress.typeKeys("<F5>");
29180a6f5c5SLiu Zhe         sleep(3);
29280a6f5c5SLiu Zhe         Rectangle rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFFFF0000);
29380a6f5c5SLiu Zhe         assertNotNull("1st slide appears", rectangle);
29480a6f5c5SLiu Zhe         slideShow.click(0.5, 0.5);
29580a6f5c5SLiu Zhe         sleep(2);
29680a6f5c5SLiu Zhe         rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF00FF00);
29780a6f5c5SLiu Zhe         assertNotNull("2nd slide appears", rectangle);
29880a6f5c5SLiu Zhe         typeKeys("<enter>");
29980a6f5c5SLiu Zhe         sleep(2);
30080a6f5c5SLiu Zhe         rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
30180a6f5c5SLiu Zhe         assertNotNull("3rd slide appears", rectangle);
30280a6f5c5SLiu Zhe         slideShow.click(0.5, 0.5);
30380a6f5c5SLiu Zhe         sleep(2);
30480a6f5c5SLiu Zhe         rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
30580a6f5c5SLiu Zhe         assertNull("The end", rectangle);
30680a6f5c5SLiu Zhe         slideShow.click(0.5, 0.5);
30780a6f5c5SLiu Zhe         sleep(3);
30880a6f5c5SLiu Zhe         assertFalse("Quit", slideShow.exists());
30980a6f5c5SLiu Zhe     }
31080a6f5c5SLiu Zhe 
31180a6f5c5SLiu Zhe     @Test
testFind()31280a6f5c5SLiu Zhe     public void testFind() {
31380a6f5c5SLiu Zhe         open(prepareData("bvt/find.odt"));
31480a6f5c5SLiu Zhe         writer.waitForExistence(10, 2);
31580a6f5c5SLiu Zhe         app.dispatch(".uno:SearchDialog");
31680a6f5c5SLiu Zhe         findDlgFor.setText("OpenOffice");
31780a6f5c5SLiu Zhe         findDlgFind.click();
31880a6f5c5SLiu Zhe         sleep(1);
31980a6f5c5SLiu Zhe         writer.typeKeys("<$copy>");
32080a6f5c5SLiu Zhe         assertEquals("OpenOffice", app.getClipboard());
32180a6f5c5SLiu Zhe         findDlgFindAll.click();
32280a6f5c5SLiu Zhe         sleep(1);
32380a6f5c5SLiu Zhe         writer.typeKeys("<$copy>");
32480a6f5c5SLiu Zhe         assertEquals("OpenOfficeOpenOfficeOpenOffice", app.getClipboard());
32580a6f5c5SLiu Zhe         findDlgReplaceWith.setText("Awesome OpenOffice");
32680a6f5c5SLiu Zhe         findDlgReplaceAll.click();
32780a6f5c5SLiu Zhe         sleep(1);
32880a6f5c5SLiu Zhe         msgbox("Search key replaced 3 times.").ok();
32980a6f5c5SLiu Zhe         findDlg.close();
33080a6f5c5SLiu Zhe         sleep(1);
33180a6f5c5SLiu Zhe         assertEquals(
332*190f2c20Scbmarcum                 "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. ",
33380a6f5c5SLiu Zhe                 copyAll());
334bf385f73SDamjan Jovanovic         discard();
33580a6f5c5SLiu Zhe     }
3362e4d2335SDamjan Jovanovic 
3372e4d2335SDamjan Jovanovic     @Test
testFindFormulasAndValues()3382e4d2335SDamjan Jovanovic     public void testFindFormulasAndValues() {
3392e4d2335SDamjan Jovanovic         open(prepareData("bvt/searchFormulasValues.ods"));
3402e4d2335SDamjan Jovanovic         calc.waitForExistence(10, 2);
3412e4d2335SDamjan Jovanovic 
3422e4d2335SDamjan Jovanovic         // Searching for 2003 by formula finds A2
3432e4d2335SDamjan Jovanovic         SCTool.selectRange("A1");
3442e4d2335SDamjan Jovanovic         app.dispatch(".uno:SearchDialog");
3452e4d2335SDamjan Jovanovic         findDlgFor.setText("2003");
3462e4d2335SDamjan Jovanovic         findDlgMore.click();
3472e4d2335SDamjan Jovanovic         findDlgCalcSearchIn.select("Formulas");
3482e4d2335SDamjan Jovanovic         findDlgFind.click();
3492e4d2335SDamjan Jovanovic         sleep(1);
3502e4d2335SDamjan Jovanovic         assertEquals("wrong cell found for formulas search", "A2", scInputBarPosition.getText());
3512e4d2335SDamjan Jovanovic         findDlg.close();
3522e4d2335SDamjan Jovanovic 
3532e4d2335SDamjan Jovanovic         // Searching for October by value finds A2
3542e4d2335SDamjan Jovanovic         SCTool.selectRange("A1");
3552e4d2335SDamjan Jovanovic         app.dispatch(".uno:SearchDialog");
3562e4d2335SDamjan Jovanovic         findDlgFor.setText("October");
3572e4d2335SDamjan Jovanovic         findDlgMore.click();
3582e4d2335SDamjan Jovanovic         findDlgCalcSearchIn.select("Values");
3592e4d2335SDamjan Jovanovic         findDlgFind.click();
3602e4d2335SDamjan Jovanovic         sleep(1);
3612e4d2335SDamjan Jovanovic         assertEquals("wrong cell found for values search", "A2", scInputBarPosition.getText());
3622e4d2335SDamjan Jovanovic         findDlg.close();
3632e4d2335SDamjan Jovanovic 
3642e4d2335SDamjan Jovanovic         discard();
3652e4d2335SDamjan Jovanovic     }
36680a6f5c5SLiu Zhe 
36780a6f5c5SLiu Zhe     @Test
testFillInSpreadsheet()36880a6f5c5SLiu Zhe     public void testFillInSpreadsheet() {
36980a6f5c5SLiu Zhe         String[][] expected1 = new String[][] { { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, };
37080a6f5c5SLiu Zhe         String[][] expected2 = new String[][] { { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, };
37180a6f5c5SLiu Zhe         String[][] expected3 = new String[][] { { "Hi friends", "Hi friends", "Hi friends", "Hi friends" } };
37280a6f5c5SLiu Zhe         String[][] expected4 = new String[][] { { "99999.999", "99999.999", "99999.999", "99999.999" } };
37380a6f5c5SLiu Zhe         String[][] expected5 = new String[][] {
37480a6f5c5SLiu Zhe         { "99999.999", "-10" }, { "100000.999", "-9" }, { "100001.999", "-8" }, { "100002.999", "-7" }, { "100003.999", "-6" }
37580a6f5c5SLiu Zhe         };
37680a6f5c5SLiu Zhe         newSpreadsheet();
37780a6f5c5SLiu Zhe         SCTool.selectRange("C5");
37880a6f5c5SLiu Zhe         typeKeys("1<enter>");
37980a6f5c5SLiu Zhe         SCTool.selectRange("C5:C10");
38080a6f5c5SLiu Zhe         app.dispatch(".uno:FillDown");
38180a6f5c5SLiu Zhe         assertArrayEquals("Fill Down:", expected1, SCTool.getCellTexts("C5:C10"));
38280a6f5c5SLiu Zhe 
38380a6f5c5SLiu Zhe         SCTool.selectRange("D10");
38480a6f5c5SLiu Zhe         typeKeys("2<enter>");
38580a6f5c5SLiu Zhe         SCTool.selectRange("D5:D10");
38680a6f5c5SLiu Zhe         app.dispatch(".uno:FillUp");
38780a6f5c5SLiu Zhe         assertArrayEquals("Fill Up:", expected2, SCTool.getCellTexts("D5:D10"));
38880a6f5c5SLiu Zhe 
38980a6f5c5SLiu Zhe         SCTool.selectRange("A1");
39080a6f5c5SLiu Zhe         typeKeys("Hi friends<enter>");
39180a6f5c5SLiu Zhe         SCTool.selectRange("A1:D1");
39280a6f5c5SLiu Zhe         app.dispatch(".uno:FillRight");
39380a6f5c5SLiu Zhe         assertArrayEquals("Fill Right:", expected3, SCTool.getCellTexts("A1:D1"));
39480a6f5c5SLiu Zhe 
39580a6f5c5SLiu Zhe         SCTool.selectRange("D2");
39680a6f5c5SLiu Zhe         typeKeys("99999.999<enter>");
39780a6f5c5SLiu Zhe         SCTool.selectRange("A2:D2");
39880a6f5c5SLiu Zhe         app.dispatch(".uno:FillLeft");
39980a6f5c5SLiu Zhe         assertArrayEquals("Fill left:", expected4, SCTool.getCellTexts("A2:D2"));
40080a6f5c5SLiu Zhe 
40180a6f5c5SLiu Zhe         SCTool.selectRange("E1");
40280a6f5c5SLiu Zhe         typeKeys("99999.999<tab>-10<enter>");
40380a6f5c5SLiu Zhe 
40480a6f5c5SLiu Zhe         SCTool.selectRange("E1:F5");
40580a6f5c5SLiu Zhe         app.dispatch(".uno:FillSeries");
40680a6f5c5SLiu Zhe         fillSeriesDlg.ok();
40780a6f5c5SLiu Zhe         sleep(1);
40880a6f5c5SLiu Zhe         assertArrayEquals("Fill series..", expected5, SCTool.getCellTexts("E1:F5"));
40980a6f5c5SLiu Zhe         discard();
41080a6f5c5SLiu Zhe     }
41180a6f5c5SLiu Zhe 
41280a6f5c5SLiu Zhe     @Test
testSort()41380a6f5c5SLiu Zhe     public void testSort() {
41480a6f5c5SLiu Zhe         String[][] expected1 = new String[][] { { "-9999999" }, { "-1.1" }, { "-1.1" }, { "0" }, { "0" }, { "0.1" }, { "10" }, { "12" }, { "9999999" }, { "9999999" },
41580a6f5c5SLiu Zhe 
41680a6f5c5SLiu Zhe         };
41780a6f5c5SLiu Zhe         String[][] expected2 = new String[][] { { "TRUE", "Oracle" }, { "TRUE", "OpenOffice" }, { "FALSE", "OpenOffice" }, { "TRUE", "IBM" }, { "FALSE", "IBM" },
41880a6f5c5SLiu Zhe                 { "TRUE", "Google" }, { "FALSE", "facebook " }, { "TRUE", "Apache" }, { "TRUE", "!yahoo" }, { "TRUE", "" },
41980a6f5c5SLiu Zhe 
42080a6f5c5SLiu Zhe         };
42180a6f5c5SLiu Zhe 
42280a6f5c5SLiu Zhe         String[][] expected3 = new String[][] { { "Sunday" }, { "Monday" }, { "Tuesday" }, { "Wednesday" }, { "Thursday" }, { "Friday" }, { "Saturday" },
42380a6f5c5SLiu Zhe 
42480a6f5c5SLiu Zhe         };
42580a6f5c5SLiu Zhe 
42680a6f5c5SLiu Zhe         String[][] expected4 = new String[][] { { "-$10.00" }, { "$0.00" }, { "$0.00" }, { "$1.00" }, { "$3.00" }, { "$9.00" }, { "$123.00" }, { "$200.00" }, { "$400.00" },
42780a6f5c5SLiu Zhe                 { "$10,000.00" },
42880a6f5c5SLiu Zhe 
42980a6f5c5SLiu Zhe         };
43080a6f5c5SLiu Zhe         open(prepareData("bvt/sort.ods"));
43180a6f5c5SLiu Zhe         calc.waitForExistence(10, 2);
43280a6f5c5SLiu Zhe         SCTool.selectRange("A1:A10");
43380a6f5c5SLiu Zhe         app.dispatch(".uno:DataSort");
43480a6f5c5SLiu Zhe         sortWarningDlgCurrent.click();
43580a6f5c5SLiu Zhe         assertEquals(1, sortPageBy1.getSelIndex());
43680a6f5c5SLiu Zhe         sortPage.ok();
43780a6f5c5SLiu Zhe         sleep(1);
43880a6f5c5SLiu Zhe         assertArrayEquals("Sorted Data", expected1, SCTool.getCellTexts("A1:A10"));
43980a6f5c5SLiu Zhe         SCTool.selectRange("B1:C10");
44080a6f5c5SLiu Zhe         app.dispatch(".uno:DataSort");
44180a6f5c5SLiu Zhe 
44280a6f5c5SLiu Zhe         sortPageBy1.select(2);
44380a6f5c5SLiu Zhe         sortPageDescending1.check();
44480a6f5c5SLiu Zhe         assertFalse(sortPageBy3.isEnabled());
44580a6f5c5SLiu Zhe         assertFalse(sortPageAscending3.isEnabled());
44680a6f5c5SLiu Zhe         assertFalse(sortPageDescending3.isEnabled());
44780a6f5c5SLiu Zhe         sortPageBy2.select(1);
44880a6f5c5SLiu Zhe         assertTrue(sortPageBy3.isEnabled());
44980a6f5c5SLiu Zhe         assertTrue(sortPageAscending3.isEnabled());
45080a6f5c5SLiu Zhe         assertTrue(sortPageDescending3.isEnabled());
45180a6f5c5SLiu Zhe         sortPageDescending2.check();
45280a6f5c5SLiu Zhe         sortPageBy2.select(0);
45380a6f5c5SLiu Zhe         assertFalse(sortPageBy3.isEnabled());
45480a6f5c5SLiu Zhe         assertFalse(sortPageAscending3.isEnabled());
45580a6f5c5SLiu Zhe         assertFalse(sortPageDescending3.isEnabled());
45680a6f5c5SLiu Zhe         sortPageBy2.select(1);
45780a6f5c5SLiu Zhe         sortPage.ok();
45880a6f5c5SLiu Zhe         sleep(1);
45980a6f5c5SLiu Zhe 
46080a6f5c5SLiu Zhe         assertArrayEquals("Sorted Data", expected2, SCTool.getCellTexts("B1:C10"));
46180a6f5c5SLiu Zhe         SCTool.selectRange("D1:D7");
46280a6f5c5SLiu Zhe         app.dispatch(".uno:DataSort");
46380a6f5c5SLiu Zhe         sortWarningDlgCurrent.click();
46480a6f5c5SLiu Zhe         sortOptionsPage.select();
46580a6f5c5SLiu Zhe         sortOptionsPageRangeContainsColumnLabels.uncheck();
46680a6f5c5SLiu Zhe         sortOptionsPageCustomSortOrder.check();
46780a6f5c5SLiu Zhe         sortOptionsPageCustomSortOrderList.select("Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday");
46880a6f5c5SLiu Zhe         sortOptionsPage.ok();
46980a6f5c5SLiu Zhe         sleep(1);
47080a6f5c5SLiu Zhe         assertArrayEquals("Sorted Data", expected3, SCTool.getCellTexts("D1:D7"));
47180a6f5c5SLiu Zhe 
47280a6f5c5SLiu Zhe         SCTool.selectRange("E1:E10");
47380a6f5c5SLiu Zhe         app.dispatch(".uno:DataSort");
47480a6f5c5SLiu Zhe         sortWarningDlgCurrent.click();
47580a6f5c5SLiu Zhe         sortPage.ok();
47680a6f5c5SLiu Zhe         sleep(1);
47780a6f5c5SLiu Zhe         assertArrayEquals("Sorted Data", expected4, SCTool.getCellTexts("E1:E10"));
47880a6f5c5SLiu Zhe         discard();
47980a6f5c5SLiu Zhe     }
48080a6f5c5SLiu Zhe 
48180a6f5c5SLiu Zhe     /**
48280a6f5c5SLiu Zhe      * Test insert a chart in a draw document 1. New a draw document 2. Insert a
48380a6f5c5SLiu Zhe      * chart 3. Check if the chart is inserted successfully
48480a6f5c5SLiu Zhe      *
48580a6f5c5SLiu Zhe      * @throws Exception
48680a6f5c5SLiu Zhe      */
48780a6f5c5SLiu Zhe     @Test
testInsertChartInDraw()48880a6f5c5SLiu Zhe     public void testInsertChartInDraw() throws Exception {
48980a6f5c5SLiu Zhe         // Create a new drawing document
49080a6f5c5SLiu Zhe         newDrawing();
49180a6f5c5SLiu Zhe         // Insert a chart
49280a6f5c5SLiu Zhe         app.dispatch(".uno:InsertObjectChart");
49380a6f5c5SLiu Zhe         sleep(3);
49480a6f5c5SLiu Zhe 
49580a6f5c5SLiu Zhe         // Verify if the chart is inserted successfully
49680a6f5c5SLiu Zhe         assertTrue("Chart Editor appears", chart.exists(3));
49780a6f5c5SLiu Zhe         // Focus on edit pane
49880a6f5c5SLiu Zhe         draw.click(5, 5);
49980a6f5c5SLiu Zhe         sleep(1);
50080a6f5c5SLiu Zhe         assertFalse("Chart Editor appears", chart.exists());
50180a6f5c5SLiu Zhe         discard();
50280a6f5c5SLiu Zhe     }
50380a6f5c5SLiu Zhe 
50480a6f5c5SLiu Zhe     /**
50580a6f5c5SLiu Zhe      * Test insert a chart in a text document 1. New a text document 2. Insert a
50680a6f5c5SLiu Zhe      * chart 3. Check if the chart is inserted successfully
50780a6f5c5SLiu Zhe      *
50880a6f5c5SLiu Zhe      * @throws Exception
50980a6f5c5SLiu Zhe      */
51080a6f5c5SLiu Zhe     @Test
testInsertChartInDocument()51180a6f5c5SLiu Zhe     public void testInsertChartInDocument() throws Exception {
51280a6f5c5SLiu Zhe         // Create a new text document
51380a6f5c5SLiu Zhe         newTextDocument();
51480a6f5c5SLiu Zhe         // Insert a chart
51580a6f5c5SLiu Zhe         app.dispatch(".uno:InsertObjectChart");
51680a6f5c5SLiu Zhe         sleep(3);
51780a6f5c5SLiu Zhe 
51880a6f5c5SLiu Zhe         // Verify if the chart is inserted successfully
51980a6f5c5SLiu Zhe         assertTrue("Chart Editor appears", chart.exists(3));
52080a6f5c5SLiu Zhe         // Focus on edit pane
52180a6f5c5SLiu Zhe         writer.click(5, 5);
52280a6f5c5SLiu Zhe         sleep(1);
52380a6f5c5SLiu Zhe         assertFalse("Chart Editor appears", chart.exists());
52480a6f5c5SLiu Zhe         discard();
52580a6f5c5SLiu Zhe     }
52680a6f5c5SLiu Zhe 
52780a6f5c5SLiu Zhe     /**
52880a6f5c5SLiu Zhe      * Test insert a chart in a spreadsheet document 1. New a spreadsheet
52980a6f5c5SLiu Zhe      * document 2. Insert a chart 3. Check if the chart is inserted successfully
53080a6f5c5SLiu Zhe      *
53180a6f5c5SLiu Zhe      * @throws Exception
53280a6f5c5SLiu Zhe      */
53380a6f5c5SLiu Zhe     @Test
testInsertChartInSpreadsheet()53480a6f5c5SLiu Zhe     public void testInsertChartInSpreadsheet() throws Exception {
53580a6f5c5SLiu Zhe         // Create a new spreadsheet document
53680a6f5c5SLiu Zhe         newSpreadsheet();
53780a6f5c5SLiu Zhe         // Insert a chart
53880a6f5c5SLiu Zhe         app.dispatch(".uno:InsertObjectChart");
53980a6f5c5SLiu Zhe         sleep(3);
54080a6f5c5SLiu Zhe         chartWizard.ok();
54180a6f5c5SLiu Zhe 
54280a6f5c5SLiu Zhe         // Verify if the chart is inserted successfully
54380a6f5c5SLiu Zhe         assertTrue("Chart Editor appears", chart.exists(3));
54480a6f5c5SLiu Zhe         // Focus on edit pane
54580a6f5c5SLiu Zhe         calc.click(5, 5);
54680a6f5c5SLiu Zhe         sleep(1);
54780a6f5c5SLiu Zhe         assertFalse("Chart Editor appears", chart.exists());
54880a6f5c5SLiu Zhe         discard();
54980a6f5c5SLiu Zhe     }
55080a6f5c5SLiu Zhe 
55180a6f5c5SLiu Zhe     /**
55280a6f5c5SLiu Zhe      * Test insert a chart in a presentation document 1. New a presentation
55380a6f5c5SLiu Zhe      * document 2. Insert a chart 3. Check if the chart is inserted successfully
55480a6f5c5SLiu Zhe      *
55580a6f5c5SLiu Zhe      * @throws Exception
55680a6f5c5SLiu Zhe      */
55780a6f5c5SLiu Zhe     @Test
testInsertChartInPresentation()55880a6f5c5SLiu Zhe     public void testInsertChartInPresentation() throws Exception {
55980a6f5c5SLiu Zhe         // Create a new presentation document
56080a6f5c5SLiu Zhe         newPresentation();
56180a6f5c5SLiu Zhe         // Insert a chart
56280a6f5c5SLiu Zhe         app.dispatch(".uno:InsertObjectChart");
56380a6f5c5SLiu Zhe         sleep(3);
56480a6f5c5SLiu Zhe         // Verify if the chart is inserted successfully
56580a6f5c5SLiu Zhe         assertTrue("Chart Editor appears", chart.exists(3));
56680a6f5c5SLiu Zhe         // Focus on edit pane
56780a6f5c5SLiu Zhe         impress.click(5, 5);
56880a6f5c5SLiu Zhe         sleep(1);
56980a6f5c5SLiu Zhe         assertFalse("Chart Editor appears", chart.exists());
57080a6f5c5SLiu Zhe         discard();
57180a6f5c5SLiu Zhe     }
57280a6f5c5SLiu Zhe 
57380a6f5c5SLiu Zhe     /**
57480a6f5c5SLiu Zhe      * Test insert a table in a draw document 1. New a draw document 2. Insert a
57580a6f5c5SLiu Zhe      * default table 3. Check if the table is inserted successfully
57680a6f5c5SLiu Zhe      *
57780a6f5c5SLiu Zhe      * @throws Exception
57880a6f5c5SLiu Zhe      */
57980a6f5c5SLiu Zhe     @Test
testInsertTableInDraw()58080a6f5c5SLiu Zhe     public void testInsertTableInDraw() throws Exception {
58180a6f5c5SLiu Zhe         // Create a new drawing document
58280a6f5c5SLiu Zhe         newDrawing();
58380a6f5c5SLiu Zhe         // Insert a table
58480a6f5c5SLiu Zhe         app.dispatch(".uno:InsertTable");
58580a6f5c5SLiu Zhe         insertTable.ok();
58680a6f5c5SLiu Zhe         sleep(1);
58780a6f5c5SLiu Zhe         draw.typeKeys("3");
58880a6f5c5SLiu Zhe         assertTrue("Table Toolbar appears", tableToolbar.exists(3));
58980a6f5c5SLiu Zhe //      assertEquals("The cell content", "3", copyAll());
59080a6f5c5SLiu Zhe         discard();
59180a6f5c5SLiu Zhe     }
59280a6f5c5SLiu Zhe 
59380a6f5c5SLiu Zhe     /**
59480a6f5c5SLiu Zhe      * Test insert a table in a text document 1. New a text document 2. Insert a
59580a6f5c5SLiu Zhe      * default table 3. Check if the table is inserted successfully
59680a6f5c5SLiu Zhe      *
59780a6f5c5SLiu Zhe      * @throws Exception
59880a6f5c5SLiu Zhe      */
59980a6f5c5SLiu Zhe     @Test
testInsertTableInDocument()60080a6f5c5SLiu Zhe     public void testInsertTableInDocument() throws Exception {
60180a6f5c5SLiu Zhe         // Create a new text document
60280a6f5c5SLiu Zhe         newTextDocument();
60380a6f5c5SLiu Zhe         // Insert a table
60480a6f5c5SLiu Zhe         app.dispatch(".uno:InsertTable");
60580a6f5c5SLiu Zhe         writerInsertTable.ok();
60680a6f5c5SLiu Zhe         sleep(1);
60780a6f5c5SLiu Zhe         writer.typeKeys("3");
60880a6f5c5SLiu Zhe         // Verify if the table toolbar is active
60980a6f5c5SLiu Zhe         assertTrue("Table Toolbar appears", tableToolbar.exists(3));
61080a6f5c5SLiu Zhe //      assertEquals("The cell content", "3", copyAll());
61180a6f5c5SLiu Zhe         discard();
61280a6f5c5SLiu Zhe     }
61380a6f5c5SLiu Zhe 
61480a6f5c5SLiu Zhe     /**
61580a6f5c5SLiu Zhe      * Test insert a table in a presentation document 1. New a presentation
61680a6f5c5SLiu Zhe      * document 2. Insert a default table 3. Check if the table is inserted
61780a6f5c5SLiu Zhe      * successfully
61880a6f5c5SLiu Zhe      *
61980a6f5c5SLiu Zhe      * @throws Exception
62080a6f5c5SLiu Zhe      */
62180a6f5c5SLiu Zhe     @Test
testInsertTableInPresentation()62280a6f5c5SLiu Zhe     public void testInsertTableInPresentation() throws Exception {
62380a6f5c5SLiu Zhe         // Create a new presentation document
62480a6f5c5SLiu Zhe         newPresentation();
62580a6f5c5SLiu Zhe 
62680a6f5c5SLiu Zhe         // Insert a table
62780a6f5c5SLiu Zhe         app.dispatch(".uno:InsertTable");
62880a6f5c5SLiu Zhe         insertTable.ok();
62980a6f5c5SLiu Zhe         sleep(1);
63080a6f5c5SLiu Zhe         impress.typeKeys("3");
63180a6f5c5SLiu Zhe         assertTrue("Table Toolbar appears", tableToolbar.exists(3));
63280a6f5c5SLiu Zhe //      assertEquals("The cell content", "3", copyAll());
63380a6f5c5SLiu Zhe         discard();
63480a6f5c5SLiu Zhe     }
63580a6f5c5SLiu Zhe 
63680a6f5c5SLiu Zhe     /**
63780a6f5c5SLiu Zhe      * Test insert a function in a spreadsheet document via Sum button 1. New a
63880a6f5c5SLiu Zhe      * spreadsheet document 2. Insert a function via Sum button 3. Check if the
63980a6f5c5SLiu Zhe      * result is correct
64080a6f5c5SLiu Zhe      *
64180a6f5c5SLiu Zhe      * @throws Exception
64280a6f5c5SLiu Zhe      */
64380a6f5c5SLiu Zhe     @Test
testSumInFormulaBar()64480a6f5c5SLiu Zhe     public void testSumInFormulaBar() throws Exception {
64580a6f5c5SLiu Zhe         // Create a new spreadsheet document
64680a6f5c5SLiu Zhe         newSpreadsheet();
64780a6f5c5SLiu Zhe         // Insert source numbers
64880a6f5c5SLiu Zhe         String sourceNumber1 = "5";
64980a6f5c5SLiu Zhe         String sourceNumber2 = "3";
65080a6f5c5SLiu Zhe         String expectedResult = "8";
65180a6f5c5SLiu Zhe         SCTool.selectRange("A1");
65280a6f5c5SLiu Zhe         typeKeys(sourceNumber1);
65380a6f5c5SLiu Zhe         SCTool.selectRange("B1");
65480a6f5c5SLiu Zhe         typeKeys(sourceNumber2);
65580a6f5c5SLiu Zhe         // Insert a function via Sum button
65680a6f5c5SLiu Zhe         SCTool.selectRange("C1");
65780a6f5c5SLiu Zhe         scInputBarSum.click();
65880a6f5c5SLiu Zhe         typeKeys("<enter>");
65980a6f5c5SLiu Zhe         // Verify if the calculated result is equal to the expected result
66080a6f5c5SLiu Zhe         assertEquals("The calculated result", expectedResult, SCTool.getCellText("C1"));
66180a6f5c5SLiu Zhe         discard();
66280a6f5c5SLiu Zhe     }
66380a6f5c5SLiu Zhe 
66480a6f5c5SLiu Zhe     /**
66580a6f5c5SLiu Zhe      * Test insert a function in a spreadsheet document via inputbar 1. New a
66680a6f5c5SLiu Zhe      * spreadsheet document 2. Insert a function via inputbar: COS 3. Check if
66780a6f5c5SLiu Zhe      * the result is correct
66880a6f5c5SLiu Zhe      *
66980a6f5c5SLiu Zhe      * @throws Exception
67080a6f5c5SLiu Zhe      */
67180a6f5c5SLiu Zhe     @Test
testInsertFunctionViaFormulaBar()67280a6f5c5SLiu Zhe     public void testInsertFunctionViaFormulaBar() throws Exception {
67380a6f5c5SLiu Zhe         // Create a new spreadsheet document
67480a6f5c5SLiu Zhe         newSpreadsheet();
67580a6f5c5SLiu Zhe         // Insert source numbers and expected result
67680a6f5c5SLiu Zhe         String sourceData = "0";
67780a6f5c5SLiu Zhe         String expectedResult = "1";
67880a6f5c5SLiu Zhe         SCTool.selectRange("A1");
67980a6f5c5SLiu Zhe         typeKeys(sourceData);
68080a6f5c5SLiu Zhe 
68180a6f5c5SLiu Zhe         // Insert a function via inputbar: COS
68280a6f5c5SLiu Zhe         SCTool.selectRange("D1");
68380a6f5c5SLiu Zhe         scInputBarInput.inputKeys("=COS(A1)");
68480a6f5c5SLiu Zhe         typeKeys("<enter>");
685882d61ebSCarl Marcum         sleep(1);
68680a6f5c5SLiu Zhe         // Verify if the calculated result is equal to the expected result
687882d61ebSCarl Marcum         String result = SCTool.getCellText("D1");
688882d61ebSCarl Marcum         sleep(1);
689882d61ebSCarl Marcum         assertEquals("The calculated result", expectedResult, result);
69080a6f5c5SLiu Zhe         discard();
69180a6f5c5SLiu Zhe     }
69280a6f5c5SLiu Zhe 
69380a6f5c5SLiu Zhe     /**
69480a6f5c5SLiu Zhe      * Test insert a function in a spreadsheet document via Function Wizard
69580a6f5c5SLiu Zhe      * Dialog 1. New a spreadsheet document 2. Insert a function via Function
69680a6f5c5SLiu Zhe      * Wizard Dialog: ABS 3. Check if the result is correct
69780a6f5c5SLiu Zhe      *
69880a6f5c5SLiu Zhe      * @throws Exception
69980a6f5c5SLiu Zhe      */
70080a6f5c5SLiu Zhe     @Test
testFunctionWizardInFormulaBar()70180a6f5c5SLiu Zhe     public void testFunctionWizardInFormulaBar() throws Exception {
70280a6f5c5SLiu Zhe         // Create a new spreadsheet document
70380a6f5c5SLiu Zhe         newSpreadsheet();
70480a6f5c5SLiu Zhe         // Insert source number
70580a6f5c5SLiu Zhe         String sourceNumber = "-5";
70680a6f5c5SLiu Zhe         String expectedResult = "5";
70780a6f5c5SLiu Zhe         SCTool.selectRange("A1");
70880a6f5c5SLiu Zhe         typeKeys(sourceNumber);
70980a6f5c5SLiu Zhe         typeKeys("<enter>");
71080a6f5c5SLiu Zhe         // Insert a function via Function Wizard Dialog: ABS
71180a6f5c5SLiu Zhe         SCTool.selectRange("B1");
71280a6f5c5SLiu Zhe         app.dispatch(".uno:FunctionDialog");
71380a6f5c5SLiu Zhe         // SC_FunctionWizardDlg_FunctionList.doubleClick(5, 5);
71480a6f5c5SLiu Zhe         scFunctionWizardDlgFunctionList.select("ABS");
71580a6f5c5SLiu Zhe         scFunctionWizardDlgNext.click(); // Use "Next" button
716f9b06548Sdamjan         scFunctionWizardDlgEdit1.typeKeys("A1");
717882d61ebSCarl Marcum         sleep(1);
71880a6f5c5SLiu Zhe         scFunctionWizardDlg.ok();
719882d61ebSCarl Marcum         sleep(1);
72080a6f5c5SLiu Zhe         // Verify if the calculated result is equal to the expected result
721882d61ebSCarl Marcum         String result = SCTool.getCellText("B1");
722882d61ebSCarl Marcum         sleep(1);
723882d61ebSCarl Marcum         assertEquals("The calculated result", expectedResult, result);
72480a6f5c5SLiu Zhe         discard();
72580a6f5c5SLiu Zhe     }
726be190f59SCarl Marcum 
727be190f59SCarl Marcum     /**
728be190f59SCarl Marcum      * Test open a non-http(s) type hyperlink (with host only) in a text document.
729be190f59SCarl Marcum      * (coverage included in fvt.gui.sw.hyperlink.WarningDialog
730be190f59SCarl Marcum      * testHyperlinkDisplaysWarning() and included here for build verification)
731be190f59SCarl Marcum      * 1. New a text document
732be190f59SCarl Marcum      * 2. Insert a dav type hyperlink
733be190f59SCarl Marcum      * 3. Open hyperlink
734be190f59SCarl Marcum      * 4. Verify security warning dialog is displayed
735be190f59SCarl Marcum      *
736be190f59SCarl Marcum      * @throws Exception
737be190f59SCarl Marcum      */
738be190f59SCarl Marcum     @Test
testNonHttpHyperlinkWithHostOnly()739be190f59SCarl Marcum     public void testNonHttpHyperlinkWithHostOnly() throws Exception {
740be190f59SCarl Marcum         // Create a new text document
741be190f59SCarl Marcum         newTextDocument();
742be190f59SCarl Marcum         writer.waitForExistence(10, 2);
743be190f59SCarl Marcum         // open the hyperlink dialog
744be190f59SCarl Marcum         writer.typeKeys("<alt i>"); // insert menu
745be190f59SCarl Marcum         writer.typeKeys("h"); // hyperlink
746be190f59SCarl Marcum         hyperlinkInetPathComboBox.setText("dav://nonexistant.url.com"); //target
747be190f59SCarl Marcum         hyperlinkInetText.setText("dav://nonexistant.url.com"); // displayed text
748be190f59SCarl Marcum         hyperlinkDialogOkBtn.click(); // apply
749be190f59SCarl Marcum         hyperlinkDialogCancelBtn.click(); // close
750be190f59SCarl Marcum         sleep(1); // give the dialog time to close
751be190f59SCarl Marcum         typeKeys("<shift F10>"); // context menu
752be190f59SCarl Marcum         typeKeys("o"); // open hyperlink
753be190f59SCarl Marcum         // we can't be sure of the language so just check for the dialog
754be190f59SCarl Marcum         boolean msgExists = activeMsgBox.exists(1); // wait 1 second for the dialog
755be190f59SCarl Marcum         if (msgExists) {
756be190f59SCarl Marcum             activeMsgBox.no(); // close dialog
757be190f59SCarl Marcum         }
758be190f59SCarl Marcum         assertTrue("security warning not displayed", msgExists);
759be190f59SCarl Marcum         discard();
760be190f59SCarl Marcum     }
761be190f59SCarl Marcum 
76280a6f5c5SLiu Zhe }
763