blob: 86fdf79a472cf8a6723b5fa0b4fb9d525a563134 [file] [log] [blame]
/**************************************************************
*
* 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());
}
}