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 svt.gui.sw; 26 27 import static org.openoffice.test.common.Testspace.getFile; 28 import static org.openoffice.test.common.Testspace.getPath; 29 import static org.openoffice.test.common.Testspace.prepareData; 30 import static org.openoffice.test.vcl.Tester.*; 31 import static testlib.gui.AppTool.*; 32 import static testlib.gui.UIMap.*; 33 34 import java.io.FileOutputStream; 35 import java.io.PrintStream; 36 import java.util.HashMap; 37 38 import org.junit.After; 39 import org.junit.AfterClass; 40 import org.junit.Before; 41 import org.junit.BeforeClass; 42 import org.junit.Ignore; 43 import org.junit.Rule; 44 import org.junit.Test; 45 import org.junit.rules.TestName; 46 import org.openoffice.test.common.DataSheet; 47 import org.openoffice.test.common.FileUtil; 48 import org.openoffice.test.common.Logger; 49 import org.openoffice.test.common.SystemUtil; 50 import org.openoffice.test.common.Testspace; 51 52 public class BasicFuncOnWriter { 53 @Rule 54 public Logger log = Logger.getLogger(this); 55 56 @Rule 57 public TestName testname = new TestName(); 58 59 private static DataSheet xmlResult; 60 61 private String pid = null; 62 63 private static int iterator = 100; 64 65 private int i = 0; 66 67 /** 68 * @throws java.lang.Exception 69 */ 70 @BeforeClass 71 public static void beforeClass() throws Exception { 72 xmlResult = new DataSheet(getFile("output/svt.xml")); 73 xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)"); 74 } 75 76 @AfterClass 77 public static void afterClass() throws Exception { 78 app.stop(); 79 } 80 81 @Before 82 public void before()throws Exception{ 83 app.start(true); 84 } 85 86 @Test 87 public void saveNewSWWithPic() throws Exception { 88 String pic = prepareData("image/blue_256x256.jpg"); 89 for (i = 1; i <= iterator; i++) { 90 long start = System.currentTimeMillis(); 91 createNewSW(); 92 writer.menuItem("Insert->Picture->From File...").select(); 93 sleep(2); 94 filePickerPath.setText(pic); 95 sleep(1); 96 filePickerOpen.click(); 97 sleep(5); 98 typeKeys("<esc>"); 99 sleep(2); 100 saveAndReopenNewSW(i); 101 long end = System.currentTimeMillis(); 102 addRecord(i, start, end); 103 } 104 } 105 106 107 @Test 108 public void saveNewSWWithBullet() throws Exception { 109 for (i = 1; i <= iterator; i++) { 110 long start = System.currentTimeMillis(); 111 createNewSW(); 112 writer.typeKeys("The first"); 113 writer.typeKeys("<enter>"); 114 sleep(3); 115 writer.typeKeys("The second"); 116 app.dispatch(".uno:SelectAll"); 117 writer.menuItem("Format->Bullets and Numbering...").select(); 118 sleep(3); 119 bulletPage.ok(); 120 writer.typeKeys("<ctrl z"); 121 sleep(1); 122 writer.typeKeys("<ctrl y>"); 123 sleep(1); 124 writer.typeKeys("<ctrl end>"); 125 writer.typeKeys("<enter>"); 126 sleep(2); 127 128 writer.focus(); 129 saveAndReopenNewSW(i); 130 long end = System.currentTimeMillis(); 131 addRecord(i, start, end); 132 } 133 } 134 135 @Test 136 public void saveNewSWWithUnDoDelete()throws Exception{ 137 if(!sdDrawingToolbar.exists()){ 138 app.dispatch(".uno:AvailableToolbars?Toolbar:string=toolbar"); 139 } 140 for (i = 1; i <= iterator; i++) { 141 long start = System.currentTimeMillis(); 142 createNewSW(); 143 app.dispatch(".uno:Ellipse"); 144 writer.focus(); 145 writer.drag(200, 200, 300, 300); 146 typeKeys("<Delete>"); 147 typeKeys("<ctrl z>"); 148 typeKeys("<ctrl y>"); 149 150 saveAndReopenNewSW(i); 151 long end = System.currentTimeMillis(); 152 addRecord(i, start, end); 153 } 154 } 155 156 157 @Test 158 public void saveNewSWWithSpellCheck() throws Exception { 159 for (i = 1; i <= iterator; i++) { 160 long start = System.currentTimeMillis(); 161 createNewSW(); 162 writer.typeKeys("goood"); 163 sleep(2); 164 writer.menuItem("Tools->Spelling and Grammar...").select(); 165 sleep(2); 166 spellcheckDlgSuggestionList.select(0); 167 spellcheckDlgIgnoreOnce.click(); 168 activeMsgBox.ok(); 169 sleep(2); 170 saveAndReopenNewSW(i); 171 long end = System.currentTimeMillis(); 172 addRecord(i, start, end); 173 } 174 } 175 176 @Test 177 public void saveNewSWWithHeaderFooter() throws Exception { 178 for (i = 1; i <= iterator; i++) { 179 long start = System.currentTimeMillis(); 180 createNewSW(); 181 writer.menuItem("Insert->Header->Default").select(); 182 sleep(2); 183 writer.typeKeys("Header"); 184 sleep(2); 185 writer.menuItem("Insert->Footer->Default").select(); 186 sleep(2); 187 writer.typeKeys("Footer"); 188 sleep(2); 189 writer.typeKeys("<ctrl end>"); 190 sleep(2); 191 writer.typeKeys("<enter>"); 192 sleep(2); 193 saveAndReopenNewSW(i); 194 long end = System.currentTimeMillis(); 195 addRecord(i, start, end); 196 } 197 } 198 199 @Test 200 public void saveNewSWWithFrameAnchor() throws Exception { 201 for (i = 1; i <= iterator; i++) { 202 long start = System.currentTimeMillis(); 203 createNewSW(); 204 writer.menuItem("Insert->Frame...").select(); 205 sleep(2); 206 writerFrameDlg.ok(); 207 writer.menuItem("Format->Anchor->To Page").select(); 208 sleep(2); 209 writer.menuItem("Format->Anchor->To Paragraph").select(); 210 sleep(2); 211 writer.menuItem("Format->Anchor->To Character").select(); 212 sleep(2); 213 writer.menuItem("Format->Anchor->As Character").select(); 214 sleep(2); 215 writer.typeKeys("<esc>"); 216 sleep(2); 217 writer.typeKeys("<enter>"); 218 sleep(2); 219 saveAndReopenNewSW(i); 220 long end = System.currentTimeMillis(); 221 addRecord(i, start, end); 222 } 223 } 224 225 @Test 226 public void saveNewSWWithSDAsOLE()throws Exception{ 227 String linkFile = prepareData("pvt/plain_200p.odp"); 228 for (i = 1; i <= iterator; i++) { 229 long start = System.currentTimeMillis(); 230 createNewSW(); 231 app.dispatch(".uno:InsertObject"); 232 sleep(2); 233 insertObject.waitForExistence(60, 2); 234 objectFromFile.check(); 235 objectFilePath.setText(linkFile); 236 objectFileLink.check(); 237 insertObject.ok(); 238 sleep(10); 239 240 writer.focus(); 241 writer.doubleClick(200, 300); 242 sleep(15); 243 writer.activate(); 244 writer.click(10, 10); 245 sleep(5); 246 247 saveAndReopenNewSW(i); 248 long end = System.currentTimeMillis(); 249 addRecord(i, start, end); 250 } 251 } 252 253 @Test 254 public void saveNewSWWithTOC() throws Exception { 255 for (i = 1; i <= iterator; i++) { 256 long start = System.currentTimeMillis(); 257 createNewSW(); 258 for (int j = 0; j < 6; j++) { 259 writer.typeKeys(String.valueOf(j + 1)); 260 writer.typeKeys("<enter>"); 261 } 262 writer.typeKeys("<ctrl home>"); 263 for (int k = 0; k < 2; k++) { 264 writer.typeKeys("<shift down>"); 265 } 266 if (!styleAndFormattingDlg.exists()) { 267 app.dispatch(".uno:DesignerDialog"); 268 sleep(2); 269 } 270 271 styleAndFormattingList.doubleClick(0.5, 0.25); 272 sleep(2); 273 writer.typeKeys("<down>"); 274 writer.typeKeys("<right>"); 275 writer.typeKeys("<left>"); 276 for (int k = 0; k < 2; k++) { 277 writer.typeKeys("<shift down>"); 278 } 279 styleAndFormattingList.doubleClick(0.5, 0.3); 280 sleep(2); 281 writer.typeKeys("<ctrl home>"); 282 sleep(2); 283 writer.menuItem("Insert->Indexes and Tables->Indexes and Tables...").select(); 284 sleep(2); 285 insertIndexDlg.ok(); 286 sleep(2); 287 writer.typeKeys("<ctrl end>"); 288 saveAndReopenNewSW(i); 289 long end = System.currentTimeMillis(); 290 addRecord(i, start, end); 291 } 292 } 293 294 @Test 295 public void splitMergeTableOnOpenedSW() throws Exception { 296 String file = prepareData("svt/swdesign.odt"); 297 for (i = 1; i <= iterator; i++) { 298 long start = System.currentTimeMillis(); 299 app.dispatch(".uno:Open"); 300 submitOpenDlg(file); 301 writer.waitForExistence(10, 2); 302 writer.typeKeys("<down>"); 303 writer.typeKeys("<down>"); 304 sleep(2); 305 306 writer.menuItem("Table->Split Cells").select(); 307 sleep(2); 308 writerSplitCellDlg.ok(); 309 sleep(2); 310 311 writer.typeKeys("<shift down>"); 312 writer.typeKeys("<shift down>"); 313 writer.typeKeys("<shift down>"); 314 writer.typeKeys("<shift down>"); 315 writer.typeKeys("<shift down>"); 316 sleep(2); 317 writer.menuItem("Table->Merge Cells").select(); 318 sleep(2); 319 320 writer.typeKeys("<enter>"); 321 closeWithoutSaveSW(); 322 long end = System.currentTimeMillis(); 323 addRecord(i, start, end); 324 } 325 } 326 327 @Test 328 public void addDelColumnsRowsInTableOnOpenedSW() throws Exception { 329 String file = prepareData("svt/swdesign.odt"); 330 for (i = 1; i <= iterator; i++) { 331 long start = System.currentTimeMillis(); 332 app.dispatch(".uno:Open"); 333 submitOpenDlg(file); 334 writer.waitForExistence(10, 2); 335 writer.typeKeys("<down>"); 336 writer.typeKeys("<down>"); 337 sleep(2); 338 339 app.dispatch(".uno:InsertRowDialog"); 340 writerInsertRowsDlg.ok(); 341 sleep(2); 342 343 writer.menuItem("Table->Delete->Rows").select(); 344 sleep(2); 345 346 app.dispatch(".uno:InsertColumnDialog"); 347 writerInsertColumnsDlg.ok(); 348 sleep(2); 349 350 writer.menuItem("Table->Delete->Columns").select(); 351 sleep(2); 352 353 closeWithoutSaveSW(); 354 long end = System.currentTimeMillis(); 355 addRecord(i, start, end); 356 } 357 } 358 359 @Test 360 public void setParaPropertoesOnOpenedSW() throws Exception { 361 String file = prepareData("pvt/plain_200p.odt"); 362 for (i = 1; i <= iterator; i++) { 363 long start = System.currentTimeMillis(); 364 app.dispatch(".uno:Open"); 365 submitOpenDlg(file); 366 writer.waitForExistence(10, 2); 367 writer.focus(); 368 app.dispatch(".uno:ParagraphDialog"); 369 alignPage.select(); 370 alignPageRight.check(); 371 sleep(2); 372 alignPageVerticalAlign.select("Bottom"); 373 sleep(2); 374 alignPage.ok(); 375 sleep(2); 376 writer.typeKeys("<ctrl end>"); 377 sleep(5); 378 379 closeWithoutSaveSW(); 380 long end = System.currentTimeMillis(); 381 addRecord(i, start, end); 382 } 383 } 384 385 @Test 386 public void InsertPicToOpenedSW() throws Exception { 387 String file = prepareData("pvt/plain_200p.odt"); 388 String pic = prepareData("image/blue_256x256.jpg"); 389 for (i = 1; i <= iterator; i++) { 390 long start = System.currentTimeMillis(); 391 app.dispatch(".uno:Open"); 392 submitOpenDlg(file); 393 writer.waitForExistence(10, 2); 394 writer.focus(); 395 writer.menuItem("Insert->Picture->From File...").select(); 396 sleep(2); 397 filePickerPath.setText(pic); 398 sleep(1); 399 filePickerOpen.click(); 400 sleep(5); 401 writer.typeKeys("<esc>"); 402 sleep(2); 403 closeWithoutSaveSW(); 404 long end = System.currentTimeMillis(); 405 addRecord(i, start, end); 406 } 407 } 408 409 @Test 410 public void InsertOLEToOpenedSW() throws Exception { 411 String file = prepareData("pvt/plain_200p.odt"); 412 for (i = 1; i <= iterator; i++) { 413 long start = System.currentTimeMillis(); 414 app.dispatch(".uno:Open"); 415 submitOpenDlg(file); 416 writer.waitForExistence(10, 2); 417 writer.focus(); 418 app.dispatch(".uno:InsertObject"); 419 sleep(2); 420 insertObject.ok(); 421 sleep(10); 422 typeKeys("<esc>"); 423 sleep(5); 424 typeKeys("<esc>"); 425 sleep(5); 426 closeWithoutSaveSW(); 427 long end = System.currentTimeMillis(); 428 addRecord(i, start, end); 429 } 430 } 431 432 @Test 433 public void InsertChartToOpenedSW() throws Exception { 434 String file = prepareData("pvt/plain_200p.odt"); 435 for (i = 1; i <= iterator; i++) { 436 long start = System.currentTimeMillis(); 437 app.dispatch(".uno:Open"); 438 submitOpenDlg(file); 439 writer.waitForExistence(10, 2); 440 writer.focus(); 441 app.dispatch(".uno:InsertObjectChart"); 442 // writer.menuItem("Insert->Object->Chart...").select(); 443 sleep(5); 444 typeKeys("<esc>"); 445 sleep(5); 446 typeKeys("<esc>"); 447 sleep(5); 448 typeKeys("<esc>"); 449 sleep(5); 450 closeWithoutSaveSW(); 451 long end = System.currentTimeMillis(); 452 addRecord(i, start, end); 453 } 454 } 455 456 @Test 457 public void openSWWithXForm()throws Exception{ 458 String file = prepareData("svt/sickness_self-certification_meory issue.odt"); 459 for (i = 1; i <= iterator; i++) { 460 long start = System.currentTimeMillis(); 461 app.dispatch(".uno:Open"); 462 submitOpenDlg(file); 463 writer.waitForExistence(10, 2); 464 app.dispatch(".uno:CloseDoc"); 465 466 long end = System.currentTimeMillis(); 467 addRecord(i, start, end); 468 } 469 } 470 471 @Test 472 public void openSWWithSecuritySignature()throws Exception{ 473 String file = prepareData("svt/howtouse.odt"); 474 for (i = 1; i <= iterator; i++) { 475 long start = System.currentTimeMillis(); 476 app.dispatch(".uno:Open"); 477 submitOpenDlg(file); 478 writer.waitForExistence(10, 2); 479 app.dispatch(".uno:CloseDoc"); 480 481 long end = System.currentTimeMillis(); 482 addRecord(i, start, end); 483 } 484 } 485 486 487 private void createNewSW() { 488 app.dispatch("private:factory/swriter"); 489 } 490 491 private void saveAndReopenNewSW(int iterator) { 492 String saveTo = getPath("temp/" + "tempSW_New" + iterator + ".odt"); 493 writer.menuItem("File->Save As...").select(); 494 FileUtil.deleteFile(saveTo); 495 submitSaveDlg(saveTo); 496 if (activeMsgBox.exists()) { 497 activeMsgBox.yes(); 498 sleep(2); 499 } 500 app.dispatch(".uno:CloseDoc"); 501 startCenterOpenButton.waitForExistence(30, 2); 502 startCenterOpenButton.click(); 503 submitOpenDlg(saveTo); 504 sleep(1); 505 app.dispatch(".uno:CloseDoc"); 506 } 507 508 private void closeWithoutSaveSW() { 509 writer.menuItem("File->Close").select(); 510 if (activeMsgBox.exists()) { 511 activeMsgBox.no(); 512 sleep(2); 513 } 514 } 515 516 private void addRecord(int i, long start, long end) { 517 HashMap<String, Object> perf = aoo.getPerfData(); 518 xmlResult.addRow("Data",testname.getMethodName(), i, (end - start), 519 perf.get("vsz"), perf.get("rss"), perf.get("handles")); 520 } 521 522 } 523