xref: /AOO41X/test/testgui/source/svt/gui/sw/BasicFuncOnWriter.java (revision 8e8ee8fefdac26d905672cc573c35fd0ae1f9356)
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 import java.util.logging.Level;
38 
39 import org.junit.After;
40 import org.junit.AfterClass;
41 import org.junit.Before;
42 import org.junit.BeforeClass;
43 import org.junit.Ignore;
44 import org.junit.Rule;
45 import org.junit.Test;
46 import org.junit.rules.TestName;
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 public class BasicFuncOnWriter {
54     @Rule
55     public Logger log = Logger.getLogger(this);
56 
57     @Rule
58     public TestName testname = new TestName();
59 
60     private static DataSheet xmlResult;
61 
62     private String pid = null;
63 
64     private static int iterator = 100;
65 
66     private int i = 0;
67 
68     /**
69      * @throws java.lang.Exception
70      */
71     @BeforeClass
beforeClass()72     public static void beforeClass() throws Exception {
73         xmlResult = new DataSheet(getFile("output/svt_writer.xml"));
74         xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)");
75     }
76 
77     @AfterClass
afterClass()78     public static void afterClass() throws Exception {
79         app.stop();
80     }
81 
82     @Before
before()83     public void before()throws Exception{
84         app.start(true);
85     }
86 
87     @Test
saveNewSWWithPic()88     public void saveNewSWWithPic() throws Exception {
89         String pic = prepareData("image/blue_256x256.jpg");
90         for (i = 1; i <= iterator; i++) {
91             long start = System.currentTimeMillis();
92             createNewSW();
93             writer.menuItem("Insert->Picture->From File...").select();
94             sleep(2);
95             filePickerPath.setText(pic);
96             sleep(1);
97             filePickerOpen.click();
98             sleep(5);
99             typeKeys("<esc>");
100             sleep(2);
101             saveAndReopenNewSW(i);
102             long end = System.currentTimeMillis();
103             addRecord(i, start, end);
104         }
105     }
106 
107 
108     @Test
saveNewSWWithBullet()109     public void saveNewSWWithBullet() throws Exception {
110         for (i = 1; i <= iterator; i++) {
111             long start = System.currentTimeMillis();
112             createNewSW();
113             writer.typeKeys("The first");
114             writer.typeKeys("<enter>");
115             sleep(3);
116             writer.typeKeys("The second");
117             app.dispatch(".uno:SelectAll");
118             writer.menuItem("Format->Bullets and Numbering...").select();
119             sleep(3);
120             bulletPage.ok();
121             writer.typeKeys("<ctrl z");
122             sleep(1);
123             writer.typeKeys("<ctrl y>");
124             sleep(1);
125             writer.typeKeys("<ctrl end>");
126             writer.typeKeys("<enter>");
127             sleep(2);
128 
129             writer.focus();
130             saveAndReopenNewSW(i);
131             long end = System.currentTimeMillis();
132             addRecord(i, start, end);
133         }
134     }
135 
136     @Test
saveNewSWWithUnDoDelete()137     public void saveNewSWWithUnDoDelete()throws Exception{
138         if(!sdDrawingToolbar.exists()){
139             app.dispatch(".uno:AvailableToolbars?Toolbar:string=toolbar");
140         }
141         for (i = 1; i <= iterator; i++) {
142             long start = System.currentTimeMillis();
143             createNewSW();
144             app.dispatch(".uno:Ellipse");
145             writer.focus();
146             writer.drag(200, 200, 300, 300);
147             typeKeys("<Delete>");
148             typeKeys("<ctrl z>");
149             typeKeys("<ctrl y>");
150 
151             saveAndReopenNewSW(i);
152             long end = System.currentTimeMillis();
153             addRecord(i, start, end);
154         }
155     }
156 
157 
158     @Test
saveNewSWWithSpellCheck()159     public void saveNewSWWithSpellCheck() throws Exception {
160         for (i = 1; i <= iterator; i++) {
161             long start = System.currentTimeMillis();
162             createNewSW();
163             writer.typeKeys("goood");
164             sleep(2);
165             writer.menuItem("Tools->Spelling and Grammar...").select();
166             sleep(2);
167             spellcheckDlgSuggestionList.select(0);
168             spellcheckDlgIgnoreOnce.click();
169             activeMsgBox.ok();
170             sleep(2);
171             saveAndReopenNewSW(i);
172             long end = System.currentTimeMillis();
173             addRecord(i, start, end);
174         }
175     }
176 
177     @Test
saveNewSWWithHeaderFooter()178     public void saveNewSWWithHeaderFooter() throws Exception {
179         for (i = 1; i <= iterator; i++) {
180             long start = System.currentTimeMillis();
181             createNewSW();
182             writer.menuItem("Insert->Header->Default").select();
183             sleep(2);
184             writer.typeKeys("Header");
185             sleep(2);
186             writer.menuItem("Insert->Footer->Default").select();
187             sleep(2);
188             writer.typeKeys("Footer");
189             sleep(2);
190             writer.typeKeys("<ctrl end>");
191             sleep(2);
192             writer.typeKeys("<enter>");
193             sleep(2);
194             saveAndReopenNewSW(i);
195             long end = System.currentTimeMillis();
196             addRecord(i, start, end);
197         }
198     }
199 
200     @Test
saveNewSWWithFrameAnchor()201     public void saveNewSWWithFrameAnchor() throws Exception {
202         for (i = 1; i <= iterator; i++) {
203             long start = System.currentTimeMillis();
204             createNewSW();
205             writer.menuItem("Insert->Frame...").select();
206             sleep(2);
207             writerFrameDlg.ok();
208             writer.menuItem("Format->Anchor->To Page").select();
209             sleep(2);
210             writer.menuItem("Format->Anchor->To Paragraph").select();
211             sleep(2);
212             writer.menuItem("Format->Anchor->To Character").select();
213             sleep(2);
214             writer.menuItem("Format->Anchor->As Character").select();
215             sleep(2);
216             writer.typeKeys("<esc>");
217             sleep(2);
218             writer.typeKeys("<enter>");
219             sleep(2);
220             saveAndReopenNewSW(i);
221             long end = System.currentTimeMillis();
222             addRecord(i, start, end);
223         }
224     }
225 
226     @Test
saveNewSWWithSDAsOLE()227     public void saveNewSWWithSDAsOLE()throws Exception{
228         String linkFile = prepareData("pvt/plain_200p.odp");
229         for (i = 1; i <= iterator; i++) {
230             long start = System.currentTimeMillis();
231             createNewSW();
232             app.dispatch(".uno:InsertObject");
233             sleep(2);
234             insertObject.waitForExistence(60, 2);
235             objectFromFile.check();
236             objectFilePath.setText(linkFile);
237             objectFileLink.check();
238             insertObject.ok();
239             sleep(10);
240 
241             writer.focus();
242             writer.doubleClick(200, 300);
243             sleep(15);
244             writer.activate();
245             writer.click(10, 10);
246             sleep(5);
247 
248             saveAndReopenNewSW(i);
249             long end = System.currentTimeMillis();
250             addRecord(i, start, end);
251         }
252     }
253 
254     @Test
saveNewSWWithTOC()255     public void saveNewSWWithTOC() throws Exception {
256         for (i = 1; i <= iterator; i++) {
257             long start = System.currentTimeMillis();
258             createNewSW();
259             for (int j = 0; j < 6; j++) {
260                 writer.typeKeys(String.valueOf(j + 1));
261                 writer.typeKeys("<enter>");
262             }
263             writer.typeKeys("<ctrl home>");
264             for (int k = 0; k < 2; k++) {
265                 writer.typeKeys("<shift down>");
266             }
267             if (!styleAndFormattingDlg.exists()) {
268                 app.dispatch(".uno:DesignerDialog");
269                 sleep(2);
270             }
271 
272             styleAndFormattingList.doubleClick(0.5, 0.25);
273             sleep(2);
274             writer.typeKeys("<down>");
275             writer.typeKeys("<right>");
276             writer.typeKeys("<left>");
277             for (int k = 0; k < 2; k++) {
278                 writer.typeKeys("<shift down>");
279             }
280             styleAndFormattingList.doubleClick(0.5, 0.3);
281             sleep(2);
282             writer.typeKeys("<ctrl home>");
283             sleep(2);
284             writer.menuItem("Insert->Indexes and Tables->Indexes and Tables...").select();
285             sleep(2);
286             insertIndexDlg.ok();
287             sleep(2);
288             writer.typeKeys("<ctrl end>");
289             saveAndReopenNewSW(i);
290             long end = System.currentTimeMillis();
291             addRecord(i, start, end);
292         }
293     }
294 
295     @Test
splitMergeTableOnOpenedSW()296     public void splitMergeTableOnOpenedSW() throws Exception {
297         String file = prepareData("svt/swdesign.odt");
298         for (i = 1; i <= iterator; i++) {
299             long start = System.currentTimeMillis();
300             app.dispatch(".uno:Open");
301             submitOpenDlg(file);
302             writer.waitForExistence(10, 2);
303             writer.typeKeys("<down>");
304             writer.typeKeys("<down>");
305             sleep(2);
306 
307             writer.menuItem("Table->Split Cells").select();
308             sleep(2);
309             writerSplitCellDlg.ok();
310             sleep(2);
311 
312             writer.typeKeys("<shift down>");
313             writer.typeKeys("<shift down>");
314             writer.typeKeys("<shift down>");
315             writer.typeKeys("<shift down>");
316             writer.typeKeys("<shift down>");
317             sleep(2);
318             writer.menuItem("Table->Merge Cells").select();
319             sleep(2);
320 
321             writer.typeKeys("<enter>");
322             closeWithoutSaveSW();
323             long end = System.currentTimeMillis();
324             addRecord(i, start, end);
325         }
326     }
327 
328     @Test
addDelColumnsRowsInTableOnOpenedSW()329     public void addDelColumnsRowsInTableOnOpenedSW() throws Exception {
330         String file = prepareData("svt/swdesign.odt");
331         for (i = 1; i <= iterator; i++) {
332             long start = System.currentTimeMillis();
333             app.dispatch(".uno:Open");
334             submitOpenDlg(file);
335             writer.waitForExistence(10, 2);
336             writer.typeKeys("<down>");
337             writer.typeKeys("<down>");
338             sleep(2);
339 
340             app.dispatch(".uno:InsertRowDialog");
341             writerInsertRowsDlg.ok();
342             sleep(2);
343 
344             writer.menuItem("Table->Delete->Rows").select();
345             sleep(2);
346 
347             app.dispatch(".uno:InsertColumnDialog");
348             writerInsertColumnsDlg.ok();
349             sleep(2);
350 
351             writer.menuItem("Table->Delete->Columns").select();
352             sleep(2);
353 
354             closeWithoutSaveSW();
355             long end = System.currentTimeMillis();
356             addRecord(i, start, end);
357         }
358     }
359 
360     @Test
setParaPropertoesOnOpenedSW()361     public void setParaPropertoesOnOpenedSW() throws Exception {
362         String file = prepareData("pvt/plain_200p.odt");
363         for (i = 1; i <= iterator; i++) {
364             long start = System.currentTimeMillis();
365             app.dispatch(".uno:Open");
366             submitOpenDlg(file);
367             writer.waitForExistence(10, 2);
368             writer.focus();
369             app.dispatch(".uno:ParagraphDialog");
370             alignPage.select();
371             alignPageRight.check();
372             sleep(2);
373             alignPageVerticalAlign.select("Bottom");
374             sleep(2);
375             alignPage.ok();
376             sleep(2);
377             writer.typeKeys("<ctrl end>");
378             sleep(5);
379 
380             closeWithoutSaveSW();
381             long end = System.currentTimeMillis();
382             addRecord(i, start, end);
383         }
384     }
385 
386     @Test
InsertPicToOpenedSW()387     public void InsertPicToOpenedSW() throws Exception {
388         String file = prepareData("pvt/plain_200p.odt");
389         String pic = prepareData("image/blue_256x256.jpg");
390         for (i = 1; i <= iterator; i++) {
391             long start = System.currentTimeMillis();
392             app.dispatch(".uno:Open");
393             submitOpenDlg(file);
394             writer.waitForExistence(10, 2);
395             writer.focus();
396             writer.menuItem("Insert->Picture->From File...").select();
397             sleep(2);
398             filePickerPath.setText(pic);
399             sleep(1);
400             filePickerOpen.click();
401             sleep(5);
402             writer.typeKeys("<esc>");
403             sleep(2);
404             closeWithoutSaveSW();
405             long end = System.currentTimeMillis();
406             addRecord(i, start, end);
407         }
408     }
409 
410     @Test
InsertOLEToOpenedSW()411     public void InsertOLEToOpenedSW() throws Exception {
412         String file = prepareData("pvt/plain_200p.odt");
413         for (i = 1; i <= iterator; i++) {
414             long start = System.currentTimeMillis();
415             app.dispatch(".uno:Open");
416             submitOpenDlg(file);
417             writer.waitForExistence(10, 2);
418             writer.focus();
419             app.dispatch(".uno:InsertObject");
420             sleep(2);
421             insertObject.ok();
422             sleep(10);
423             typeKeys("<esc>");
424             sleep(5);
425             typeKeys("<esc>");
426             sleep(5);
427             closeWithoutSaveSW();
428             long end = System.currentTimeMillis();
429             addRecord(i, start, end);
430         }
431     }
432 
433     @Test
InsertChartToOpenedSW()434     public void InsertChartToOpenedSW() throws Exception {
435         String file = prepareData("pvt/plain_200p.odt");
436         for (i = 1; i <= iterator; i++) {
437             long start = System.currentTimeMillis();
438             app.dispatch(".uno:Open");
439             submitOpenDlg(file);
440             writer.waitForExistence(10, 2);
441             writer.focus();
442             app.dispatch(".uno:InsertObjectChart");
443 //          writer.menuItem("Insert->Object->Chart...").select();
444             sleep(5);
445             typeKeys("<esc>");
446             sleep(5);
447             typeKeys("<esc>");
448             sleep(5);
449             typeKeys("<esc>");
450             sleep(5);
451             closeWithoutSaveSW();
452             long end = System.currentTimeMillis();
453             addRecord(i, start, end);
454         }
455     }
456 
457     @Test
openSWWithXForm()458     public void openSWWithXForm()throws Exception{
459         String file = prepareData("svt/sickness_self-certification_meory issue.odt");
460         for (i = 1; i <= iterator; i++) {
461             long start = System.currentTimeMillis();
462             app.dispatch(".uno:Open");
463             submitOpenDlg(file);
464             writer.waitForExistence(10, 2);
465             app.dispatch(".uno:CloseDoc");
466 
467             long end = System.currentTimeMillis();
468             addRecord(i, start, end);
469         }
470     }
471 
472     @Test
openSWWithSecuritySignature()473     public void openSWWithSecuritySignature()throws Exception{
474         String file = prepareData("svt/howtouse.odt");
475         for (i = 1; i <= iterator; i++) {
476             long start = System.currentTimeMillis();
477             app.dispatch(".uno:Open");
478             submitOpenDlg(file);
479             writer.waitForExistence(10, 2);
480             app.dispatch(".uno:CloseDoc");
481 
482             long end = System.currentTimeMillis();
483             addRecord(i, start, end);
484         }
485     }
486 
487 
createNewSW()488     private void createNewSW() {
489         app.dispatch("private:factory/swriter");
490     }
491 
saveAndReopenNewSW(int iterator)492     private void saveAndReopenNewSW(int iterator) {
493         String saveTo = getPath("temp/" + "tempSW_New" + iterator + ".odt");
494         writer.menuItem("File->Save As...").select();
495         FileUtil.deleteFile(saveTo);
496         submitSaveDlg(saveTo);
497         if (activeMsgBox.exists()) {
498             activeMsgBox.yes();
499             sleep(2);
500         }
501         app.dispatch(".uno:CloseDoc");
502         startCenterOpenButton.waitForExistence(30, 2);
503         startCenterOpenButton.click();
504         submitOpenDlg(saveTo);
505         sleep(1);
506         app.dispatch(".uno:CloseDoc");
507     }
508 
closeWithoutSaveSW()509     private void closeWithoutSaveSW() {
510         writer.menuItem("File->Close").select();
511         if (activeMsgBox.exists()) {
512             activeMsgBox.no();
513             sleep(2);
514         }
515     }
516 
addRecord(int i, long start, long end)517     private void addRecord(int i, long start, long end) {
518         HashMap<String, Object>  perf = aoo.getPerfData();
519         xmlResult.addRow("Data",testname.getMethodName(), i, (end - start),
520                 perf.get("vsz"), perf.get("rss"), perf.get("handles"));
521         log.log( Level.INFO, "\t"+testname.getMethodName()+"["+i+"] took "+(end-start)+"ms");
522     }
523 
524 }
525