blob: 349ce115ccd7b0eeb666c649774161a10cba8ec3 [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 bvt.gui;
import static org.junit.Assert.*;
import static org.openoffice.test.common.Testspace.*;
import static org.openoffice.test.vcl.Tester.*;
import static testlib.gui.AppTool.*;
import static testlib.gui.UIMap.*;
import java.awt.Rectangle;
import java.io.File;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.openoffice.test.common.FileUtil;
import org.openoffice.test.common.GraphicsUtil;
import org.openoffice.test.common.Logger;
import testlib.gui.SCTool;
/**
*
*/
public class BasicFunctionTest {
@Rule
public Logger log = Logger.getLogger(this);
@BeforeClass
public static void beforeClass() {
app.clean();
}
@AfterClass
public static void afterClass() {
app.stop();
}
@Before
public void before() {
app.stop();
app.start();
}
@Test
public void smokeTest() {
File smoketestOutput = new File(aoo.getUserInstallation(), "user/temp");
prepareData("TestExtension.oxt");
// Open sample file smoketestdoc.sxw
open(prepareData("smoketestdoc.sxw"));
writer.waitForEnabled(10, 2);
// Run test cases
app.dispatch("vnd.sun.star.script:Standard.Global.StartTestWithDefaultOptions?language=Basic&location=document", 120);
String smoketestlog = FileUtil.readFileAsString(new File(smoketestOutput, "smoketest.log"));
String testclosurelog = FileUtil.readFileAsString(new File(smoketestOutput, "testclosure.log"));
log.info(smoketestlog + "\n" + testclosurelog);
assertTrue("No Error", !smoketestlog.contains("error") && !testclosurelog.contains("error"));
}
@Test
public void testExportAsPDF() throws Exception {
String file = prepareData("bvt/pdf.odt");
String exportTo1 = getPath("temp/1.pdf");
String exportTo2 = getPath("temp/2.pdf");
deleteFile(exportTo1);
deleteFile(exportTo2);
open(file);
writer.waitForExistence(10, 1);
app.dispatch(".uno:ExportToPDF");
pdfGeneralPage.ok();
submitSaveDlg(exportTo1);
sleep(1);
String magic = FileUtil.readFileAsString(exportTo1).substring(0, 4);
assertEquals("PDF is exported?", "%PDF", magic);
button(".uno:ExportDirectToPDF").click();//Click via toolbar
submitSaveDlg(exportTo2);
sleep(1);
magic = FileUtil.readFileAsString(exportTo2).substring(0, 4);
assertEquals("PDF is exported directly?", "%PDF", magic);
}
/**
* Test the File -- Print Dialog show
*
*/
@Test
public void testPrinter() {
// Create a new text document
newTextDocument();
app.dispatch(".uno:PrinterSetup");
if (activeMsgBox.exists(2))
activeMsgBox.ok();
// PrintService[] ps = PrintServiceLookup.lookupPrintServices(null, null);
// String[] names = new String[ps.length];
// for (int i = 0; i < ps.length; i++) {
// names[i] = ps[i].getName();
// }
//
// assertArrayEquals("Printers Names", names, printerSetUpDlgPrinterNames.getItemsText());
assertTrue("Printer Setup dialog appears", printerSetUpDlg.exists(3));
printerSetUpDlg.cancel();
}
/**
* Test the File -- Java Dialog show
*
*/
// @Test
// public void testJavaDialog() {
//
// // Create a new text document and launch a Wizards dialog which need JVM
// // work correctly.
// app.dispatch("private:factory/swriter");
// File tempfile = new File(oo.getUserInstallation(), "user/template/myAgendaTemplate.ott");
// FileUtil.deleteFile(tempfile);
// sleep(3);
// app.dispatch("service:com.sun.star.wizards.agenda.CallWizard?start");
// sleep(5);
// assertTrue(Wizards_AgendaDialog.exists(10));
// Wizards_AgendaDialog_FinishButton.click();
// sleep(10);
// writer.focus();
// sleep(1);
// app.dispatch(".uno:SelectAll");
// typeKeys("<$copy>");
// // System.out.println("now txt:"+app.getClipboard());
// // assertTrue(app.getClipboard().startsWith("<Name>"));
// assertNotNull(app.getClipboard());
// }
/**
* Test the Tools / Macros / Organize Dialogs" show
*
*/
@Test
public void testRunMacro() {
open(prepareData("bvt/macro.ods"));
calc.waitForExistence(10, 2);
app.dispatch(".uno:RunMacro");
runMacroDlgCategories.expand("macro.ods");
runMacroDlgCategories.expand("Standard");
runMacroDlgCategories.select("Module1");
runMacroDlgCommands.select(0);
runMacroDlg.ok();
assertEquals("A3 should be =1+3", "4", SCTool.getCellText("A3"));
discard();
}
/**
* Test the About Dialog show
*
*/
@Test
public void testHelp() {
app.dispatch(".uno:About");
assertTrue(aboutDialog.exists(5));
aboutDialog.ok();
sleep(1);
typeKeys("<F1>");
assertTrue(helpWindow.exists(5));
helpWindow.close();
}
/**
* Test inserting a picture in text document
*
* @throws Exception
*/
@Test
public void testInsertPictureInDocument() throws Exception {
String bmp_green = prepareData("image/green_256x256.bmp");
String bmp_red = prepareData("image/red_256x256.bmp");
// Create a new text document
newTextDocument();
// Insert a picture fully filled with green
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(bmp_green);
writer.click(5,200);
sleep(1);
// Verify if the picture is inserted successfully
Rectangle rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFF00FF00);
assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
// insert another picture
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(bmp_red);
writer.click(5, 200);
sleep(1);
// Verify if the picture is inserted successfully
rectangle = GraphicsUtil.findRectangle(writer.getScreenRectangle(), 0xFFFF0000);
assertTrue("Green Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
discard();
}
@Test
public void testInsertPictureInSpreadsheet() throws Exception {
String bmp_green = prepareData("image/green_64x64.png");
String bmp_red = prepareData("image/red_64x64.png");
newSpreadsheet();
// Insert a picture fully filled with green
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(bmp_green);
calc.click(5, 150);
sleep(1);
// Verify if the picture is inserted successfully
Rectangle rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFF00FF00);
assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
SCTool.selectRange("C1");
// insert another picture
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(bmp_red);
calc.click(5, 150);
sleep(1);
// Verify if the picture is inserted successfully
rectangle = GraphicsUtil.findRectangle(calc.getScreenRectangle(), 0xFFFF0000);
assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
discard();
}
@Test
public void testInsertPictureInPresentation() throws Exception {
String bmp_green = prepareData("image/green_256x256.bmp");
String bmp_red = prepareData("image/red_256x256.bmp");
newPresentation();
// Insert a picture fully filled with green
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(bmp_green);
impress.click(5, 5);
sleep(1);
// Verify if the picture is inserted successfully
Rectangle rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFF00FF00);
assertTrue("Green Picture is inserted?" + rectangle, rectangle != null && rectangle.getWidth() > 10);
// insert another picture
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(bmp_red);
impress.click(1, 1);
sleep(1);
// Verify if the picture is inserted successfully
rectangle = GraphicsUtil.findRectangle(impress.getScreenRectangle(), 0xFFFF0000);
assertTrue("Red Picture is inserted? " + rectangle, rectangle != null && rectangle.getWidth() > 10);
discard();
}
@Test
public void testSlideShow() throws Exception {
open(prepareData("bvt/slideshow.odp"));
impress.waitForExistence(10, 2);
sleep(1);
impress.typeKeys("<F5>");
sleep(3);
Rectangle rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFFFF0000);
assertNotNull("1st slide appears", rectangle);
slideShow.click(0.5, 0.5);
sleep(2);
rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF00FF00);
assertNotNull("2nd slide appears", rectangle);
typeKeys("<enter>");
sleep(2);
rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
assertNotNull("3rd slide appears", rectangle);
slideShow.click(0.5, 0.5);
sleep(2);
rectangle = GraphicsUtil.findRectangle(slideShow.getScreenRectangle(), 0xFF0000FF);
assertNull("The end", rectangle);
slideShow.click(0.5, 0.5);
sleep(3);
assertFalse("Quit", slideShow.exists());
}
@Test
public void testFind() {
open(prepareData("bvt/find.odt"));
writer.waitForExistence(10, 2);
app.dispatch(".uno:SearchDialog");
findDlgFor.setText("OpenOffice");
findDlgFind.click();
sleep(1);
writer.typeKeys("<$copy>");
assertEquals("OpenOffice", app.getClipboard());
findDlgFindAll.click();
sleep(1);
writer.typeKeys("<$copy>");
assertEquals("OpenOfficeOpenOfficeOpenOffice", app.getClipboard());
findDlgReplaceWith.setText("Awesome OpenOffice");
findDlgReplaceAll.click();
sleep(1);
msgbox("Search key replaced 3 times.").ok();
findDlg.close();
sleep(1);
assertEquals(
"Apache Awesome OpenOffice is comprised of six personal productivity applications: a word processor (and its web-authoring component), spreadsheet, presentation graphics, drawing, equation editor, and database. Awesome OpenOffice is released on Windows, Solaris, Linux and Macintosh operation systems, with more communities joining, including a mature FreeBSD port. Awesome OpenOffice is localized, supporting over 110 languages worldwide. ",
copyAll());
}
@Test
public void testFillInSpreadsheet() {
String[][] expected1 = new String[][] { { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, { "1" }, };
String[][] expected2 = new String[][] { { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, { "2" }, };
String[][] expected3 = new String[][] { { "Hi friends", "Hi friends", "Hi friends", "Hi friends" } };
String[][] expected4 = new String[][] { { "99999.999", "99999.999", "99999.999", "99999.999" } };
String[][] expected5 = new String[][] {
{ "99999.999", "-10" }, { "100000.999", "-9" }, { "100001.999", "-8" }, { "100002.999", "-7" }, { "100003.999", "-6" }
};
newSpreadsheet();
SCTool.selectRange("C5");
typeKeys("1<enter>");
SCTool.selectRange("C5:C10");
app.dispatch(".uno:FillDown");
assertArrayEquals("Fill Down:", expected1, SCTool.getCellTexts("C5:C10"));
SCTool.selectRange("D10");
typeKeys("2<enter>");
SCTool.selectRange("D5:D10");
app.dispatch(".uno:FillUp");
assertArrayEquals("Fill Up:", expected2, SCTool.getCellTexts("D5:D10"));
SCTool.selectRange("A1");
typeKeys("Hi friends<enter>");
SCTool.selectRange("A1:D1");
app.dispatch(".uno:FillRight");
assertArrayEquals("Fill Right:", expected3, SCTool.getCellTexts("A1:D1"));
SCTool.selectRange("D2");
typeKeys("99999.999<enter>");
SCTool.selectRange("A2:D2");
app.dispatch(".uno:FillLeft");
assertArrayEquals("Fill left:", expected4, SCTool.getCellTexts("A2:D2"));
SCTool.selectRange("E1");
typeKeys("99999.999<tab>-10<enter>");
SCTool.selectRange("E1:F5");
app.dispatch(".uno:FillSeries");
fillSeriesDlg.ok();
sleep(1);
assertArrayEquals("Fill series..", expected5, SCTool.getCellTexts("E1:F5"));
discard();
}
@Test
public void testSort() {
String[][] expected1 = new String[][] { { "-9999999" }, { "-1.1" }, { "-1.1" }, { "0" }, { "0" }, { "0.1" }, { "10" }, { "12" }, { "9999999" }, { "9999999" },
};
String[][] expected2 = new String[][] { { "TRUE", "Oracle" }, { "TRUE", "OpenOffice" }, { "FALSE", "OpenOffice" }, { "TRUE", "IBM" }, { "FALSE", "IBM" },
{ "TRUE", "Google" }, { "FALSE", "facebook " }, { "TRUE", "Apache" }, { "TRUE", "!yahoo" }, { "TRUE", "" },
};
String[][] expected3 = new String[][] { { "Sunday" }, { "Monday" }, { "Tuesday" }, { "Wednesday" }, { "Thursday" }, { "Friday" }, { "Saturday" },
};
String[][] expected4 = new String[][] { { "-$10.00" }, { "$0.00" }, { "$0.00" }, { "$1.00" }, { "$3.00" }, { "$9.00" }, { "$123.00" }, { "$200.00" }, { "$400.00" },
{ "$10,000.00" },
};
open(prepareData("bvt/sort.ods"));
calc.waitForExistence(10, 2);
SCTool.selectRange("A1:A10");
app.dispatch(".uno:DataSort");
sortWarningDlgCurrent.click();
assertEquals(1, sortPageBy1.getSelIndex());
sortPage.ok();
sleep(1);
assertArrayEquals("Sorted Data", expected1, SCTool.getCellTexts("A1:A10"));
SCTool.selectRange("B1:C10");
app.dispatch(".uno:DataSort");
sortPageBy1.select(2);
sortPageDescending1.check();
assertFalse(sortPageBy3.isEnabled());
assertFalse(sortPageAscending3.isEnabled());
assertFalse(sortPageDescending3.isEnabled());
sortPageBy2.select(1);
assertTrue(sortPageBy3.isEnabled());
assertTrue(sortPageAscending3.isEnabled());
assertTrue(sortPageDescending3.isEnabled());
sortPageDescending2.check();
sortPageBy2.select(0);
assertFalse(sortPageBy3.isEnabled());
assertFalse(sortPageAscending3.isEnabled());
assertFalse(sortPageDescending3.isEnabled());
sortPageBy2.select(1);
sortPage.ok();
sleep(1);
assertArrayEquals("Sorted Data", expected2, SCTool.getCellTexts("B1:C10"));
SCTool.selectRange("D1:D7");
app.dispatch(".uno:DataSort");
sortWarningDlgCurrent.click();
sortOptionsPage.select();
sortOptionsPageRangeContainsColumnLabels.uncheck();
sortOptionsPageCustomSortOrder.check();
sortOptionsPageCustomSortOrderList.select("Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday");
sortOptionsPage.ok();
sleep(1);
assertArrayEquals("Sorted Data", expected3, SCTool.getCellTexts("D1:D7"));
SCTool.selectRange("E1:E10");
app.dispatch(".uno:DataSort");
sortWarningDlgCurrent.click();
sortPage.ok();
sleep(1);
assertArrayEquals("Sorted Data", expected4, SCTool.getCellTexts("E1:E10"));
discard();
}
/**
* Test insert a chart in a draw document 1. New a draw document 2. Insert a
* chart 3. Check if the chart is inserted successfully
*
* @throws Exception
*/
@Test
public void testInsertChartInDraw() throws Exception {
// Create a new drawing document
newDrawing();
// Insert a chart
app.dispatch(".uno:InsertObjectChart");
sleep(3);
// Verify if the chart is inserted successfully
assertTrue("Chart Editor appears", chart.exists(3));
// Focus on edit pane
draw.click(5, 5);
sleep(1);
assertFalse("Chart Editor appears", chart.exists());
discard();
}
/**
* Test insert a chart in a text document 1. New a text document 2. Insert a
* chart 3. Check if the chart is inserted successfully
*
* @throws Exception
*/
@Test
public void testInsertChartInDocument() throws Exception {
// Create a new text document
newTextDocument();
// Insert a chart
app.dispatch(".uno:InsertObjectChart");
sleep(3);
// Verify if the chart is inserted successfully
assertTrue("Chart Editor appears", chart.exists(3));
// Focus on edit pane
writer.click(5, 5);
sleep(1);
assertFalse("Chart Editor appears", chart.exists());
discard();
}
/**
* Test insert a chart in a spreadsheet document 1. New a spreadsheet
* document 2. Insert a chart 3. Check if the chart is inserted successfully
*
* @throws Exception
*/
@Test
public void testInsertChartInSpreadsheet() throws Exception {
// Create a new spreadsheet document
newSpreadsheet();
// Insert a chart
app.dispatch(".uno:InsertObjectChart");
sleep(3);
chartWizard.ok();
// Verify if the chart is inserted successfully
assertTrue("Chart Editor appears", chart.exists(3));
// Focus on edit pane
calc.click(5, 5);
sleep(1);
assertFalse("Chart Editor appears", chart.exists());
discard();
}
/**
* Test insert a chart in a presentation document 1. New a presentation
* document 2. Insert a chart 3. Check if the chart is inserted successfully
*
* @throws Exception
*/
@Test
public void testInsertChartInPresentation() throws Exception {
// Create a new presentation document
newPresentation();
// Insert a chart
app.dispatch(".uno:InsertObjectChart");
sleep(3);
// Verify if the chart is inserted successfully
assertTrue("Chart Editor appears", chart.exists(3));
// Focus on edit pane
impress.click(5, 5);
sleep(1);
assertFalse("Chart Editor appears", chart.exists());
discard();
}
/**
* Test insert a table in a draw document 1. New a draw document 2. Insert a
* default table 3. Check if the table is inserted successfully
*
* @throws Exception
*/
@Test
public void testInsertTableInDraw() throws Exception {
// Create a new drawing document
newDrawing();
// Insert a table
app.dispatch(".uno:InsertTable");
insertTable.ok();
sleep(1);
draw.typeKeys("3");
assertTrue("Table Toolbar appears", tableToolbar.exists(3));
// assertEquals("The cell content", "3", copyAll());
discard();
}
/**
* Test insert a table in a text document 1. New a text document 2. Insert a
* default table 3. Check if the table is inserted successfully
*
* @throws Exception
*/
@Test
public void testInsertTableInDocument() throws Exception {
// Create a new text document
newTextDocument();
// Insert a table
app.dispatch(".uno:InsertTable");
writerInsertTable.ok();
sleep(1);
writer.typeKeys("3");
// Verify if the table toolbar is active
assertTrue("Table Toolbar appears", tableToolbar.exists(3));
// assertEquals("The cell content", "3", copyAll());
discard();
}
/**
* Test insert a table in a presentation document 1. New a presentation
* document 2. Insert a default table 3. Check if the table is inserted
* successfully
*
* @throws Exception
*/
@Test
public void testInsertTableInPresentation() throws Exception {
// Create a new presentation document
newPresentation();
// Insert a table
app.dispatch(".uno:InsertTable");
insertTable.ok();
sleep(1);
impress.typeKeys("3");
assertTrue("Table Toolbar appears", tableToolbar.exists(3));
// assertEquals("The cell content", "3", copyAll());
discard();
}
/**
* Test insert a function in a spreadsheet document via Sum button 1. New a
* spreadsheet document 2. Insert a function via Sum button 3. Check if the
* result is correct
*
* @throws Exception
*/
@Test
public void testSumInFormulaBar() throws Exception {
// Create a new spreadsheet document
newSpreadsheet();
// Insert source numbers
String sourceNumber1 = "5";
String sourceNumber2 = "3";
String expectedResult = "8";
SCTool.selectRange("A1");
typeKeys(sourceNumber1);
SCTool.selectRange("B1");
typeKeys(sourceNumber2);
// Insert a function via Sum button
SCTool.selectRange("C1");
scInputBarSum.click();
typeKeys("<enter>");
// Verify if the calculated result is equal to the expected result
assertEquals("The calculated result", expectedResult, SCTool.getCellText("C1"));
discard();
}
/**
* Test insert a function in a spreadsheet document via inputbar 1. New a
* spreadsheet document 2. Insert a function via inputbar: COS 3. Check if
* the result is correct
*
* @throws Exception
*/
@Test
public void testInsertFunctionViaFormulaBar() throws Exception {
// Create a new spreadsheet document
newSpreadsheet();
// Insert source numbers and expected result
String sourceData = "0";
String expectedResult = "1";
SCTool.selectRange("A1");
typeKeys(sourceData);
// Insert a function via inputbar: COS
SCTool.selectRange("D1");
scInputBarInput.inputKeys("=COS(A1)");
typeKeys("<enter>");
// Verify if the calculated result is equal to the expected result
assertEquals("The calculated result", expectedResult, SCTool.getCellText("D1"));
discard();
}
/**
* Test insert a function in a spreadsheet document via Function Wizard
* Dialog 1. New a spreadsheet document 2. Insert a function via Function
* Wizard Dialog: ABS 3. Check if the result is correct
*
* @throws Exception
*/
@Test
public void testFunctionWizardInFormulaBar() throws Exception {
// Create a new spreadsheet document
newSpreadsheet();
// Insert source number
String sourceNumber = "-5";
String expectedResult = "5";
SCTool.selectRange("A1");
typeKeys(sourceNumber);
typeKeys("<enter>");
// Insert a function via Function Wizard Dialog: ABS
SCTool.selectRange("B1");
app.dispatch(".uno:FunctionDialog");
// SC_FunctionWizardDlg_FunctionList.doubleClick(5, 5);
scFunctionWizardDlgFunctionList.select("ABS");
scFunctionWizardDlgNext.click(); // Use "Next" button
scFunctionWizardDlgEdit1.inputKeys("A1");
scFunctionWizardDlg.ok();
// Verify if the calculated result is equal to the expected result
assertEquals("The calculated result", expectedResult, SCTool.getCellText("B1"));
discard();
}
}