1739258c9SLi Feng Wang /**************************************************************
2739258c9SLi Feng Wang  *
3739258c9SLi Feng Wang  * Licensed to the Apache Software Foundation (ASF) under one
4739258c9SLi Feng Wang  * or more contributor license agreements.  See the NOTICE file
5739258c9SLi Feng Wang  * distributed with this work for additional information
6739258c9SLi Feng Wang  * regarding copyright ownership.  The ASF licenses this file
7739258c9SLi Feng Wang  * to you under the Apache License, Version 2.0 (the
8739258c9SLi Feng Wang  * "License"); you may not use this file except in compliance
9739258c9SLi Feng Wang  * with the License.  You may obtain a copy of the License at
10739258c9SLi Feng Wang  *
11739258c9SLi Feng Wang  *   http://www.apache.org/licenses/LICENSE-2.0
12739258c9SLi Feng Wang  *
13739258c9SLi Feng Wang  * Unless required by applicable law or agreed to in writing,
14739258c9SLi Feng Wang  * software distributed under the License is distributed on an
15739258c9SLi Feng Wang  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16739258c9SLi Feng Wang  * KIND, either express or implied.  See the License for the
17739258c9SLi Feng Wang  * specific language governing permissions and limitations
18739258c9SLi Feng Wang  * under the License.
19739258c9SLi Feng Wang  *
20739258c9SLi Feng Wang  *************************************************************/
21739258c9SLi Feng Wang 
22739258c9SLi Feng Wang /**
23739258c9SLi Feng Wang  *
24739258c9SLi Feng Wang  */
25739258c9SLi Feng Wang package svt.gui.sw;
26739258c9SLi Feng Wang 
27739258c9SLi Feng Wang import static org.openoffice.test.common.Testspace.getFile;
28739258c9SLi Feng Wang import static org.openoffice.test.common.Testspace.getPath;
29739258c9SLi Feng Wang import static org.openoffice.test.common.Testspace.prepareData;
30739258c9SLi Feng Wang import static org.openoffice.test.vcl.Tester.*;
31739258c9SLi Feng Wang import static testlib.gui.AppTool.*;
32739258c9SLi Feng Wang import static testlib.gui.UIMap.*;
33739258c9SLi Feng Wang 
34739258c9SLi Feng Wang import java.io.FileOutputStream;
35739258c9SLi Feng Wang import java.io.PrintStream;
36739258c9SLi Feng Wang import java.util.HashMap;
37122356beSHerbert Dürr import java.util.logging.Level;
38739258c9SLi Feng Wang 
39739258c9SLi Feng Wang import org.junit.After;
40739258c9SLi Feng Wang import org.junit.AfterClass;
41739258c9SLi Feng Wang import org.junit.Before;
42739258c9SLi Feng Wang import org.junit.BeforeClass;
43739258c9SLi Feng Wang import org.junit.Ignore;
44739258c9SLi Feng Wang import org.junit.Rule;
45739258c9SLi Feng Wang import org.junit.Test;
46739258c9SLi Feng Wang import org.junit.rules.TestName;
47739258c9SLi Feng Wang import org.openoffice.test.common.DataSheet;
48739258c9SLi Feng Wang import org.openoffice.test.common.FileUtil;
49739258c9SLi Feng Wang import org.openoffice.test.common.Logger;
50739258c9SLi Feng Wang import org.openoffice.test.common.SystemUtil;
51739258c9SLi Feng Wang import org.openoffice.test.common.Testspace;
52739258c9SLi Feng Wang 
53739258c9SLi Feng Wang public class FileTypeAboutWriter {
54739258c9SLi Feng Wang 	@Rule
55739258c9SLi Feng Wang 	public Logger log = Logger.getLogger(this);
56739258c9SLi Feng Wang 
57739258c9SLi Feng Wang 	@Rule
58739258c9SLi Feng Wang 	public TestName testname = new TestName();
59739258c9SLi Feng Wang 
60739258c9SLi Feng Wang 	private static DataSheet xmlResult;
61739258c9SLi Feng Wang 
62739258c9SLi Feng Wang 	private String pid = null;
63739258c9SLi Feng Wang 
6466d0652aSLi Feng Wang 	private static int iterator = 100;
65739258c9SLi Feng Wang 
66739258c9SLi Feng Wang 	private int i = 0;
67739258c9SLi Feng Wang 
68739258c9SLi Feng Wang 
69739258c9SLi Feng Wang 	/**
70739258c9SLi Feng Wang 	 * @throws java.lang.Exception
71739258c9SLi Feng Wang 	 */
72739258c9SLi Feng Wang 	@BeforeClass
beforeClass()73739258c9SLi Feng Wang 	public static void beforeClass() throws Exception {
74688c272fSLi Feng Wang 		xmlResult = new DataSheet(getFile("output/svt_writertype.xml"));
75ac2ddd9cSLi Feng Wang 		xmlResult.addRow("Data", "Method", "No", "Consumed Time(MS)", "Memory(VSZ)", "Memory(RSS)", "Handles(Windows Only)");
76739258c9SLi Feng Wang 	}
77739258c9SLi Feng Wang 
78739258c9SLi Feng Wang 	@AfterClass
afterClass()79739258c9SLi Feng Wang 	public static void afterClass() throws Exception {
80739258c9SLi Feng Wang 		app.stop();
81739258c9SLi Feng Wang 	}
82739258c9SLi Feng Wang 
83739258c9SLi Feng Wang 	@Before
before()84739258c9SLi Feng Wang 	public void before()throws Exception{
85739258c9SLi Feng Wang 		app.start(true);
86739258c9SLi Feng Wang 	}
87739258c9SLi Feng Wang 
88739258c9SLi Feng Wang 
89739258c9SLi Feng Wang 	@Test
saveNewSWWithShapeToHTML()90739258c9SLi Feng Wang 	public void saveNewSWWithShapeToHTML()throws Exception{
91739258c9SLi Feng Wang 		for ( i = 1; i <= iterator; i++) {
92739258c9SLi Feng Wang 			long start = System.currentTimeMillis();
93739258c9SLi Feng Wang 			createNewSW();
94739258c9SLi Feng Wang 			if(!swDrawingToolbar.exists()){
95739258c9SLi Feng Wang 				app.dispatch(".uno:AvailableToolbars?Toolbar:string=drawbar");
96739258c9SLi Feng Wang 			}
97739258c9SLi Feng Wang 			sleep(2);
98739258c9SLi Feng Wang 			app.dispatch(".uno:Rect");
99739258c9SLi Feng Wang 			writer.focus();
100739258c9SLi Feng Wang 			writer.drag(200, 200, 300, 300);
101739258c9SLi Feng Wang 			sleep(2);
102739258c9SLi Feng Wang 
103739258c9SLi Feng Wang 			typeKeys("<esc>");
104739258c9SLi Feng Wang 			sleep(2);
105739258c9SLi Feng Wang 			saveToOther(i,".html");
106739258c9SLi Feng Wang 			//reopen
107739258c9SLi Feng Wang 			String saveTo = getPath("temp/" + "tempDOC" + i + ".html");
108739258c9SLi Feng Wang 			startCenterOpenButton.click();
109739258c9SLi Feng Wang 			submitOpenDlg(saveTo);
110739258c9SLi Feng Wang 			sleep(1);
111739258c9SLi Feng Wang 			app.dispatch(".uno:CloseDoc");
112739258c9SLi Feng Wang 			long end = System.currentTimeMillis();
113739258c9SLi Feng Wang 			addRecord(i, start, end);
114739258c9SLi Feng Wang 		}
115739258c9SLi Feng Wang 	}
116739258c9SLi Feng Wang 
117739258c9SLi Feng Wang 	@Test
saveNewSWWithLineToDoc()118739258c9SLi Feng Wang     public void saveNewSWWithLineToDoc()throws Exception{
119739258c9SLi Feng Wang 		for (i = 1; i <= iterator; i++) {
120739258c9SLi Feng Wang 			long start = System.currentTimeMillis();
121739258c9SLi Feng Wang 			createNewSW();
122739258c9SLi Feng Wang 			if(!swDrawingToolbar.exists()){
123739258c9SLi Feng Wang 				app.dispatch(".uno:AvailableToolbars?Toolbar:string=drawbar");
124739258c9SLi Feng Wang 			}
125739258c9SLi Feng Wang 			sleep(2);
126739258c9SLi Feng Wang 			swInsertLineButtonOnToolbar.click();
127739258c9SLi Feng Wang 			writer.focus();
128739258c9SLi Feng Wang 			for(int j=0;j<10;j++){
129*3bf97486SHerbert Dürr 				// due to snap-to-grid the lines below will not all be parallel!
130*3bf97486SHerbert Dürr 				writer.drag( 150+j, 150+j*10, 200+j, 200+j*10);
131*3bf97486SHerbert Dürr 				sleep( 0.5);
132739258c9SLi Feng Wang 			}
133739258c9SLi Feng Wang 			typeKeys("<esc>");
134739258c9SLi Feng Wang 			sleep(2);
135739258c9SLi Feng Wang 			saveToOther(i,".doc");
136739258c9SLi Feng Wang 			long end = System.currentTimeMillis();
137739258c9SLi Feng Wang 			addRecord(i, start, end);
138739258c9SLi Feng Wang 		}
139739258c9SLi Feng Wang 	}
140739258c9SLi Feng Wang 
141739258c9SLi Feng Wang 	@Test
saveNewSWWithPicToDoc()142739258c9SLi Feng Wang 	public void saveNewSWWithPicToDoc() throws Exception {
143739258c9SLi Feng Wang 		String pic = prepareData("image/blue_256x256.jpg");
144739258c9SLi Feng Wang 		for (i = 1; i <= iterator; i++) {
145739258c9SLi Feng Wang 			long start = System.currentTimeMillis();
146739258c9SLi Feng Wang 			createNewSW();
147739258c9SLi Feng Wang 			writer.menuItem("Insert->Picture->From File...").select();
148739258c9SLi Feng Wang 			sleep(2);
149739258c9SLi Feng Wang 			filePickerPath.setText(pic);
150739258c9SLi Feng Wang 			sleep(1);
151739258c9SLi Feng Wang 			filePickerOpen.click();
152739258c9SLi Feng Wang 			sleep(3);
153739258c9SLi Feng Wang 			typeKeys("<esc>");
154739258c9SLi Feng Wang 			sleep(2);
155739258c9SLi Feng Wang 			saveToOther(i,".doc");
156739258c9SLi Feng Wang 			long end = System.currentTimeMillis();
157739258c9SLi Feng Wang 			addRecord(i, start, end);
158739258c9SLi Feng Wang 		}
159739258c9SLi Feng Wang 	}
160739258c9SLi Feng Wang 
createNewSW()161739258c9SLi Feng Wang 	private void createNewSW() {
162739258c9SLi Feng Wang 		app.dispatch("private:factory/swriter");
163739258c9SLi Feng Wang 	}
164739258c9SLi Feng Wang 
saveToOther(int iterator, String type)165739258c9SLi Feng Wang 	private void saveToOther(int iterator, String type){
166739258c9SLi Feng Wang 		String saveTo = getPath("temp/" + "tempDOC" + iterator + type);
167739258c9SLi Feng Wang 		writer.menuItem("File->Save As...").select();
168739258c9SLi Feng Wang 		FileUtil.deleteFile(saveTo);
169739258c9SLi Feng Wang 		submitSaveDlg(saveTo);
170739258c9SLi Feng Wang 		if (activeMsgBox.exists()) {
171739258c9SLi Feng Wang 			activeMsgBox.yes();
172739258c9SLi Feng Wang 			sleep(2);
173739258c9SLi Feng Wang 		}
174739258c9SLi Feng Wang 		if (alienFormatDlg.exists(3))
175739258c9SLi Feng Wang 			alienFormatDlg.ok();
176739258c9SLi Feng Wang 		app.dispatch(".uno:CloseDoc");
177739258c9SLi Feng Wang 		startCenterOpenButton.waitForExistence(30, 2);
178739258c9SLi Feng Wang 		startCenterOpenButton.click();
179739258c9SLi Feng Wang 		submitOpenDlg(saveTo);
180739258c9SLi Feng Wang 		sleep(2);
181739258c9SLi Feng Wang 		app.dispatch(".uno:CloseDoc");
182ac2ddd9cSLi Feng Wang 
183739258c9SLi Feng Wang 	}
184739258c9SLi Feng Wang 
addRecord(int i, long start, long end)185739258c9SLi Feng Wang 	private void addRecord(int i, long start, long end) {
186ac2ddd9cSLi Feng Wang 		HashMap<String, Object>  perf = aoo.getPerfData();
187ac2ddd9cSLi Feng Wang 		xmlResult.addRow("Data",testname.getMethodName(), i, (end - start),
188ac2ddd9cSLi Feng Wang 				perf.get("vsz"), perf.get("rss"), perf.get("handles"));
189122356beSHerbert Dürr 		log.log( Level.INFO, "\t"+testname.getMethodName()+"["+i+"] took "+(end-start)+"ms");
190739258c9SLi Feng Wang 	}
191ac2ddd9cSLi Feng Wang 
192739258c9SLi Feng Wang 
193739258c9SLi Feng Wang }
194