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