xref: /AOO41X/test/testgui/source/svt/gui/sd/BasicFuncOnImpress.java (revision ff0525f24f03981d56b7579b645949f111420994)
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