/************************************************************** * * 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(""); typeKeys("3"); swTableSizeRowBox.focus(); typeKeys(""); typeKeys("4"); writerInsertTable.ok(); writer.focus(); // verify the rows in the table assertNotNull(statusBar.getItemTextById(8)); for (int i = 0; i < 3; i++) { typeKeys(""); assertNotNull(statusBar.getItemTextById(8)); } typeKeys(""); 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(""); AppTool.newPresentation(); typeKeys(""); // 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(""); typeKeys(""); // set spacing to content typeKeys("0.5"); // set table shadow swTableShadow.click(40, 10); swTableShadowSize.focus(); typeKeys(""); typeKeys(""); 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(); sleep(0.2); typeKeys(""); typeKeys(""); typeKeys("0.5"); // set right spacing to content swTableSTCRight.focus(); typeKeys(""); typeKeys(""); typeKeys("0.8"); // set top spacing to content swTableSTCTop.focus(); typeKeys(""); typeKeys(""); typeKeys("1.0"); // set bottom spacing to content swTableSTCBottom.focus(); typeKeys(""); typeKeys(""); 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(""); typeKeys(""); 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(""); typeKeys(""); typeKeys(""); typeKeys(""); typeKeys(""); typeKeys(""); 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(""); typeKeys(""); 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(""); assertNotNull(statusBar.getItemTextById(8)); } typeKeys(""); 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(""); 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(""); typeKeys(""); 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(""); typeKeys(""); typeKeys(""); typeKeys(""); typeKeys(""); typeKeys(""); 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(""); typeKeys(""); typeKeys("3"); swTableInsertColumn.ok(); // verify insert column successfully writer.focus(); assertTrue(tableToolbar.exists()); for (int i = 0; i < 9; i++) { typeKeys(""); sleep(1); assertTrue(tableToolbar.exists()); } typeKeys(""); 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(""); 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(""); typeKeys(""); 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(""); 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("1234"); sleep(1); // Convert table to text app.dispatch(".uno:ConvertTableToText"); assertTrue("Convert Table to Text dialog pop up", writerConvertTableToTextDlg.exists()); // typeKeys(""); 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()); } }