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