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