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