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