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