xref: /AOO42X/test/testgui/source/fvt/gui/sw/table/TableGeneral.java (revision 07d7dbdcb8e526dfaf85923a181c45494526d79d)
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 package fvt.gui.sw.table;
23 
24 import static org.junit.Assert.*;
25 import static org.openoffice.test.vcl.Tester.*;
26 import static testlib.gui.AppTool.*;
27 import static testlib.gui.UIMap.*;
28 
29 import org.junit.After;
30 import org.junit.Before;
31 import org.junit.Ignore;
32 import org.junit.Rule;
33 import org.junit.Test;
34 import org.openoffice.test.common.Logger;
35 import org.openoffice.test.common.SystemUtil;
36 
37 
38 public class TableGeneral {
39 
40     @Rule
41     public Logger log = Logger.getLogger(this);
42 
43     @Before
44     public void setUp() throws Exception {
45         // Start OpenOffice
46         app.start();
47 
48         // Create a new text document
49         app.dispatch("private:factory/swriter");
50 
51         // Insert a table
52         app.dispatch(".uno:InsertTable");
53         assertTrue("Insert Table dialog pop up", writerInsertTable.exists());
54     }
55 
56     @After
57     public void tearDown() throws Exception {
58         app.close();
59     }
60 
61     @Test
62     // Test setting table size in text document
63     public void testTableSize() throws Exception {
64 
65         swTableSizeColBox.focus();
66         typeKeys("<delete>");
67         typeKeys("3");
68         swTableSizeRowBox.focus();
69         typeKeys("<delete>");
70         typeKeys("4");
71         writerInsertTable.ok();
72 
73         writer.focus(); // verify how many rows in the table
74         assertNotNull(statusBar.getItemTextById(8));
75         for (int i = 0; i < 3; i++) {
76             typeKeys("<down>");
77             assertNotNull(statusBar.getItemTextById(8));
78         }
79         typeKeys("<down>");
80         sleep(1);
81         assertFalse(tableToolbar.exists());
82     }
83 
84     // Test setting table cell background in text document
85 
86     @Test
87     @Ignore("Bug #120378")
88     public void testTableBackground() throws Exception {
89         writerInsertTable.ok();
90         assertNotNull(statusBar.getItemTextById(8));
91         writer.focus();
92         // set table cell background
93         app.dispatch(".uno:TableDialog");
94         swTableBackground.select();
95         assertTrue("Table background property dialog pop up",
96                 swTableBackground.exists());
97         ;
98         swTableBackgroundColor.focus();
99         swTableBackgroundColor.click(50, 50);
100         swTableBackground.ok();
101         // verify table cell background color
102         writer.focus();
103         // select the cell which is filled with color
104         app.dispatch(".uno:EntireCell");
105 
106         typeKeys("<ctrl c>");
107         app.dispatch("private:factory/simpress?slot=6686");
108         presentationWizard.ok();
109         typeKeys("<ctrl v>");
110         // enable table cell area format dialog
111         app.dispatch(".uno:FormatArea");
112         sleep(1);
113         assertEquals("Light red", sdTableBACGColorListbox.getSelText());
114         // close table cell area format dialog
115         sdTableBACGColorArea.cancel();
116     }
117 
118     // Test setting table border in text document
119 
120     @Test
121     public void testTableBorder() throws Exception {
122         writerInsertTable.ok();
123         assertNotNull(statusBar.getItemTextById(8));
124         // set table border as none
125         writer.focus();
126         app.dispatch(".uno:TableDialog");
127         swTableBorder.select();
128         assertTrue("Table border property dialog pop up",
129                 swTableBorder.exists());
130         ;
131         swTableBorderLineArrange.click(10, 10);
132         swTableBorder.ok();
133     }
134 
135     // Test setting table border line style,line color,spacing to content in
136     // text document
137 
138     @Test
139     public void testTableBorderLineStyle() throws Exception {
140         writerInsertTable.ok();
141         assertNotNull(statusBar.getItemTextById(8));
142         writer.focus();
143         app.dispatch(".uno:TableDialog");
144         swTableBorder.select();
145         assertTrue("Table border property dialog pop up",
146                 swTableBorder.exists());
147         ;
148         swTableBorderLineStyle.select(8); // set line style
149         swTableBorderLineColor.select(5); // set line color
150         swTableSTCLeft.focus(); // set spacing to content
151         typeKeys("<ctrl a>");
152         typeKeys("<delete>");
153         typeKeys("0.5"); // set spacing to content
154         swTableShadow.click(40, 10); // set table shadow
155         swTableShadowSize.focus();
156         typeKeys("<ctrl a>");
157         typeKeys("<delete>");
158         typeKeys("2");
159         swTableShadowColor.select(5);
160         swTableBorder.ok();
161 
162         writer.focus(); // verify the setting property of table
163         app.dispatch(".uno:TableDialog");
164         swTableBorder.select();
165         assertEquals("2.60 pt", swTableBorderLineStyle.getItemText(8));
166         assertEquals("Magenta", swTableBorderLineColor.getItemText(5));
167         assertEquals("0.50\"", swTableSTCLeft.getText());
168         assertEquals("0.50\"", swTableSTCRight.getText());
169         assertEquals("0.50\"", swTableSTCTop.getText());
170         assertEquals("0.50\"", swTableSTCBottom.getText());
171         assertEquals("1.97\"", swTableShadowSize.getText());
172         assertEquals("Magenta", swTableShadowColor.getItemText(5));
173         assertTrue("SWTableSTC_SYNC", swTableSTCSYNC.isChecked());
174         swTableBorder.close();
175 
176         // uncheck Synchronize box and set spacing to content
177 
178         writer.focus();
179         app.dispatch(".uno:TableDialog");
180         swTableBorder.select();
181         swTableSTCSYNC.uncheck();
182         swTableSTCLeft.focus();// set left spacing to content
183         typeKeys("<ctrl a>");
184         typeKeys("<delete>");
185         typeKeys("0.5");
186         swTableSTCRight.focus();// set right spacing to content
187         typeKeys("<ctrl a>");
188         typeKeys("<delete>");
189         typeKeys("0.8");
190         swTableSTCTop.focus();// set top spacing to content
191         typeKeys("<ctrl a>");
192         typeKeys("<delete>");
193         typeKeys("1.0");
194         swTableSTCBottom.focus();// set bottom spacing to content
195         typeKeys("<ctrl a>");
196         typeKeys("<delete>");
197         typeKeys("2");
198         swTableBorder.ok();
199         assertNotNull(statusBar.getItemTextById(8));
200 
201         writer.focus(); // verify the setting value of spacing to content for
202                         // tabel
203         app.dispatch(".uno:TableDialog");
204         swTableBorder.select();
205         assertEquals("0.50\"", swTableSTCLeft.getText());
206         assertEquals("0.80\"", swTableSTCRight.getText());
207         assertEquals("1.00\"", swTableSTCTop.getText());
208         assertEquals("1.97\"", swTableSTCBottom.getText());
209         assertFalse("SWTableSTC_SYNC", swTableSTCSYNC.isChecked());
210         swTableBorder.close();
211     }
212 
213     // create table with auto format
214 
215     @Test
216     public void testTableAutoFormat() throws Exception {
217         // create table with auto format
218         button("sw:PushButton:DLG_INSERT_TABLE:BT_AUTOFORMAT").click();
219         assertTrue("Table auto format dialog pop up", swTableAutoFMT.exists());
220         swTableAutoFormatListbox.select(3);
221         swTableAutoFMT.ok();
222         // verify the auto format is that just selected
223         button("sw:PushButton:DLG_INSERT_TABLE:BT_AUTOFORMAT").click();
224         assertEquals("Blue", swTableAutoFormatListbox.getSelText());
225         swTableAutoFMT.close();
226         writerInsertTable.ok();
227         assertNotNull(statusBar.getItemTextById(8));
228 
229     }
230 
231     // set row height and select row,insert/delete row
232 
233     @Test
234     public void testTableRowHeight() throws Exception {
235         writerInsertTable.ok();
236         assertNotNull(statusBar.getItemTextById(8));
237 
238         // set row height
239         writer.focus();
240         writer.openContextMenu();
241         swTableRowHeightMenu.select();
242         assertTrue(swTableSetRowHeightDialog.exists());
243         swTableSetRowHeight.focus();
244         typeKeys("<ctrl a>");
245         typeKeys("<delete>");
246         typeKeys("0.5");
247         swTableSetRowHeightDialog.ok();
248 
249         // verify row height
250         writer.focus();
251         writer.openContextMenu();
252         swTableRowHeightMenu.select();
253         assertTrue(swTableSetRowHeightDialog.exists());
254         assertEquals("0.50\"", swTableSetRowHeight.getText());
255         swTableSetRowHeightDialog.close();
256     }
257 
258     // select row
259     @Test
260     public void testTableSelectRow() throws Exception {
261         writerInsertTable.ok();
262         assertNotNull(statusBar.getItemTextById(8));
263         // select row
264         writer.focus();
265         writer.openContextMenu();
266         swTableSelectRowMenu.select();
267 
268         // verify select one row successfully
269         typeKeys("<ctrl c>");
270         typeKeys("<down>");
271         typeKeys("<down>");
272         typeKeys("<enter>");
273         typeKeys("<ctrl v>");
274         typeKeys("<up>");
275         assertTrue(tableToolbar.exists());
276 
277     }
278 
279     // insert row and verify how many row inserted
280     @Test
281     public void testTableInsertRow() throws Exception {
282         writerInsertTable.ok();
283         assertNotNull(statusBar.getItemTextById(8));
284         writer.focus();
285         writer.openContextMenu();
286         swTableInsertRowMenu.select();
287         assertTrue("SWTable_InsertRow Dialog pop up",
288                 swTableInsertRow.exists());
289         swTableInsertRowColumnSetNumber.focus();
290         typeKeys("<ctrl a>");
291         typeKeys("<delete>");
292         typeKeys("3");
293         swTableInsertRow.ok();
294 
295         writer.focus(); // verify how many rows in the table
296         assertNotNull(statusBar.getItemTextById(8));
297         for (int i = 0; i < 4; i++) {
298             typeKeys("<down>");
299             assertNotNull(statusBar.getItemTextById(8));
300         }
301         typeKeys("<down>");
302         sleep(1);
303         assertFalse(tableToolbar.exists());
304     }
305 
306     // delete row and verify row
307     @Test
308     public void testTableRowDelete() throws Exception {
309         writerInsertTable.ok();
310         assertNotNull(statusBar.getItemTextById(8));
311         // delete row
312         writer.focus();
313         writer.openContextMenu();
314         swTableRowDleteMenu.select();
315         // verify whether delete row
316         writer.focus();
317         assertNotNull(statusBar.getItemTextById(8));
318         typeKeys("<down>");
319         sleep(1);
320         assertFalse(tableToolbar.exists());
321 
322     }
323 
324     // set column width and verify
325     @Test
326     public void testTableColumnWidth() throws Exception {
327         writerInsertTable.ok();
328         assertNotNull(statusBar.getItemTextById(8));
329         // set column width
330         writer.focus();
331         writer.openContextMenu();
332         swTableColumnWidthMenu.select();
333         swTableSetColumnWidth.focus();
334         typeKeys("<ctrl a>");
335         typeKeys("<delete>");
336         typeKeys("2");
337         swTableSetColumnDialog.ok();
338         // verify column width
339         writer.focus();
340         writer.openContextMenu();
341         swTableColumnWidthMenu.select();
342         assertEquals("2.00\"", swTableSetColumnWidth.getText());
343 
344     }
345 
346     // select column and verify
347     @Test
348     public void testTableColumnSelect() throws Exception {
349         writerInsertTable.ok();
350         assertNotNull(statusBar.getItemTextById(8));
351         writer.focus();
352         writer.openContextMenu();
353         swTableColumnSelectMenu.select();
354 
355         // verify select one column
356         typeKeys("<ctrl c>");
357         typeKeys("<down>");
358         typeKeys("<down>");
359         typeKeys("<enter>");
360         typeKeys("<ctrl v>");
361         typeKeys("<up>");
362         assertTrue(tableToolbar.exists());
363 
364     }
365 
366     // insert column and verify
367     @Test
368     public void testTableColumnInsert() throws Exception {
369         writerInsertTable.ok();
370         assertNotNull(statusBar.getItemTextById(8));
371         // insert column
372         writer.focus();
373         writer.openContextMenu();
374         swTableColumnInsertMenu.select();
375         swTableInsertRowColumnSetNumber.focus();
376         typeKeys("<ctrl a>");
377         typeKeys("<delete>");
378         typeKeys("3");
379         swTableInsertColumn.ok();
380         // verify insert column successfully
381         writer.focus();
382         assertTrue(tableToolbar.exists());
383         for (int i = 0; i < 9; i++) {
384             typeKeys("<right>");
385             sleep(1);
386             assertTrue(tableToolbar.exists());
387         }
388         typeKeys("<right>");
389         sleep(1);
390         assertFalse(tableToolbar.exists());
391     }
392 
393     // delete column and verify whether delete or not
394     public void testTableColumnDelete() throws Exception {
395         writerInsertTable.ok();
396         assertNotNull(statusBar.getItemTextById(8));
397         // delete column
398         writer.focus();
399         writer.openContextMenu();
400         swTableColumnDeleteMenu.select();
401         // verify delete column
402         writer.focus();
403         assertTrue(tableToolbar.exists());
404         for (int i = 0; i < 7; i++) {
405             typeKeys("<right>");
406             assertTrue(tableToolbar.exists());
407         }
408         sleep(1);
409         assertFalse(tableToolbar.exists());
410     }
411 
412     // split cell
413     @Test
414     public void testTableCellSplit() throws Exception {
415         writerInsertTable.ok();
416         assertTrue(tableToolbar.exists());
417         for (int k = 0; k < 2; k++) {
418             writer.focus();
419             writer.openContextMenu();
420             swTableCellSplitMenu.select();
421             swTableCellSplitNumber.focus();
422             typeKeys("<ctrl a>");
423             typeKeys("<delete>");
424             typeKeys("2");
425             if (k == 0) {
426                 swTableCellSplitDialog.ok(); // split table cell horizontally
427             } else {
428                 swTableCellSplitVERTButton.check(); // split table cell
429                 // vertically
430                 swTableCellSplitDialog.ok();
431             }
432         }
433         // verify cell split successfully
434         writer.focus();
435         assertTrue(tableToolbar.exists());
436         for (int i = 0; i < 7; i++) {
437             typeKeys("<right>");
438             assertTrue(tableToolbar.exists());
439         }
440         sleep(1);
441         assertFalse(tableToolbar.exists());
442     }
443 
444     /**
445      * Test convert table to text in text document
446      *
447      * @throws Exception
448      */
449     @Test
450     public void testConvertTableToText() throws Exception {
451         writerInsertTable.ok();
452         writer.focus();
453         typeKeys("1<right>2<right>3<right>4");
454         sleep(1);
455 
456         // Convert table to text
457         app.dispatch(".uno:ConvertTableToText");
458         assertTrue("Convert Table to Text dialog pop up", writerConvertTableToTextDlg.exists());
459         // typeKeys("<enter>");
460         writerConvertTableToTextDlg.ok(); // "Enter" does not work on linux
461 
462         // Verify if text is converted successfully
463         app.dispatch(".uno:SelectAll");
464         app.dispatch(".uno:Copy");
465         if (SystemUtil.isWindows())
466             assertEquals("Converted text", "1\t2\r\n3\t4\r\n", app.getClipboard()); // in
467                                                                                     // windows,
468                                                                                     // \n
469                                                                                     // is
470                                                                                     // \r\n
471         else
472             assertEquals("Converted text", "1\t2\n3\t4\n", app.getClipboard());
473     }
474 }
475