/************************************************************** | |
* | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, | |
* software distributed under the License is distributed on an | |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
* KIND, either express or implied. See the License for the | |
* specific language governing permissions and limitations | |
* under the License. | |
* | |
*************************************************************/ | |
package fvt.gui.sw.table; | |
import static org.junit.Assert.*; | |
import static org.openoffice.test.vcl.Tester.*; | |
import static testlib.gui.AppTool.*; | |
import static testlib.gui.UIMap.*; | |
import org.junit.After; | |
import org.junit.Before; | |
import org.junit.Ignore; | |
import org.junit.Rule; | |
import org.junit.Test; | |
import org.openoffice.test.common.Logger; | |
import org.openoffice.test.common.SystemUtil; | |
import testlib.gui.AppTool; | |
public class TableGeneral { | |
@Rule | |
public Logger log = Logger.getLogger(this); | |
@Before | |
public void setUp() throws Exception { | |
// Start OpenOffice | |
app.start(); | |
AppTool.newTextDocument(); | |
// Insert a table | |
app.dispatch(".uno:InsertTable"); | |
} | |
@After | |
public void tearDown() throws Exception { | |
app.stop(); | |
} | |
/** | |
* Test setting table size in text document | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableSize() throws Exception { | |
swTableSizeColBox.focus(); | |
typeKeys("<delete>"); | |
typeKeys("3"); | |
swTableSizeRowBox.focus(); | |
typeKeys("<delete>"); | |
typeKeys("4"); | |
writerInsertTable.ok(); | |
writer.focus(); | |
// verify the rows in the table | |
assertNotNull(statusBar.getItemTextById(8)); | |
for (int i = 0; i < 3; i++) { | |
typeKeys("<down>"); | |
assertNotNull(statusBar.getItemTextById(8)); | |
} | |
typeKeys("<down>"); | |
sleep(1); | |
assertFalse(tableToolbar.exists()); | |
} | |
/** | |
* Test setting table cell background in text document | |
* | |
* @throws Exception | |
*/ | |
@Test | |
@Ignore("Bug #120378- the table cell fill color change when copy one table cell in word processor to presentation") | |
public void testTableBackground() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
writer.focus(); | |
// set table cell background | |
app.dispatch(".uno:TableDialog"); | |
swTableBackground.select(); | |
assertTrue("Table background property dialog pop up", | |
swTableBackground.exists()); | |
swTableBackgroundColor.focus(); | |
swTableBackgroundColor.click(50, 50); | |
swTableBackground.ok(); | |
// verify table cell background color | |
writer.focus(); | |
// select the cell which is filled with color | |
app.dispatch(".uno:EntireCell"); | |
typeKeys("<ctrl c>"); | |
AppTool.newPresentation(); | |
typeKeys("<ctrl v>"); | |
// enable table cell area format dialog | |
app.dispatch(".uno:FormatArea"); | |
sleep(1); | |
assertEquals("Light red", sdTableBACGColorListbox.getSelText()); | |
// close table cell area format dialog | |
sdTableBACGColorArea.cancel(); | |
} | |
/** | |
* Test setting table border in text document | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableBorder() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// set table border as none | |
writer.focus(); | |
app.dispatch(".uno:TableDialog"); | |
swTableBorder.select(); | |
assertTrue("Table border property dialog pop up", | |
swTableBorder.exists()); | |
swTableBorderLineArrange.click(10, 10); | |
swTableBorder.ok(); | |
} | |
/** | |
* Test setting table border line style,line color,spacing to content in | |
* text document | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableBorderLineStyle() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
writer.focus(); | |
app.dispatch(".uno:TableDialog"); | |
swTableBorder.select(); | |
assertTrue("Table border property dialog pop up", | |
swTableBorder.exists()); | |
// set line style | |
swTableBorderLineStyle.select(8); | |
// set line color | |
final int nMagentaIndex = 16; // for AOO's colorpicker as of #i118828# | |
swTableBorderLineColor.select( nMagentaIndex); | |
// set spacing to content | |
swTableSTCLeft.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
// set spacing to content | |
typeKeys("0.5"); | |
// set table shadow | |
swTableShadow.click(40, 10); | |
swTableShadowSize.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("2"); | |
swTableShadowColor.select( nMagentaIndex); | |
swTableBorder.ok(); | |
// verify the setting property of table | |
writer.focus(); | |
app.dispatch(".uno:TableDialog"); | |
swTableBorder.select(); | |
assertEquals("2.60 pt", swTableBorderLineStyle.getItemText(8)); | |
assertEquals("Magenta", swTableBorderLineColor.getItemText( nMagentaIndex)); | |
assertEquals("0.50 \"", swTableSTCLeft.getText()); | |
assertEquals("0.50 \"", swTableSTCRight.getText()); | |
assertEquals("0.50 \"", swTableSTCTop.getText()); | |
assertEquals("0.50 \"", swTableSTCBottom.getText()); | |
assertEquals("1.97 \"", swTableShadowSize.getText()); | |
assertEquals("Magenta", swTableShadowColor.getItemText( nMagentaIndex)); | |
assertTrue("SWTableSTC_SYNC", swTableSTCSYNC.isChecked()); | |
swTableBorder.close(); | |
// uncheck Synchronize box and set spacing to content | |
writer.focus(); | |
app.dispatch(".uno:TableDialog"); | |
swTableBorder.select(); | |
swTableSTCSYNC.uncheck(); | |
// set left spacing to content | |
swTableSTCLeft.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("0.5"); | |
// set right spacing to content | |
swTableSTCRight.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("0.8"); | |
// set top spacing to content | |
swTableSTCTop.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("1.0"); | |
// set bottom spacing to content | |
swTableSTCBottom.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("2"); | |
swTableBorder.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
writer.focus(); | |
// verify the setting value of spacing to content for table | |
app.dispatch(".uno:TableDialog"); | |
swTableBorder.select(); | |
assertEquals("0.50 \"", swTableSTCLeft.getText()); | |
assertEquals("0.80 \"", swTableSTCRight.getText()); | |
assertEquals("1.00 \"", swTableSTCTop.getText()); | |
assertEquals("1.97 \"", swTableSTCBottom.getText()); | |
assertFalse("SWTableSTC_SYNC", swTableSTCSYNC.isChecked()); | |
swTableBorder.close(); | |
} | |
/** | |
* create table with auto format | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableAutoFormat() throws Exception { | |
// create table with auto format | |
button("sw:PushButton:DLG_INSERT_TABLE:BT_AUTOFORMAT").click(); | |
assertTrue("Table auto format dialog pop up", swTableAutoFMT.exists()); | |
swTableAutoFormatListbox.select(3); | |
swTableAutoFMT.ok(); | |
// verify the auto format is that just selected | |
button("sw:PushButton:DLG_INSERT_TABLE:BT_AUTOFORMAT").click(); | |
assertEquals("Blue", swTableAutoFormatListbox.getSelText()); | |
swTableAutoFMT.close(); | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
} | |
/** | |
* set row height and select row,insert/delete row | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableRowHeight() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// set row height | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableRowHeightMenu.select(); | |
assertTrue(swTableSetRowHeightDialog.exists()); | |
swTableSetRowHeight.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("0.5"); | |
swTableSetRowHeightDialog.ok(); | |
// verify row height | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableRowHeightMenu.select(); | |
assertTrue(swTableSetRowHeightDialog.exists()); | |
assertEquals("0.50 \"", swTableSetRowHeight.getText()); | |
swTableSetRowHeightDialog.close(); | |
} | |
/** | |
* test select row | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableSelectRow() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// select row | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableSelectRowMenu.select(); | |
// verify select one row successfully | |
typeKeys("<ctrl c>"); | |
typeKeys("<down>"); | |
typeKeys("<down>"); | |
typeKeys("<enter>"); | |
typeKeys("<ctrl v>"); | |
typeKeys("<up>"); | |
assertTrue(tableToolbar.exists()); | |
} | |
/** | |
* insert row and verify how many row inserted | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableInsertRow() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableInsertRowMenu.select(); | |
assertTrue("SWTable_InsertRow Dialog pop up", swTableInsertRow.exists()); | |
swTableInsertRowColumnSetNumber.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("3"); | |
swTableInsertRow.ok(); | |
writer.focus(); | |
// verify how many rows in the table | |
assertNotNull(statusBar.getItemTextById(8)); | |
for (int i = 0; i < 4; i++) { | |
typeKeys("<down>"); | |
assertNotNull(statusBar.getItemTextById(8)); | |
} | |
typeKeys("<down>"); | |
sleep(1); | |
assertFalse(tableToolbar.exists()); | |
} | |
/** | |
* delete row and verify row | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableRowDelete() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// delete row | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableRowDleteMenu.select(); | |
// verify whether delete row | |
writer.focus(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
typeKeys("<down>"); | |
sleep(1); | |
assertFalse(tableToolbar.exists()); | |
} | |
/** | |
* set column width and verify | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableColumnWidth() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// set column width | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableColumnWidthMenu.select(); | |
swTableSetColumnWidth.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("2"); | |
swTableSetColumnDialog.ok(); | |
// verify column width | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableColumnWidthMenu.select(); | |
assertEquals("2.00 \"", swTableSetColumnWidth.getText()); | |
} | |
/** | |
* select column and verify | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableColumnSelect() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableColumnSelectMenu.select(); | |
// verify select one column | |
typeKeys("<ctrl c>"); | |
typeKeys("<down>"); | |
typeKeys("<down>"); | |
typeKeys("<enter>"); | |
typeKeys("<ctrl v>"); | |
typeKeys("<up>"); | |
assertTrue(tableToolbar.exists()); | |
} | |
/** | |
* insert column and verify | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableColumnInsert() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// insert column | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableColumnInsertMenu.select(); | |
swTableInsertRowColumnSetNumber.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("3"); | |
swTableInsertColumn.ok(); | |
// verify insert column successfully | |
writer.focus(); | |
assertTrue(tableToolbar.exists()); | |
for (int i = 0; i < 9; i++) { | |
typeKeys("<right>"); | |
sleep(1); | |
assertTrue(tableToolbar.exists()); | |
} | |
typeKeys("<right>"); | |
sleep(1); | |
assertFalse(tableToolbar.exists()); | |
} | |
/** | |
* delete column and verify whether delete or not | |
* | |
* @throws Exception | |
*/ | |
public void testTableColumnDelete() throws Exception { | |
writerInsertTable.ok(); | |
assertNotNull(statusBar.getItemTextById(8)); | |
// delete column | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableColumnDeleteMenu.select(); | |
// verify delete column | |
writer.focus(); | |
assertTrue(tableToolbar.exists()); | |
for (int i = 0; i < 7; i++) { | |
typeKeys("<right>"); | |
assertTrue(tableToolbar.exists()); | |
} | |
sleep(1); | |
assertFalse(tableToolbar.exists()); | |
} | |
/** | |
* split cell | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testTableCellSplit() throws Exception { | |
writerInsertTable.ok(); | |
assertTrue(tableToolbar.exists()); | |
for (int k = 0; k < 2; k++) { | |
writer.focus(); | |
writer.openContextMenu(); | |
swTableCellSplitMenu.select(); | |
swTableCellSplitNumber.focus(); | |
typeKeys("<ctrl a>"); | |
typeKeys("<delete>"); | |
typeKeys("2"); | |
if (k == 0) { | |
// split table cell horizontally | |
swTableCellSplitDialog.ok(); | |
} else { | |
// split table cell | |
swTableCellSplitVERTButton.check(); | |
// vertically | |
swTableCellSplitDialog.ok(); | |
} | |
} | |
// verify cell split successfully | |
writer.focus(); | |
assertTrue(tableToolbar.exists()); | |
for (int i = 0; i < 7; i++) { | |
typeKeys("<right>"); | |
assertTrue(tableToolbar.exists()); | |
} | |
sleep(1); | |
assertFalse(tableToolbar.exists()); | |
} | |
/** | |
* Test convert table to text in text document | |
* | |
* @throws Exception | |
*/ | |
@Test | |
public void testConvertTableToText() throws Exception { | |
writerInsertTable.ok(); | |
writer.focus(); | |
typeKeys("1<right>2<right>3<right>4"); | |
sleep(1); | |
// Convert table to text | |
app.dispatch(".uno:ConvertTableToText"); | |
assertTrue("Convert Table to Text dialog pop up", | |
writerConvertTableToTextDlg.exists()); | |
// typeKeys("<enter>"); | |
writerConvertTableToTextDlg.ok(); | |
// Verify if text is converted successfully | |
app.dispatch(".uno:SelectAll"); | |
app.dispatch(".uno:Copy"); | |
if (SystemUtil.isWindows()) | |
assertEquals("Converted text", "1\t2\r\n3\t4\r\n", | |
app.getClipboard()); | |
else | |
assertEquals("Converted text", "1\t2\n3\t4\n", app.getClipboard()); | |
} | |
} |