xref: /AOO41X/test/testgui/source/svt/gui/TestSample.java (revision 80a6f5c575dba650469ea4eacf1c8652e4eec583)
1*80a6f5c5SLiu Zhe /**************************************************************
2*80a6f5c5SLiu Zhe  *
3*80a6f5c5SLiu Zhe  * Licensed to the Apache Software Foundation (ASF) under one
4*80a6f5c5SLiu Zhe  * or more contributor license agreements.  See the NOTICE file
5*80a6f5c5SLiu Zhe  * distributed with this work for additional information
6*80a6f5c5SLiu Zhe  * regarding copyright ownership.  The ASF licenses this file
7*80a6f5c5SLiu Zhe  * to you under the Apache License, Version 2.0 (the
8*80a6f5c5SLiu Zhe  * "License"); you may not use this file except in compliance
9*80a6f5c5SLiu Zhe  * with the License.  You may obtain a copy of the License at
10*80a6f5c5SLiu Zhe  *
11*80a6f5c5SLiu Zhe  *   http://www.apache.org/licenses/LICENSE-2.0
12*80a6f5c5SLiu Zhe  *
13*80a6f5c5SLiu Zhe  * Unless required by applicable law or agreed to in writing,
14*80a6f5c5SLiu Zhe  * software distributed under the License is distributed on an
15*80a6f5c5SLiu Zhe  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*80a6f5c5SLiu Zhe  * KIND, either express or implied.  See the License for the
17*80a6f5c5SLiu Zhe  * specific language governing permissions and limitations
18*80a6f5c5SLiu Zhe  * under the License.
19*80a6f5c5SLiu Zhe  *
20*80a6f5c5SLiu Zhe  *************************************************************/
21*80a6f5c5SLiu Zhe 
22*80a6f5c5SLiu Zhe package svt.gui;
23*80a6f5c5SLiu Zhe 
24*80a6f5c5SLiu Zhe import static org.openoffice.test.common.Testspace.*;
25*80a6f5c5SLiu Zhe import static org.openoffice.test.vcl.Tester.*;
26*80a6f5c5SLiu Zhe import static testlib.gui.AppTool.*;
27*80a6f5c5SLiu Zhe import static testlib.gui.UIMap.*;
28*80a6f5c5SLiu Zhe 
29*80a6f5c5SLiu Zhe import java.io.File;
30*80a6f5c5SLiu Zhe import java.util.ArrayList;
31*80a6f5c5SLiu Zhe import java.util.Collection;
32*80a6f5c5SLiu Zhe 
33*80a6f5c5SLiu Zhe import junit.framework.Assert;
34*80a6f5c5SLiu Zhe 
35*80a6f5c5SLiu Zhe import org.junit.After;
36*80a6f5c5SLiu Zhe import org.junit.Before;
37*80a6f5c5SLiu Zhe import org.junit.Rule;
38*80a6f5c5SLiu Zhe import org.junit.Test;
39*80a6f5c5SLiu Zhe import org.junit.runner.RunWith;
40*80a6f5c5SLiu Zhe import org.junit.runners.Parameterized;
41*80a6f5c5SLiu Zhe import org.junit.runners.Parameterized.Parameters;
42*80a6f5c5SLiu Zhe import org.openoffice.test.common.Condition;
43*80a6f5c5SLiu Zhe import org.openoffice.test.common.FileUtil;
44*80a6f5c5SLiu Zhe import org.openoffice.test.common.Logger;
45*80a6f5c5SLiu Zhe 
46*80a6f5c5SLiu Zhe import testlib.gui.SDTool;
47*80a6f5c5SLiu Zhe 
48*80a6f5c5SLiu Zhe @RunWith(Parameterized.class)
49*80a6f5c5SLiu Zhe public class TestSample {
50*80a6f5c5SLiu Zhe 
51*80a6f5c5SLiu Zhe 	public static String repos = "samples";
52*80a6f5c5SLiu Zhe 
53*80a6f5c5SLiu Zhe 	public static String[][] params = {};
54*80a6f5c5SLiu Zhe 
55*80a6f5c5SLiu Zhe 	@Parameters
data()56*80a6f5c5SLiu Zhe 	public static Collection<Object[]> data() {
57*80a6f5c5SLiu Zhe 		File dir = new File(repos);
58*80a6f5c5SLiu Zhe 		ArrayList<Object[]> list = new ArrayList<Object[]>();
59*80a6f5c5SLiu Zhe 		collect(dir, list);
60*80a6f5c5SLiu Zhe 		return list;
61*80a6f5c5SLiu Zhe 	}
62*80a6f5c5SLiu Zhe 
63*80a6f5c5SLiu Zhe 	/**
64*80a6f5c5SLiu Zhe 	 * @see <a href="http://www.ibm.com">Manual Case</a>
65*80a6f5c5SLiu Zhe 	 * @param dir
66*80a6f5c5SLiu Zhe 	 * @param list
67*80a6f5c5SLiu Zhe 	 */
collect(File dir, ArrayList<Object[]> list)68*80a6f5c5SLiu Zhe 	public static void collect(File dir, ArrayList<Object[]> list) {
69*80a6f5c5SLiu Zhe 		File[] files = dir.listFiles();
70*80a6f5c5SLiu Zhe 		if (files == null)
71*80a6f5c5SLiu Zhe 			return;
72*80a6f5c5SLiu Zhe 
73*80a6f5c5SLiu Zhe 		for (File file : files) {
74*80a6f5c5SLiu Zhe 			if (file.isDirectory()) {
75*80a6f5c5SLiu Zhe 				collect(file, list);
76*80a6f5c5SLiu Zhe 			} else {
77*80a6f5c5SLiu Zhe 				String fileName = file.getName().toLowerCase();
78*80a6f5c5SLiu Zhe 				for (String[] param : params) {
79*80a6f5c5SLiu Zhe 					String filter = param[0];
80*80a6f5c5SLiu Zhe 					if (filter != null && fileName.matches(filter)) {
81*80a6f5c5SLiu Zhe 						Object[] data = { file, param[1], param[2] };
82*80a6f5c5SLiu Zhe 						list.add(data);
83*80a6f5c5SLiu Zhe 						System.out.println(file + param[1] + param[2]);
84*80a6f5c5SLiu Zhe 						break;
85*80a6f5c5SLiu Zhe 					}
86*80a6f5c5SLiu Zhe 				}
87*80a6f5c5SLiu Zhe 			}
88*80a6f5c5SLiu Zhe 		}
89*80a6f5c5SLiu Zhe 	}
90*80a6f5c5SLiu Zhe 
91*80a6f5c5SLiu Zhe 	private static final String writerFilter = ".*\\.((odt)|(ott)|(sxw)|(stw)|(doc)|(dot)|(docx)|(docm)|(dotx)|(dotm))$";
92*80a6f5c5SLiu Zhe 	private static final String calcFilter = ".*\\.((ods)|(ots)|(sxc)|(stc)|(xls)|(xlt)|(xlsx)|(xltx)|(xlsm)|(xltm))$";
93*80a6f5c5SLiu Zhe 	private static final String impressFilter = ".*\\.((odp)|(otp)|(sxi)|(sti)|(ppt)|(pot)|(pptx)|(pptm)|(potm)|(potx))$";
94*80a6f5c5SLiu Zhe 	private static final String drawFilter = ".*\\.((odg)|(otg)|(sxd)|(sxt))$";
95*80a6f5c5SLiu Zhe 	private static final String databaseFilter = ".*\\.(odb)$";
96*80a6f5c5SLiu Zhe 
97*80a6f5c5SLiu Zhe 	@Rule
98*80a6f5c5SLiu Zhe 	public Logger log = Logger.getLogger(this);
99*80a6f5c5SLiu Zhe 	private File originalFile = null;
100*80a6f5c5SLiu Zhe 	private String saveas = null;
101*80a6f5c5SLiu Zhe 	private String editor = null;
102*80a6f5c5SLiu Zhe 	private File file = null;
103*80a6f5c5SLiu Zhe 	private String saveTo = null;
104*80a6f5c5SLiu Zhe 	private boolean passed = false;
105*80a6f5c5SLiu Zhe 
TestSample(File file, String saveas, String editor)106*80a6f5c5SLiu Zhe 	public TestSample(File file, String saveas, String editor) {
107*80a6f5c5SLiu Zhe 		this.originalFile = file;
108*80a6f5c5SLiu Zhe 		this.saveas = saveas;
109*80a6f5c5SLiu Zhe 		this.editor = editor;
110*80a6f5c5SLiu Zhe 	}
111*80a6f5c5SLiu Zhe 
112*80a6f5c5SLiu Zhe 	/**
113*80a6f5c5SLiu Zhe 	 * @throws java.lang.Exception
114*80a6f5c5SLiu Zhe 	 */
115*80a6f5c5SLiu Zhe 	@Before
setUp()116*80a6f5c5SLiu Zhe 	public void setUp() {
117*80a6f5c5SLiu Zhe 		app.start();
118*80a6f5c5SLiu Zhe 
119*80a6f5c5SLiu Zhe 		FileUtil.deleteFile(getPath("temp"));
120*80a6f5c5SLiu Zhe 		File temp = new File(getPath("temp"));
121*80a6f5c5SLiu Zhe 		temp.mkdirs();
122*80a6f5c5SLiu Zhe 		log.info("Load sample file from \"" + originalFile.getAbsolutePath() + "\"");
123*80a6f5c5SLiu Zhe 		file = new File(temp + "/origin", "sample." + FileUtil.getFileExtName(originalFile.getName()) /*
124*80a6f5c5SLiu Zhe 																									 * file
125*80a6f5c5SLiu Zhe 																									 * .
126*80a6f5c5SLiu Zhe 																									 * getName
127*80a6f5c5SLiu Zhe 																									 * (
128*80a6f5c5SLiu Zhe 																									 * )
129*80a6f5c5SLiu Zhe 																									 */);
130*80a6f5c5SLiu Zhe 		FileUtil.copyFile(originalFile, file); // We use the copy to do test
131*80a6f5c5SLiu Zhe 		saveTo = getPath("temp/" + file.getName() + (saveas == null ? "" : "." + saveas));
132*80a6f5c5SLiu Zhe 	}
133*80a6f5c5SLiu Zhe 
134*80a6f5c5SLiu Zhe 	@After
tearDown()135*80a6f5c5SLiu Zhe 	public void tearDown() {
136*80a6f5c5SLiu Zhe 		if (!passed) {
137*80a6f5c5SLiu Zhe 			// Collect the failed sample files.
138*80a6f5c5SLiu Zhe 			File failedDir = new File(getPath("output/TestSample.Failed"));
139*80a6f5c5SLiu Zhe 			FileUtil.copyFile(originalFile, new File(failedDir, originalFile.getName()));
140*80a6f5c5SLiu Zhe 		}
141*80a6f5c5SLiu Zhe 	}
142*80a6f5c5SLiu Zhe 
143*80a6f5c5SLiu Zhe 	@Test
test()144*80a6f5c5SLiu Zhe 	public void test() {
145*80a6f5c5SLiu Zhe 		if (editor == null) {
146*80a6f5c5SLiu Zhe 			String name = file.getName();
147*80a6f5c5SLiu Zhe 			if (name.matches(writerFilter)) {
148*80a6f5c5SLiu Zhe 				testWriter();
149*80a6f5c5SLiu Zhe 			} else if (name.matches(calcFilter)) {
150*80a6f5c5SLiu Zhe 				testCalc();
151*80a6f5c5SLiu Zhe 			} else if (name.matches(impressFilter)) {
152*80a6f5c5SLiu Zhe 				testImpress();
153*80a6f5c5SLiu Zhe 			} else if (name.matches(drawFilter)) {
154*80a6f5c5SLiu Zhe 
155*80a6f5c5SLiu Zhe 			} else if (name.matches(databaseFilter)) {
156*80a6f5c5SLiu Zhe 
157*80a6f5c5SLiu Zhe 			} else {
158*80a6f5c5SLiu Zhe 				Assert.assertTrue("It's supported", false);
159*80a6f5c5SLiu Zhe 			}
160*80a6f5c5SLiu Zhe 		} else {
161*80a6f5c5SLiu Zhe 			if (editor.equals("writer"))
162*80a6f5c5SLiu Zhe 				testWriter();
163*80a6f5c5SLiu Zhe 			if (editor.equals("calc"))
164*80a6f5c5SLiu Zhe 				testCalc();
165*80a6f5c5SLiu Zhe 			if (editor.equals("impress"))
166*80a6f5c5SLiu Zhe 				testImpress();
167*80a6f5c5SLiu Zhe 			if (editor.equals("draw"))
168*80a6f5c5SLiu Zhe 				testDraw();
169*80a6f5c5SLiu Zhe 			if (editor.equals("database"))
170*80a6f5c5SLiu Zhe 				testDatabase();
171*80a6f5c5SLiu Zhe 		}
172*80a6f5c5SLiu Zhe 	}
173*80a6f5c5SLiu Zhe 
testDatabase()174*80a6f5c5SLiu Zhe 	private void testDatabase() {
175*80a6f5c5SLiu Zhe 		// TODO Auto-generated method stub
176*80a6f5c5SLiu Zhe 
177*80a6f5c5SLiu Zhe 	}
178*80a6f5c5SLiu Zhe 
testDraw()179*80a6f5c5SLiu Zhe 	private void testDraw() {
180*80a6f5c5SLiu Zhe 		// TODO Auto-generated method stub
181*80a6f5c5SLiu Zhe 
182*80a6f5c5SLiu Zhe 	}
183*80a6f5c5SLiu Zhe 
testWriter()184*80a6f5c5SLiu Zhe 	public void testWriter() {
185*80a6f5c5SLiu Zhe 		open(file.getAbsolutePath());
186*80a6f5c5SLiu Zhe 		handleBlocker(writer);
187*80a6f5c5SLiu Zhe 		sleep(10);
188*80a6f5c5SLiu Zhe 
189*80a6f5c5SLiu Zhe 		// Assert.assertTrue("File Passed:" + file,
190*80a6f5c5SLiu Zhe 		// writer.getCaption().contains(file.getName()));
191*80a6f5c5SLiu Zhe 		saveAs(saveTo);
192*80a6f5c5SLiu Zhe 		if (alienFormatDlg.exists(3))
193*80a6f5c5SLiu Zhe 			alienFormatDlg.ok();
194*80a6f5c5SLiu Zhe 		sleep(2);
195*80a6f5c5SLiu Zhe 		writer.waitForEnabled(120, 2);
196*80a6f5c5SLiu Zhe 		close();
197*80a6f5c5SLiu Zhe 
198*80a6f5c5SLiu Zhe 		open(saveTo);
199*80a6f5c5SLiu Zhe 		handleBlocker(writer);
200*80a6f5c5SLiu Zhe 		sleep(10);
201*80a6f5c5SLiu Zhe 
202*80a6f5c5SLiu Zhe 		// Assert.assertTrue("File Passed:" + file,
203*80a6f5c5SLiu Zhe 		// writer.getCaption().contains(file.getName()));
204*80a6f5c5SLiu Zhe 		close();
205*80a6f5c5SLiu Zhe 		passed = true;
206*80a6f5c5SLiu Zhe 	}
207*80a6f5c5SLiu Zhe 
testCalc()208*80a6f5c5SLiu Zhe 	public void testCalc() {
209*80a6f5c5SLiu Zhe 		startcenter.menuItem("File->Open...").select();
210*80a6f5c5SLiu Zhe 		submitOpenDlg(file.getAbsolutePath());
211*80a6f5c5SLiu Zhe 		handleBlocker(calc);
212*80a6f5c5SLiu Zhe 		sleep(10); // Wait. Crash maybe occurs when the file is shown!
213*80a6f5c5SLiu Zhe 
214*80a6f5c5SLiu Zhe 		// Assert.assertTrue("File Passed:" + file,
215*80a6f5c5SLiu Zhe 		// calc.getCaption().contains(file.getName()));
216*80a6f5c5SLiu Zhe 
217*80a6f5c5SLiu Zhe 		calc.menuItem("File->Save As...").select();
218*80a6f5c5SLiu Zhe 		submitSaveDlg(saveTo);
219*80a6f5c5SLiu Zhe 		if (alienFormatDlg.exists(3))
220*80a6f5c5SLiu Zhe 			alienFormatDlg.ok();
221*80a6f5c5SLiu Zhe 		sleep(2);
222*80a6f5c5SLiu Zhe 
223*80a6f5c5SLiu Zhe 		new Condition() {
224*80a6f5c5SLiu Zhe 			@Override
225*80a6f5c5SLiu Zhe 			public boolean value() {
226*80a6f5c5SLiu Zhe 				if (msgBox_AdditionalRowsNotSaved.exists()) {
227*80a6f5c5SLiu Zhe 					msgBox_AdditionalRowsNotSaved.ok();
228*80a6f5c5SLiu Zhe 				}
229*80a6f5c5SLiu Zhe 				return calc.isEnabled();
230*80a6f5c5SLiu Zhe 			}
231*80a6f5c5SLiu Zhe 
232*80a6f5c5SLiu Zhe 		}.waitForTrue("Time out to wait the control to be enabled!", 120, 2);
233*80a6f5c5SLiu Zhe 
234*80a6f5c5SLiu Zhe 		calc.menuItem("File->Close").select();
235*80a6f5c5SLiu Zhe 		openStartcenter();
236*80a6f5c5SLiu Zhe 		// Reopen the saved file
237*80a6f5c5SLiu Zhe 		startcenter.menuItem("File->Open...").select();
238*80a6f5c5SLiu Zhe 		submitOpenDlg(saveTo);
239*80a6f5c5SLiu Zhe 		handleBlocker(calc);
240*80a6f5c5SLiu Zhe 		sleep(10);
241*80a6f5c5SLiu Zhe 
242*80a6f5c5SLiu Zhe 		// Assert.assertTrue("File Passed:" + file,
243*80a6f5c5SLiu Zhe 		// calc.getCaption().contains(file.getName()));
244*80a6f5c5SLiu Zhe 		calc.menuItem("File->Close").select();
245*80a6f5c5SLiu Zhe 		passed = true;
246*80a6f5c5SLiu Zhe 	}
247*80a6f5c5SLiu Zhe 
testImpress()248*80a6f5c5SLiu Zhe 	public void testImpress() {
249*80a6f5c5SLiu Zhe 		startcenter.menuItem("File->Open...").select();
250*80a6f5c5SLiu Zhe 		submitOpenDlg(file.getAbsolutePath());
251*80a6f5c5SLiu Zhe 		handleBlocker(impress, impressSlideSorter, impressOutline, impressHandout);
252*80a6f5c5SLiu Zhe 		sleep(10); // Wait. Crash maybe occurs when the file is shown!
253*80a6f5c5SLiu Zhe 		SDTool.getActiveView().menuItem("View->Normal").select();
254*80a6f5c5SLiu Zhe 
255*80a6f5c5SLiu Zhe 		// Assert.assertTrue("File Passed:" + file,
256*80a6f5c5SLiu Zhe 		// impress.getCaption().contains(file.getName()));
257*80a6f5c5SLiu Zhe 
258*80a6f5c5SLiu Zhe 		impress.menuItem("File->Save As...").select();
259*80a6f5c5SLiu Zhe 		submitSaveDlg(saveTo);
260*80a6f5c5SLiu Zhe 		if (alienFormatDlg.exists(3))
261*80a6f5c5SLiu Zhe 			alienFormatDlg.ok();
262*80a6f5c5SLiu Zhe 		sleep(2);
263*80a6f5c5SLiu Zhe 		impress.waitForEnabled(120, 2);
264*80a6f5c5SLiu Zhe 		impress.menuItem("File->Close").select();
265*80a6f5c5SLiu Zhe 		openStartcenter();
266*80a6f5c5SLiu Zhe 		// Reopen the saved file
267*80a6f5c5SLiu Zhe 		startcenter.menuItem("File->Open...").select();
268*80a6f5c5SLiu Zhe 		submitOpenDlg(saveTo);
269*80a6f5c5SLiu Zhe 		handleBlocker(impress);
270*80a6f5c5SLiu Zhe 		sleep(10); // Wait.
271*80a6f5c5SLiu Zhe 
272*80a6f5c5SLiu Zhe 		// Assert.assertTrue("File Passed:" + file,
273*80a6f5c5SLiu Zhe 		// impress.getCaption().contains(file.getName()));
274*80a6f5c5SLiu Zhe 		impress.menuItem("File->Close").select();
275*80a6f5c5SLiu Zhe 		passed = true;
276*80a6f5c5SLiu Zhe 	}
277*80a6f5c5SLiu Zhe }
278