blob: d423a42987a8d34f9a583097ab8e06041f821295 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
/**
*
*/
package svt.gui.sd;
import static org.junit.Assert.assertEquals;
import static org.openoffice.test.common.Testspace.*;
import static org.openoffice.test.vcl.Tester.*;
import static testlib.gui.AppTool.*;
import static testlib.gui.UIMap.*;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.logging.Level;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
import org.openoffice.test.OpenOffice;
import org.openoffice.test.common.DataSheet;
import org.openoffice.test.common.FileUtil;
import org.openoffice.test.common.Logger;
import org.openoffice.test.common.SystemUtil;
import org.openoffice.test.common.Testspace;
import testlib.gui.SCTool;
public class BasicFuncOnImpress {
@Rule
public Logger log = Logger.getLogger(this);
@Rule
public TestName testname = new TestName();
private static DataSheet xmlResult;
private String pid = null;
private static int iterator = 100;
private int i = 0;
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void beforeClass() throws Exception {
xmlResult = new DataSheet(getFile("output/svt_impress.xml"));
xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)");
}
@AfterClass
public static void afterClass() throws Exception {
app.stop();
}
@Before
public void before() throws Exception{
app.start(true);
}
@Test
public void saveNewSDWithNewSlides() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
impress.menuItem("Insert->Slide").select();
sleep(2);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSDWithTable() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
app.dispatch(".uno:InsertTable", 3);
sleep(2);
numberofCol.setText("5");
numberofRow.setText("4");
sleep(2);
insertTable.ok();
impress.typeKeys("<enter>");
impress.typeKeys("2");
impress.typeKeys("<right>");
impress.typeKeys("2");
impress.typeKeys("<right>");
impress.typeKeys("<ctrl end>");
impress.typeKeys("2");
sleep(2);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSDWithPic() throws Exception {
String pic = prepareData("image/blue_256x256.jpg");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
app.dispatch(".uno:InsertGraphic");
// impress.menuItem("Insert->Picture->From File...").select();
sleep(2);
filePickerPath.setText(pic);
sleep(1);
filePickerOpen.click();
sleep(5);
impress.typeKeys("<esc>");
sleep(2);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSDWithTextbox()throws Exception{
if(!sdDrawingToolbar.exists()){
app.dispatch(".uno:AvailableToolbars?Toolbar:string=toolbar");
}
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
sdInsertTextboxButtonOnToolbar.click();
impress.focus();
impress.drag(100, 100, 200, 200);
typeKeys("test");
typeKeys("<esc>");
sleep(2);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSDWithExternalSlides() throws Exception {
String externalFile = prepareData("pvt/plain_200p.odp");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
app.dispatch(".uno:ImportFromFile");
sleep(2);
filePickerPath.setText(externalFile);
filePickerOpen.click();
sleep(2);
insertSlideObjects.ok();
sleep(5);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSDWithAnimation()throws Exception{
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
//Insert a Shape and select it via Navigator
sdCalloutShapes.click();
impress.focus();
impress.drag(100, 100, 200, 200);
app.dispatch(".uno:CustomAnimation");
sdAddAnimation.click();
sdEntranceAnimationTab.waitForExistence(60, 2);
sdEntranceAnimationTab.select("Circle");
typeKeys("<enter>");
sdAnimationList.openContextMenu();
typeKeys("<down><down><enter>");
impress.menuItem("Slide Show->Slide Show").select();
sleep(10);
impress.typeKeys("<esc>");
sleep(5);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSDWithShowSettings() throws Exception {
String externalFile = prepareData("pvt/plain_200p.odp");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSD();
// Insert Slides from External Sample files
impress.menuItem("Insert->File...").select();
sleep(2);
filePickerPath.setText(externalFile);
filePickerOpen.click();
sleep(2);
insertSlideObjects.ok();
sleep(20);
// Slide Screen Show Settings
impress.menuItem("Slide Show->Slide Transition...").select();
sleep(2);
impressSlideTransitions.select("Uncover Up");
sleep(2);
slideShowSpeed.select("Slow");
sleep(5);
slideAutoAfter.check();
sleep(2);
applyToAllSlides.click();
sleep(2);
impress.menuItem("Slide Show->Slide Show").select();
sleep(70);
impress.typeKeys("<esc>");
sleep(5);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveSDTemplate()throws Exception{
String templateFile = prepareData("svt/DarkBlue.otp");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(templateFile);
impress.waitForExistence(10, 2);
sleep(5);
saveAndReopenNewSD(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
@Ignore
public void opChartOnOpenedSD() throws Exception {
String file = prepareData("svt/OLEinODP.odp");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
impress.waitForExistence(10, 2);
sleep(5);
if (!sdNavigatorDlg.exists()) {
app.dispatch(".uno:Navigator");
}
impress.focus();
sdNavigator.focus();
sdNavigator.collapseAll();
sdNavigator.expand(0);
sdNavigator.select(1);
typeKeys("<enter>");
impress.menuItem("Edit->Copy").select();
sleep(2);
impress.menuItem("Edit->Paste").select();
sleep(2);
sdNavigator.focus();
sdNavigator.collapseAll();
sdNavigator.expand(0);
sdNavigator.select(2);
typeKeys("<enter>");
impress.menuItem("Edit->Copy").select();
sleep(2);
impress.menuItem("Edit->Paste").select();
sleep(2);
sdNavigator.focus();
sdNavigator.collapseAll();
sdNavigator.expand(0);
sdNavigator.select(3);
typeKeys("<enter>");
impress.menuItem("Edit->Copy").select();
sleep(2);
impress.menuItem("Edit->Paste").select();
sleep(2);
closeWithoutSaveSD();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void switchViewOfOpenedSD() throws Exception {
String file = prepareData("pvt/plain_200p.odp");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
impress.waitForExistence(10, 2);
sleep(5);
impress.menuItem("View->Outline").select();
sleep(2);
impressOutline.menuItem("View->Slide Sorter").select();
sleep(10);
impressSlideSorter.menuItem("View->Notes Page").select();
sleep(2);
impressHandoutView.menuItem("View->Master->Slide Master").select();
sleep(2);
impress.menuItem("View->Master->Notes Master").select();
sleep(2);
impressHandoutView.menuItem("View->Normal").select();
sleep(2);
closeWithoutSaveSD();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
private void createNewSD() {
app.dispatch("private:factory/simpress?slot=6686");
presentationWizard.ok();
}
private void saveAndReopenNewSD(int iterator) {
String saveTo = getPath("temp/" + "tempSD_New" + iterator + ".odp");
impress.menuItem("File->Save As...").select();
FileUtil.deleteFile(saveTo);
submitSaveDlg(saveTo);
if (activeMsgBox.exists()) {
activeMsgBox.yes();
sleep(2);
}
sleep(5);
app.dispatch(".uno:CloseDoc");
startCenterOpenButton.waitForExistence(30, 2);
startCenterOpenButton.click();
submitOpenDlg(saveTo);
sleep(2);
app.dispatch(".uno:CloseDoc");
}
private void closeWithoutSaveSD() {
impress.menuItem("File->Close").select();
if (activeMsgBox.exists()) {
activeMsgBox.no();
sleep(2);
}
}
private void addRecord(int i, long start, long end) {
HashMap<String, Object> perf = aoo.getPerfData();
xmlResult.addRow("Data",testname.getMethodName(), i, (end - start),
perf.get("vsz"), perf.get("rss"), perf.get("handles"));
log.log( Level.INFO, "\t"+testname.getMethodName()+"["+i+"] took "+(end-start)+"ms");
}
}