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 package svt.gui.sd; 27 28 import static org.junit.Assert.assertEquals; 29 import static org.openoffice.test.common.Testspace.*; 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.OpenOffice; 47 import org.openoffice.test.common.DataSheet; 48 import org.openoffice.test.common.FileUtil; 49 import org.openoffice.test.common.Logger; 50 import org.openoffice.test.common.SystemUtil; 51 import org.openoffice.test.common.Testspace; 52 53 import testlib.gui.SCTool; 54 55 public class BasicFuncOnImpress { 56 @Rule 57 public Logger log = Logger.getLogger(this); 58 59 @Rule 60 public TestName testname = new TestName(); 61 62 private static DataSheet xmlResult; 63 64 private String pid = null; 65 66 private static int iterator = 100; 67 68 private int i = 0; 69 70 /** 71 * @throws java.lang.Exception 72 */ 73 @BeforeClass 74 public static void beforeClass() throws Exception { 75 xmlResult = new DataSheet(getFile("output/svt_impress.xml")); 76 xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)"); 77 } 78 79 @AfterClass 80 public static void afterClass() throws Exception { 81 app.stop(); 82 } 83 84 @Before 85 public void before() throws Exception{ 86 app.start(true); 87 } 88 89 @Test 90 public void saveNewSDWithNewSlides() throws Exception { 91 for (i = 1; i <= iterator; i++) { 92 long start = System.currentTimeMillis(); 93 createNewSD(); 94 impress.menuItem("Insert->Slide").select(); 95 sleep(2); 96 saveAndReopenNewSD(i); 97 long end = System.currentTimeMillis(); 98 addRecord(i, start, end); 99 } 100 } 101 102 @Test 103 public void saveNewSDWithTable() throws Exception { 104 for (i = 1; i <= iterator; i++) { 105 long start = System.currentTimeMillis(); 106 createNewSD(); 107 app.dispatch(".uno:InsertTable", 3); 108 sleep(2); 109 numberofCol.setText("5"); 110 numberofRow.setText("4"); 111 sleep(2); 112 insertTable.ok(); 113 impress.typeKeys("<enter>"); 114 impress.typeKeys("2"); 115 impress.typeKeys("<right>"); 116 impress.typeKeys("2"); 117 impress.typeKeys("<right>"); 118 impress.typeKeys("<ctrl end>"); 119 impress.typeKeys("2"); 120 sleep(2); 121 saveAndReopenNewSD(i); 122 long end = System.currentTimeMillis(); 123 addRecord(i, start, end); 124 } 125 } 126 127 @Test 128 public void saveNewSDWithPic() throws Exception { 129 String pic = prepareData("image/blue_256x256.jpg"); 130 for (i = 1; i <= iterator; i++) { 131 long start = System.currentTimeMillis(); 132 createNewSD(); 133 app.dispatch(".uno:InsertGraphic"); 134 // impress.menuItem("Insert->Picture->From File...").select(); 135 sleep(2); 136 filePickerPath.setText(pic); 137 sleep(1); 138 filePickerOpen.click(); 139 sleep(5); 140 impress.typeKeys("<esc>"); 141 sleep(2); 142 saveAndReopenNewSD(i); 143 long end = System.currentTimeMillis(); 144 addRecord(i, start, end); 145 } 146 } 147 148 @Test 149 public void saveNewSDWithTextbox()throws Exception{ 150 if(!sdDrawingToolbar.exists()){ 151 app.dispatch(".uno:AvailableToolbars?Toolbar:string=toolbar"); 152 } 153 for (i = 1; i <= iterator; i++) { 154 long start = System.currentTimeMillis(); 155 createNewSD(); 156 sdInsertTextboxButtonOnToolbar.click(); 157 impress.focus(); 158 impress.drag(100, 100, 200, 200); 159 typeKeys("test"); 160 typeKeys("<esc>"); 161 sleep(2); 162 saveAndReopenNewSD(i); 163 long end = System.currentTimeMillis(); 164 addRecord(i, start, end); 165 } 166 } 167 168 @Test 169 public void saveNewSDWithExternalSlides() throws Exception { 170 String externalFile = prepareData("pvt/plain_200p.odp"); 171 for (i = 1; i <= iterator; i++) { 172 long start = System.currentTimeMillis(); 173 createNewSD(); 174 app.dispatch(".uno:ImportFromFile"); 175 sleep(2); 176 filePickerPath.setText(externalFile); 177 filePickerOpen.click(); 178 sleep(2); 179 insertSlideObjects.ok(); 180 sleep(5); 181 saveAndReopenNewSD(i); 182 long end = System.currentTimeMillis(); 183 addRecord(i, start, end); 184 } 185 } 186 187 @Test 188 public void saveNewSDWithAnimation()throws Exception{ 189 for (i = 1; i <= iterator; i++) { 190 long start = System.currentTimeMillis(); 191 createNewSD(); 192 //Insert a Shape and select it via Navigator 193 sdCalloutShapes.click(); 194 impress.focus(); 195 impress.drag(100, 100, 200, 200); 196 app.dispatch(".uno:CustomAnimation"); 197 sdAddAnimation.click(); 198 sdEntranceAnimationTab.waitForExistence(60, 2); 199 sdEntranceAnimationTab.select("Circle"); 200 typeKeys("<enter>"); 201 sdAnimationList.openContextMenu(); 202 typeKeys("<down><down><enter>"); 203 impress.menuItem("Slide Show->Slide Show").select(); 204 sleep(10); 205 impress.typeKeys("<esc>"); 206 sleep(5); 207 saveAndReopenNewSD(i); 208 long end = System.currentTimeMillis(); 209 addRecord(i, start, end); 210 } 211 } 212 213 @Test 214 public void saveNewSDWithShowSettings() throws Exception { 215 String externalFile = prepareData("pvt/plain_200p.odp"); 216 for (i = 1; i <= iterator; i++) { 217 long start = System.currentTimeMillis(); 218 createNewSD(); 219 // Insert Slides from External Sample files 220 impress.menuItem("Insert->File...").select(); 221 sleep(2); 222 filePickerPath.setText(externalFile); 223 filePickerOpen.click(); 224 sleep(2); 225 insertSlideObjects.ok(); 226 sleep(20); 227 228 // Slide Screen Show Settings 229 impress.menuItem("Slide Show->Slide Transition...").select(); 230 sleep(2); 231 impressSlideTransitions.select("Uncover Up"); 232 sleep(2); 233 slideShowSpeed.select("Slow"); 234 sleep(5); 235 slideAutoAfter.check(); 236 sleep(2); 237 applyToAllSlides.click(); 238 sleep(2); 239 impress.menuItem("Slide Show->Slide Show").select(); 240 sleep(70); 241 impress.typeKeys("<esc>"); 242 sleep(5); 243 saveAndReopenNewSD(i); 244 long end = System.currentTimeMillis(); 245 addRecord(i, start, end); 246 } 247 } 248 249 @Test 250 public void saveSDTemplate()throws Exception{ 251 String templateFile = prepareData("svt/DarkBlue.otp"); 252 for (i = 1; i <= iterator; i++) { 253 long start = System.currentTimeMillis(); 254 app.dispatch(".uno:Open"); 255 submitOpenDlg(templateFile); 256 impress.waitForExistence(10, 2); 257 sleep(5); 258 saveAndReopenNewSD(i); 259 long end = System.currentTimeMillis(); 260 addRecord(i, start, end); 261 } 262 } 263 264 @Test 265 @Ignore 266 public void opChartOnOpenedSD() throws Exception { 267 String file = prepareData("svt/OLEinODP.odp"); 268 for (i = 1; i <= iterator; i++) { 269 long start = System.currentTimeMillis(); 270 app.dispatch(".uno:Open"); 271 submitOpenDlg(file); 272 impress.waitForExistence(10, 2); 273 sleep(5); 274 if (!sdNavigatorDlg.exists()) { 275 app.dispatch(".uno:Navigator"); 276 } 277 impress.focus(); 278 sdNavigator.focus(); 279 sdNavigator.collapseAll(); 280 sdNavigator.expand(0); 281 sdNavigator.select(1); 282 typeKeys("<enter>"); 283 impress.menuItem("Edit->Copy").select(); 284 sleep(2); 285 impress.menuItem("Edit->Paste").select(); 286 sleep(2); 287 288 sdNavigator.focus(); 289 sdNavigator.collapseAll(); 290 sdNavigator.expand(0); 291 sdNavigator.select(2); 292 typeKeys("<enter>"); 293 impress.menuItem("Edit->Copy").select(); 294 sleep(2); 295 impress.menuItem("Edit->Paste").select(); 296 sleep(2); 297 298 sdNavigator.focus(); 299 sdNavigator.collapseAll(); 300 sdNavigator.expand(0); 301 sdNavigator.select(3); 302 typeKeys("<enter>"); 303 impress.menuItem("Edit->Copy").select(); 304 sleep(2); 305 impress.menuItem("Edit->Paste").select(); 306 sleep(2); 307 closeWithoutSaveSD(); 308 long end = System.currentTimeMillis(); 309 addRecord(i, start, end); 310 } 311 } 312 313 @Test 314 public void switchViewOfOpenedSD() throws Exception { 315 String file = prepareData("pvt/plain_200p.odp"); 316 for (i = 1; i <= iterator; i++) { 317 long start = System.currentTimeMillis(); 318 app.dispatch(".uno:Open"); 319 submitOpenDlg(file); 320 impress.waitForExistence(10, 2); 321 sleep(5); 322 323 impress.menuItem("View->Outline").select(); 324 sleep(2); 325 impressOutline.menuItem("View->Slide Sorter").select(); 326 sleep(10); 327 impressSlideSorter.menuItem("View->Notes Page").select(); 328 sleep(2); 329 impressHandoutView.menuItem("View->Master->Slide Master").select(); 330 sleep(2); 331 impress.menuItem("View->Master->Notes Master").select(); 332 sleep(2); 333 334 impressHandoutView.menuItem("View->Normal").select(); 335 sleep(2); 336 closeWithoutSaveSD(); 337 long end = System.currentTimeMillis(); 338 addRecord(i, start, end); 339 } 340 } 341 342 private void createNewSD() { 343 app.dispatch("private:factory/simpress?slot=6686"); 344 presentationWizard.ok(); 345 } 346 347 private void saveAndReopenNewSD(int iterator) { 348 String saveTo = getPath("temp/" + "tempSD_New" + iterator + ".odp"); 349 impress.menuItem("File->Save As...").select(); 350 FileUtil.deleteFile(saveTo); 351 submitSaveDlg(saveTo); 352 if (activeMsgBox.exists()) { 353 activeMsgBox.yes(); 354 sleep(2); 355 } 356 sleep(5); 357 app.dispatch(".uno:CloseDoc"); 358 startCenterOpenButton.waitForExistence(30, 2); 359 startCenterOpenButton.click(); 360 submitOpenDlg(saveTo); 361 sleep(2); 362 app.dispatch(".uno:CloseDoc"); 363 } 364 365 private void closeWithoutSaveSD() { 366 impress.menuItem("File->Close").select(); 367 if (activeMsgBox.exists()) { 368 activeMsgBox.no(); 369 sleep(2); 370 } 371 } 372 373 private void addRecord(int i, long start, long end) { 374 HashMap<String, Object> perf = aoo.getPerfData(); 375 xmlResult.addRow("Data",testname.getMethodName(), i, (end - start), 376 perf.get("vsz"), perf.get("rss"), perf.get("handles")); 377 } 378 } 379