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