xref: /AOO41X/test/testgui/source/svt/gui/sw/BasicFuncOnWriter.java (revision 54628ca40d27d15cc98fe861da7fff7e60c2f7d6)
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_writer.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