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