blob: 2c936ce6d93e0355ee9fa7e11aa061baee433605 [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 svt.gui.sw;
import static org.openoffice.test.common.Testspace.getFile;
import static org.openoffice.test.common.Testspace.getPath;
import static org.openoffice.test.common.Testspace.prepareData;
import static org.openoffice.test.vcl.Tester.*;
import static testlib.gui.AppTool.*;
import static testlib.gui.UIMap.*;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.logging.Level;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
import org.openoffice.test.common.DataSheet;
import org.openoffice.test.common.FileUtil;
import org.openoffice.test.common.Logger;
import org.openoffice.test.common.SystemUtil;
import org.openoffice.test.common.Testspace;
public class BasicFuncOnWriter {
@Rule
public Logger log = Logger.getLogger(this);
@Rule
public TestName testname = new TestName();
private static DataSheet xmlResult;
private String pid = null;
private static int iterator = 100;
private int i = 0;
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void beforeClass() throws Exception {
xmlResult = new DataSheet(getFile("output/svt_writer.xml"));
xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)");
}
@AfterClass
public static void afterClass() throws Exception {
app.stop();
}
@Before
public void before()throws Exception{
app.start(true);
}
@Test
public void saveNewSWWithPic() throws Exception {
String pic = prepareData("image/blue_256x256.jpg");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
writer.menuItem("Insert->Picture->From File...").select();
sleep(2);
filePickerPath.setText(pic);
sleep(1);
filePickerOpen.click();
sleep(5);
typeKeys("<esc>");
sleep(2);
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithBullet() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
writer.typeKeys("The first");
writer.typeKeys("<enter>");
sleep(3);
writer.typeKeys("The second");
app.dispatch(".uno:SelectAll");
writer.menuItem("Format->Bullets and Numbering...").select();
sleep(3);
bulletPage.ok();
writer.typeKeys("<ctrl z");
sleep(1);
writer.typeKeys("<ctrl y>");
sleep(1);
writer.typeKeys("<ctrl end>");
writer.typeKeys("<enter>");
sleep(2);
writer.focus();
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithUnDoDelete()throws Exception{
if(!sdDrawingToolbar.exists()){
app.dispatch(".uno:AvailableToolbars?Toolbar:string=toolbar");
}
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
app.dispatch(".uno:Ellipse");
writer.focus();
writer.drag(200, 200, 300, 300);
typeKeys("<Delete>");
typeKeys("<ctrl z>");
typeKeys("<ctrl y>");
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithSpellCheck() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
writer.typeKeys("goood");
sleep(2);
writer.menuItem("Tools->Spelling and Grammar...").select();
sleep(2);
spellcheckDlgSuggestionList.select(0);
spellcheckDlgIgnoreOnce.click();
activeMsgBox.ok();
sleep(2);
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithHeaderFooter() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
writer.menuItem("Insert->Header->Default").select();
sleep(2);
writer.typeKeys("Header");
sleep(2);
writer.menuItem("Insert->Footer->Default").select();
sleep(2);
writer.typeKeys("Footer");
sleep(2);
writer.typeKeys("<ctrl end>");
sleep(2);
writer.typeKeys("<enter>");
sleep(2);
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithFrameAnchor() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
writer.menuItem("Insert->Frame...").select();
sleep(2);
writerFrameDlg.ok();
writer.menuItem("Format->Anchor->To Page").select();
sleep(2);
writer.menuItem("Format->Anchor->To Paragraph").select();
sleep(2);
writer.menuItem("Format->Anchor->To Character").select();
sleep(2);
writer.menuItem("Format->Anchor->As Character").select();
sleep(2);
writer.typeKeys("<esc>");
sleep(2);
writer.typeKeys("<enter>");
sleep(2);
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithSDAsOLE()throws Exception{
String linkFile = prepareData("pvt/plain_200p.odp");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
app.dispatch(".uno:InsertObject");
sleep(2);
insertObject.waitForExistence(60, 2);
objectFromFile.check();
objectFilePath.setText(linkFile);
objectFileLink.check();
insertObject.ok();
sleep(10);
writer.focus();
writer.doubleClick(200, 300);
sleep(15);
writer.activate();
writer.click(10, 10);
sleep(5);
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void saveNewSWWithTOC() throws Exception {
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
createNewSW();
for (int j = 0; j < 6; j++) {
writer.typeKeys(String.valueOf(j + 1));
writer.typeKeys("<enter>");
}
writer.typeKeys("<ctrl home>");
for (int k = 0; k < 2; k++) {
writer.typeKeys("<shift down>");
}
if (!styleAndFormattingDlg.exists()) {
app.dispatch(".uno:DesignerDialog");
sleep(2);
}
styleAndFormattingList.doubleClick(0.5, 0.25);
sleep(2);
writer.typeKeys("<down>");
writer.typeKeys("<right>");
writer.typeKeys("<left>");
for (int k = 0; k < 2; k++) {
writer.typeKeys("<shift down>");
}
styleAndFormattingList.doubleClick(0.5, 0.3);
sleep(2);
writer.typeKeys("<ctrl home>");
sleep(2);
writer.menuItem("Insert->Indexes and Tables->Indexes and Tables...").select();
sleep(2);
insertIndexDlg.ok();
sleep(2);
writer.typeKeys("<ctrl end>");
saveAndReopenNewSW(i);
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void splitMergeTableOnOpenedSW() throws Exception {
String file = prepareData("svt/swdesign.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
writer.typeKeys("<down>");
writer.typeKeys("<down>");
sleep(2);
writer.menuItem("Table->Split Cells").select();
sleep(2);
writerSplitCellDlg.ok();
sleep(2);
writer.typeKeys("<shift down>");
writer.typeKeys("<shift down>");
writer.typeKeys("<shift down>");
writer.typeKeys("<shift down>");
writer.typeKeys("<shift down>");
sleep(2);
writer.menuItem("Table->Merge Cells").select();
sleep(2);
writer.typeKeys("<enter>");
closeWithoutSaveSW();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void addDelColumnsRowsInTableOnOpenedSW() throws Exception {
String file = prepareData("svt/swdesign.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
writer.typeKeys("<down>");
writer.typeKeys("<down>");
sleep(2);
app.dispatch(".uno:InsertRowDialog");
writerInsertRowsDlg.ok();
sleep(2);
writer.menuItem("Table->Delete->Rows").select();
sleep(2);
app.dispatch(".uno:InsertColumnDialog");
writerInsertColumnsDlg.ok();
sleep(2);
writer.menuItem("Table->Delete->Columns").select();
sleep(2);
closeWithoutSaveSW();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void setParaPropertoesOnOpenedSW() throws Exception {
String file = prepareData("pvt/plain_200p.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
writer.focus();
app.dispatch(".uno:ParagraphDialog");
alignPage.select();
alignPageRight.check();
sleep(2);
alignPageVerticalAlign.select("Bottom");
sleep(2);
alignPage.ok();
sleep(2);
writer.typeKeys("<ctrl end>");
sleep(5);
closeWithoutSaveSW();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void InsertPicToOpenedSW() throws Exception {
String file = prepareData("pvt/plain_200p.odt");
String pic = prepareData("image/blue_256x256.jpg");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
writer.focus();
writer.menuItem("Insert->Picture->From File...").select();
sleep(2);
filePickerPath.setText(pic);
sleep(1);
filePickerOpen.click();
sleep(5);
writer.typeKeys("<esc>");
sleep(2);
closeWithoutSaveSW();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void InsertOLEToOpenedSW() throws Exception {
String file = prepareData("pvt/plain_200p.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
writer.focus();
app.dispatch(".uno:InsertObject");
sleep(2);
insertObject.ok();
sleep(10);
typeKeys("<esc>");
sleep(5);
typeKeys("<esc>");
sleep(5);
closeWithoutSaveSW();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void InsertChartToOpenedSW() throws Exception {
String file = prepareData("pvt/plain_200p.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
writer.focus();
app.dispatch(".uno:InsertObjectChart");
// writer.menuItem("Insert->Object->Chart...").select();
sleep(5);
typeKeys("<esc>");
sleep(5);
typeKeys("<esc>");
sleep(5);
typeKeys("<esc>");
sleep(5);
closeWithoutSaveSW();
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void openSWWithXForm()throws Exception{
String file = prepareData("svt/sickness_self-certification_meory issue.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
app.dispatch(".uno:CloseDoc");
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
@Test
public void openSWWithSecuritySignature()throws Exception{
String file = prepareData("svt/howtouse.odt");
for (i = 1; i <= iterator; i++) {
long start = System.currentTimeMillis();
app.dispatch(".uno:Open");
submitOpenDlg(file);
writer.waitForExistence(10, 2);
app.dispatch(".uno:CloseDoc");
long end = System.currentTimeMillis();
addRecord(i, start, end);
}
}
private void createNewSW() {
app.dispatch("private:factory/swriter");
}
private void saveAndReopenNewSW(int iterator) {
String saveTo = getPath("temp/" + "tempSW_New" + iterator + ".odt");
writer.menuItem("File->Save As...").select();
FileUtil.deleteFile(saveTo);
submitSaveDlg(saveTo);
if (activeMsgBox.exists()) {
activeMsgBox.yes();
sleep(2);
}
app.dispatch(".uno:CloseDoc");
startCenterOpenButton.waitForExistence(30, 2);
startCenterOpenButton.click();
submitOpenDlg(saveTo);
sleep(1);
app.dispatch(".uno:CloseDoc");
}
private void closeWithoutSaveSW() {
writer.menuItem("File->Close").select();
if (activeMsgBox.exists()) {
activeMsgBox.no();
sleep(2);
}
}
private void addRecord(int i, long start, long end) {
HashMap<String, Object> perf = aoo.getPerfData();
xmlResult.addRow("Data",testname.getMethodName(), i, (end - start),
perf.get("vsz"), perf.get("rss"), perf.get("handles"));
log.log( Level.INFO, "\t"+testname.getMethodName()+"["+i+"] took "+(end-start)+"ms");
}
}