xref: /AOO41X/test/testgui/source/svt/gui/sc/BasicFuncOnCalc.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 
26 package svt.gui.sc;
27 
28 import static org.openoffice.test.common.Testspace.getFile;
29 import static org.openoffice.test.common.Testspace.getPath;
30 import static org.openoffice.test.common.Testspace.prepareData;
31 import static org.openoffice.test.vcl.Tester.sleep;
32 import static testlib.gui.AppTool.submitOpenDlg;
33 import static testlib.gui.AppTool.submitSaveDlg;
34 import static testlib.gui.AppTool.typeKeys;
35 import static testlib.gui.UIMap.activeMsgBox;
36 import static testlib.gui.UIMap.aoo;
37 import static testlib.gui.UIMap.app;
38 import static testlib.gui.UIMap.calc;
39 import static testlib.gui.UIMap.chartWizard;
40 import static testlib.gui.UIMap.filePickerOpen;
41 import static testlib.gui.UIMap.filePickerPath;
42 import static testlib.gui.UIMap.filterValue1;
43 import static testlib.gui.UIMap.fontworkGalleryDlg;
44 import static testlib.gui.UIMap.scAfterCurrentSheet;
45 import static testlib.gui.UIMap.scFormatCode;
46 import static testlib.gui.UIMap.scInsertSheetDlg;
47 import static testlib.gui.UIMap.scNewSheetName;
48 import static testlib.gui.UIMap.scPrintArea;
49 import static testlib.gui.UIMap.scPrintAreaType;
50 import static testlib.gui.UIMap.scValidityCriteriaAllowList;
51 import static testlib.gui.UIMap.scValidityCriteriaTabpage;
52 import static testlib.gui.UIMap.scValidityDecimalCompareOperator;
53 import static testlib.gui.UIMap.scValidityErrorAlertTabPage;
54 import static testlib.gui.UIMap.scValidityErrorMessage;
55 import static testlib.gui.UIMap.scValidityErrorMessageTitle;
56 import static testlib.gui.UIMap.scValidityShowErrorMessage;
57 import static testlib.gui.UIMap.scValiditySourceInput;
58 import static testlib.gui.UIMap.sortOptionsPage;
59 import static testlib.gui.UIMap.sortOptionsPageRangeContainsColumnLabels;
60 import static testlib.gui.UIMap.sortPage;
61 import static testlib.gui.UIMap.sortPageAscending1;
62 import static testlib.gui.UIMap.sortPageBy1;
63 import static testlib.gui.UIMap.standardFilterDlg;
64 import static testlib.gui.UIMap.startCenterOpenButton;
65 
66 import java.util.HashMap;
67 import java.util.logging.Level;
68 
69 import org.junit.AfterClass;
70 import org.junit.Before;
71 import org.junit.BeforeClass;
72 import org.junit.Rule;
73 import org.junit.Test;
74 import org.junit.rules.TestName;
75 import org.openoffice.test.common.DataSheet;
76 import org.openoffice.test.common.FileUtil;
77 import org.openoffice.test.common.Logger;
78 
79 import testlib.gui.SCTool;
80 
81 public class BasicFuncOnCalc {
82     @Rule
83     public Logger log = Logger.getLogger(this);
84 
85     @Rule
86     public TestName testname = new TestName();
87 
88     private static DataSheet xmlResult;
89 
90     private static int iterator = 100;
91 
92     private int i = 0;
93 
94     /**
95      * @throws java.lang.Exception
96      */
97     @BeforeClass
beforeClass()98     public static void beforeClass() throws Exception {
99         xmlResult = new DataSheet(getFile("output/svt_calc.xml"));
100         xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)");
101     }
102 
103     @AfterClass
afterClass()104     public static void afterClass() throws Exception {
105         app.stop();
106     }
107 
108     @Before
before()109     public void before()throws Exception{
110         app.start(true);
111     }
112 
113 
114     @Test
saveNewSCWithNumberFormat()115     public void saveNewSCWithNumberFormat() {
116         for (i = 1; i <= iterator; i++) {
117             long start = System.currentTimeMillis();
118             createNewSC();
119             SCTool.selectRange("A1");
120             typeKeys("0.3");
121             sleep(1);
122             app.dispatch(".uno:FormatCellDialog");
123             sleep(2);
124             scFormatCode.setText("0%");
125             typeKeys("<enter>");
126             sleep(1);
127             saveAndReopenNewSC(i);
128             long end = System.currentTimeMillis();
129             addRecord(i, start, end);
130         }
131     }
132 
133     @Test
saveNewSCWithPrintRange()134     public void saveNewSCWithPrintRange() throws Exception {
135         for (i = 1; i <= iterator; i++) {
136             long start = System.currentTimeMillis();
137             createNewSC();
138             app.dispatch(".uno:EditPrintArea");
139             sleep(1);
140             scPrintAreaType.select("- user defined -");
141             scPrintArea.setText("$A$1:$C$4");
142             typeKeys("<enter>");
143             SCTool.selectRange("A1");
144             typeKeys("test");
145             saveAndReopenNewSC(i);
146             long end = System.currentTimeMillis();
147             addRecord(i, start, end);
148         }
149     }
150 
151     @Test
saveNewSCWithText()152     public void saveNewSCWithText() throws Exception {
153         for (i = 1; i <= iterator; i++) {
154             long start = System.currentTimeMillis();
155             createNewSC();
156             SCTool.selectRange("A1");
157             typeKeys("test");
158             saveAndReopenNewSC(i);
159             long end = System.currentTimeMillis();
160             addRecord(i, start, end);
161         }
162     }
163 
164     @Test
saveNewSCWithDataSort()165     public void saveNewSCWithDataSort() throws Exception {
166         for (i = 1; i <= iterator; i++) {
167             long start = System.currentTimeMillis();
168             createNewSC();
169             SCTool.selectRange("A1");
170             typeKeys("3<down>2<down>5<down>1<down>6<down>4<down>10<down>8<down>9<down>7");
171             sleep(1);
172             app.dispatch(".uno:DataSort");
173             sortOptionsPage.select();
174             sortOptionsPageRangeContainsColumnLabels.uncheck();
175             sortPage.select();
176             sortPageBy1.select(1); // "Column A"
177             sortPageAscending1.check();
178             sortPage.ok();
179             saveAndReopenNewSC(i);
180             long end = System.currentTimeMillis();
181             addRecord(i, start, end);
182         }
183     }
184 
185     @Test
saveNewSCWithInsertSheets()186     public void saveNewSCWithInsertSheets() throws Exception {
187         for (i = 1; i <= iterator; i++) {
188             long start = System.currentTimeMillis();
189             createNewSC();
190             app.dispatch(".uno:Insert");
191             scAfterCurrentSheet.check();
192             scNewSheetName.setText("Instant Filter");
193             scInsertSheetDlg.ok();
194             sleep(5);
195             saveAndReopenNewSC(i);
196             long end = System.currentTimeMillis();
197             addRecord(i, start, end);
198         }
199     }
200 
201     @Test
saveNewSCWithStandardFilter()202     public void saveNewSCWithStandardFilter() throws Exception {
203         for (i = 1; i <= iterator; i++) {
204             long start = System.currentTimeMillis();
205             createNewSC();
206             SCTool.selectRange("A1");
207             typeKeys("A<down>1<down>2<down>3<down>1<down>2<down>3<down>1<down>2<down>3");
208             sleep(1);
209             SCTool.selectRange("A1");
210             app.dispatch(".uno:DataFilterStandardFilter");
211             sleep(2);
212             filterValue1.setText("1");
213             standardFilterDlg.ok();
214             saveAndReopenNewSC(i);
215             long end = System.currentTimeMillis();
216             addRecord(i, start, end);
217         }
218     }
219 
220     @Test
saveNewSCWithInsertPic()221     public void saveNewSCWithInsertPic() throws Exception {
222         String pic = prepareData("image/blue_256x256.jpg");
223         for (i = 1; i <= iterator; i++) {
224             long start = System.currentTimeMillis();
225             createNewSC();
226             calc.menuItem("Insert->Picture->From File...").select();
227             sleep(2);
228             filePickerPath.setText(pic);
229             sleep(1);
230             filePickerOpen.click();
231             sleep(2);
232             typeKeys("<esc>");
233             sleep(2);
234             saveAndReopenNewSC(i);
235             long end = System.currentTimeMillis();
236             addRecord(i, start, end);
237         }
238     }
239 
240     @Test
saveNewSCWithValidaty()241     public void saveNewSCWithValidaty() throws Exception {
242         for (i = 1; i <= iterator; i++) {
243             long start = System.currentTimeMillis();
244             createNewSC();
245             app.dispatch(".uno:Insert");
246             scAfterCurrentSheet.check();
247             scNewSheetName.setText("Data Validate");
248             scInsertSheetDlg.ok();
249             sleep(5);
250             SCTool.selectRange("B2:E5");
251             sleep(2);
252 
253             app.dispatch(".uno:Validation");
254             scValidityCriteriaTabpage.select();
255             scValidityCriteriaAllowList.select("Whole Numbers");
256             scValidityDecimalCompareOperator.select("greater than");
257             scValiditySourceInput.setText("1");
258             scValidityErrorAlertTabPage.select();
259             scValidityShowErrorMessage.check();
260             scValidityErrorMessageTitle.setText("Error");
261             scValidityErrorMessage.setText("Must greater than 1");
262             scValidityErrorAlertTabPage.ok();
263 
264             SCTool.selectRange("B2");
265             typeKeys("0<enter>");
266             activeMsgBox.ok();
267             sleep(1);
268 
269             SCTool.selectRange("E5");
270             typeKeys("1<enter>");
271             activeMsgBox.ok();
272             sleep(1);
273 
274             SCTool.selectRange("E2");
275             typeKeys("2<enter>");
276             sleep(5);
277             saveAndReopenNewSC(i);
278             long end = System.currentTimeMillis();
279             addRecord(i, start, end);
280         }
281     }
282 
283     @Test
insertChartToOpenedSC()284     public void insertChartToOpenedSC() throws Exception {
285         String file = prepareData("pvt/plain_11s.ods");
286         String[][] inputStr = { { "Area", "Item", "Count" }, { "1", "2", "3" },
287                 { "4", "5", "6" }, { "7", "8", "9" }, { "10", "11", "12" } };
288         for (i = 1; i <= iterator; i++) {
289             long start = System.currentTimeMillis();
290             app.dispatch(".uno:Open");
291             submitOpenDlg(file);
292             calc.waitForExistence(20, 2);
293             sleep(2);
294 
295             // Insert Chart
296             app.dispatch(".uno:Insert");
297             scAfterCurrentSheet.check();
298             scNewSheetName.setText("Instant Chart");
299             scInsertSheetDlg.ok();
300             sleep(5);
301             inputCells(inputStr);
302             sleep(2);
303             SCTool.selectRange("A1:C5");
304             calc.menuItem("Insert->Chart...").select();
305             sleep(1);
306             chartWizard.ok();
307             sleep(5);
308             calc.typeKeys("<esc>");
309             sleep(5);
310             calc.typeKeys("<esc>");
311             sleep(5);
312             calc.typeKeys("<esc>");
313             sleep(5);
314             closeWithoutSaveSC();
315             long end = System.currentTimeMillis();
316             addRecord(i, start, end);
317         }
318     }
319 
320     @Test
insertPicToOpenedSC()321     public void insertPicToOpenedSC() throws Exception {
322         String file = prepareData("pvt/plain_11s.ods");
323         String pic = prepareData("image/blue_256x256.jpg");
324         for (i = 1; i <= iterator; i++) {
325             long start = System.currentTimeMillis();
326             app.dispatch(".uno:Open");
327             submitOpenDlg(file);
328             calc.waitForExistence(20, 2);
329             sleep(2);
330 
331             // Insert Chart
332             app.dispatch(".uno:Insert");
333             scAfterCurrentSheet.check();
334             scNewSheetName.setText("Instant Graphic");
335             scInsertSheetDlg.ok();
336             sleep(5);
337             calc.menuItem("Insert->Picture->From File...").select();
338             sleep(2);
339             filePickerPath.setText(pic);
340             sleep(1);
341             filePickerOpen.click();
342             sleep(5);
343             calc.typeKeys("<esc>");
344             sleep(2);
345             closeWithoutSaveSC();
346             long end = System.currentTimeMillis();
347             addRecord(i, start, end);
348         }
349     }
350 
351     @Test
insertFontWorkToOpenedSC()352     public void insertFontWorkToOpenedSC() throws Exception {
353         String file = prepareData("pvt/plain_11s.ods");
354         for (i = 1; i <= iterator; i++) {
355             long start = System.currentTimeMillis();
356             app.dispatch(".uno:Open");
357             submitOpenDlg(file);
358             calc.waitForExistence(20, 2);
359             sleep(2);
360 
361             calc.menuItem("View->Toolbars->Fontwork").select();
362             sleep(2);
363             app.dispatch(".uno:FontworkGalleryFloater");
364             sleep(2);
365             typeKeys("<right>");
366             fontworkGalleryDlg.ok();
367             sleep(2);
368             calc.typeKeys("<esc>");
369             sleep(2);
370 
371             closeWithoutSaveSC();
372             long end = System.currentTimeMillis();
373             addRecord(i, start, end);
374         }
375     }
376 
377     @Test
switchFileContainingChart()378     public void switchFileContainingChart() throws Exception {
379         String file1 = prepareData("svt/64K_Chart1.ods");
380         String file2 = prepareData("svt/64K_Chart2.ods");
381         String file3 = prepareData("svt/64K_Chart3.ods");
382         String file4 = prepareData("svt/64K_Chart4.ods");
383         String file5 = prepareData("svt/64K_Chart5.ods");
384         String file6 = prepareData("svt/64K_Chart6.ods");
385 
386         for (i = 1; i <= iterator; i++) {
387             long start = System.currentTimeMillis();
388             app.dispatch(".uno:Open");
389             submitOpenDlg(file1);
390             calc.waitForExistence(20, 2);
391             sleep(2);
392 
393             app.dispatch(".uno:Open");
394             submitOpenDlg(file2);
395             calc.waitForExistence(20, 2);
396             sleep(2);
397 
398             app.dispatch(".uno:Open");
399             submitOpenDlg(file3);
400             calc.waitForExistence(20, 2);
401             sleep(2);
402 
403             app.dispatch(".uno:Open");
404             submitOpenDlg(file4);
405             calc.waitForExistence(20, 2);
406             sleep(2);
407 
408             app.dispatch(".uno:Open");
409             submitOpenDlg(file5);
410             calc.waitForExistence(20, 2);
411             sleep(2);
412 
413             app.dispatch(".uno:Open");
414             submitOpenDlg(file6);
415             calc.waitForExistence(20, 2);
416 
417             sleep(2);
418 
419             selectCertainFile(2);
420             sleep(2);
421             selectCertainFile(3);
422             sleep(2);
423             selectCertainFile(5);
424             sleep(2);
425 
426             closeAlldocuments();
427             sleep(3);
428             long end = System.currentTimeMillis();
429             addRecord(i, start, end);
430         }
431     }
432 
selectCertainFile(int k)433     public void selectCertainFile(int k) {
434         calc.menuItem("Window").select();
435         k += 5;
436         for (int i = 0; i < k; i++) {
437             typeKeys("<down>");
438         }
439         typeKeys("<enter>");
440         sleep(2);
441     }
442 
closeAlldocuments()443     public void closeAlldocuments() {
444         for (int index = 3; index < 9; index++) {
445             calc.menuItem("File->Close").select();
446             sleep(2);
447         }
448 
449     }
450 
inputCells(String[][] inputs)451     public static void inputCells(String[][] inputs) {
452         String back = "";
453         for (int i = 0; i < inputs.length; i++) {
454             calc.typeKeys(back);
455             sleep(1);
456             back = "";
457             for (int j = 0; j < inputs[i].length; j++) {
458                 typeKeys(inputs[i][j]);
459                 typeKeys("<Right>");
460                 sleep(0.5);
461                 back += "<Left>";
462             }
463             back += "<enter>";
464         }
465         sleep(2);
466     }
467 
createNewSC()468     private void createNewSC() {
469         app.dispatch("private:factory/scalc");
470     }
471 
saveAndReopenNewSC(int iterator)472     private void saveAndReopenNewSC(int iterator) {
473         String saveTo = getPath("temp/" + "tempSC_New" + iterator + ".ods");
474         calc.menuItem("File->Save As...").select();
475         FileUtil.deleteFile(saveTo);
476         submitSaveDlg(saveTo);
477         if (activeMsgBox.exists()) {
478             activeMsgBox.yes();
479             sleep(2);
480         }
481         app.dispatch(".uno:CloseDoc");
482         // sleep(2);
483         startCenterOpenButton.waitForExistence(30, 2);
484         startCenterOpenButton.click();
485         submitOpenDlg(saveTo);
486         sleep(1);
487         app.dispatch(".uno:CloseDoc");
488     }
489 
closeWithoutSaveSC()490     private void closeWithoutSaveSC() {
491         calc.menuItem("File->Close").select();
492         activeMsgBox.no();
493         sleep(2);
494     }
495 
addRecord(int i, long start, long end)496     private void addRecord(int i, long start, long end) {
497         HashMap<String, Object>  perf = aoo.getPerfData();
498         xmlResult.addRow("Data",testname.getMethodName(), i, (end - start),
499                 perf.get("vsz"), perf.get("rss"), perf.get("handles"));
500         log.log( Level.INFO, "\t"+testname.getMethodName()+"["+i+"] took "+(end-start)+"ms");
501     }
502 }
503