/************************************************************** * * 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(""); impress.typeKeys("2"); impress.typeKeys(""); impress.typeKeys("2"); impress.typeKeys(""); impress.typeKeys(""); 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(""); 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(""); 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(""); sdAnimationList.openContextMenu(); typeKeys(""); impress.menuItem("Slide Show->Slide Show").select(); sleep(10); impress.typeKeys(""); 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(""); 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(""); 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(""); 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(""); 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 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"); } }