/************************************************************** | |
* | |
* 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"); | |
} | |
} |