1*323ac9c5SLi Feng Wang /**************************************************************
2*323ac9c5SLi Feng Wang  *
3*323ac9c5SLi Feng Wang  * Licensed to the Apache Software Foundation (ASF) under one
4*323ac9c5SLi Feng Wang  * or more contributor license agreements.  See the NOTICE file
5*323ac9c5SLi Feng Wang  * distributed with this work for additional information
6*323ac9c5SLi Feng Wang  * regarding copyright ownership.  The ASF licenses this file
7*323ac9c5SLi Feng Wang  * to you under the Apache License, Version 2.0 (the
8*323ac9c5SLi Feng Wang  * "License"); you may not use this file except in compliance
9*323ac9c5SLi Feng Wang  * with the License.  You may obtain a copy of the License at
10*323ac9c5SLi Feng Wang  *
11*323ac9c5SLi Feng Wang  *   http://www.apache.org/licenses/LICENSE-2.0
12*323ac9c5SLi Feng Wang  *
13*323ac9c5SLi Feng Wang  * Unless required by applicable law or agreed to in writing,
14*323ac9c5SLi Feng Wang  * software distributed under the License is distributed on an
15*323ac9c5SLi Feng Wang  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*323ac9c5SLi Feng Wang  * KIND, either express or implied.  See the License for the
17*323ac9c5SLi Feng Wang  * specific language governing permissions and limitations
18*323ac9c5SLi Feng Wang  * under the License.
19*323ac9c5SLi Feng Wang  *
20*323ac9c5SLi Feng Wang  *************************************************************/
21*323ac9c5SLi Feng Wang /**
22*323ac9c5SLi Feng Wang  *
23*323ac9c5SLi Feng Wang  */
24*323ac9c5SLi Feng Wang package fvt.uno.sd.file;
25*323ac9c5SLi Feng Wang import static org.junit.Assert.*;
26*323ac9c5SLi Feng Wang 
27*323ac9c5SLi Feng Wang import org.junit.After;
28*323ac9c5SLi Feng Wang import org.junit.AfterClass;
29*323ac9c5SLi Feng Wang import org.junit.Before;
30*323ac9c5SLi Feng Wang import org.junit.BeforeClass;
31*323ac9c5SLi Feng Wang import org.junit.Test;
32*323ac9c5SLi Feng Wang import org.openoffice.test.uno.UnoApp;
33*323ac9c5SLi Feng Wang import org.openoffice.test.common.FileUtil;
34*323ac9c5SLi Feng Wang import org.openoffice.test.common.Testspace;
35*323ac9c5SLi Feng Wang 
36*323ac9c5SLi Feng Wang import com.sun.star.beans.IllegalTypeException;
37*323ac9c5SLi Feng Wang import com.sun.star.beans.Property;
38*323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyAttribute;
39*323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyExistException;
40*323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyValue;
41*323ac9c5SLi Feng Wang import com.sun.star.beans.UnknownPropertyException;
42*323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertyContainer;
43*323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertySet;
44*323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertySetInfo;
45*323ac9c5SLi Feng Wang import com.sun.star.container.XNameAccess;
46*323ac9c5SLi Feng Wang import com.sun.star.document.XDocumentProperties;
47*323ac9c5SLi Feng Wang import com.sun.star.document.XDocumentPropertiesSupplier;
48*323ac9c5SLi Feng Wang import java.util.Calendar;
49*323ac9c5SLi Feng Wang import com.sun.star.util.DateTime;
50*323ac9c5SLi Feng Wang import com.sun.star.util.Date;
51*323ac9c5SLi Feng Wang import com.sun.star.util.Duration;
52*323ac9c5SLi Feng Wang import com.sun.star.lang.IllegalArgumentException;
53*323ac9c5SLi Feng Wang import com.sun.star.lang.WrappedTargetException;
54*323ac9c5SLi Feng Wang import com.sun.star.lang.XComponent;
55*323ac9c5SLi Feng Wang import com.sun.star.lang.XMultiServiceFactory;
56*323ac9c5SLi Feng Wang import com.sun.star.uno.UnoRuntime;
57*323ac9c5SLi Feng Wang 
58*323ac9c5SLi Feng Wang /**
59*323ac9c5SLi Feng Wang  * @author LouQL
60*323ac9c5SLi Feng Wang  *
61*323ac9c5SLi Feng Wang  */
62*323ac9c5SLi Feng Wang public class CheckFileProperties {
63*323ac9c5SLi Feng Wang 
64*323ac9c5SLi Feng Wang 	private static final UnoApp app = new UnoApp();
65*323ac9c5SLi Feng Wang 
66*323ac9c5SLi Feng Wang 	private XComponent m_xSDComponent = null;
67*323ac9c5SLi Feng Wang 	private static String m_filePath = null;
68*323ac9c5SLi Feng Wang 
69*323ac9c5SLi Feng Wang 	@Before
70*323ac9c5SLi Feng Wang 	public void setUpDocument() throws Exception {
71*323ac9c5SLi Feng Wang 		if (FileUtil.fileExists(m_filePath)) {//load
72*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
73*323ac9c5SLi Feng Wang 		} else {//new
74*323ac9c5SLi Feng Wang 			m_xSDComponent = (XComponent) UnoRuntime.queryInterface(
75*323ac9c5SLi Feng Wang 					XComponent.class, app.newDocument("simpress"));
76*323ac9c5SLi Feng Wang 		}
77*323ac9c5SLi Feng Wang 	}
78*323ac9c5SLi Feng Wang 
79*323ac9c5SLi Feng Wang 	private String getUserName() throws com.sun.star.uno.Exception
80*323ac9c5SLi Feng Wang 	{
81*323ac9c5SLi Feng Wang 		Object configurationProvider = app.getServiceFactory().
82*323ac9c5SLi Feng Wang 				createInstance("com.sun.star.configuration.ConfigurationProvider");
83*323ac9c5SLi Feng Wang 
84*323ac9c5SLi Feng Wang 		XMultiServiceFactory msFac = (XMultiServiceFactory)UnoRuntime.queryInterface(
85*323ac9c5SLi Feng Wang 				XMultiServiceFactory.class, configurationProvider);
86*323ac9c5SLi Feng Wang 
87*323ac9c5SLi Feng Wang 		PropertyValue[] propValue = new PropertyValue[1];
88*323ac9c5SLi Feng Wang 		propValue[0] = new PropertyValue();
89*323ac9c5SLi Feng Wang 		propValue[0].Name = "nodepath";
90*323ac9c5SLi Feng Wang 		propValue[0].Value = "/org.openoffice.UserProfile/Data";
91*323ac9c5SLi Feng Wang 
92*323ac9c5SLi Feng Wang 		Object configurationAccess = msFac.createInstanceWithArguments(
93*323ac9c5SLi Feng Wang 				"com.sun.star.configuration.ConfigurationAccess", propValue);
94*323ac9c5SLi Feng Wang 		XNameAccess nameAcc = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, configurationAccess);
95*323ac9c5SLi Feng Wang 		String givenname = (String)nameAcc.getByName("givenname");
96*323ac9c5SLi Feng Wang 		String sn = (String)nameAcc.getByName("sn");
97*323ac9c5SLi Feng Wang 		String name = null;
98*323ac9c5SLi Feng Wang 		if(givenname.length() == 0) name = sn;
99*323ac9c5SLi Feng Wang 		else	name = givenname+" "+sn;
100*323ac9c5SLi Feng Wang 
101*323ac9c5SLi Feng Wang 		return name;
102*323ac9c5SLi Feng Wang 	}
103*323ac9c5SLi Feng Wang 
104*323ac9c5SLi Feng Wang 	private XDocumentProperties getDocumentProperties(){
105*323ac9c5SLi Feng Wang 		XDocumentPropertiesSupplier xDocumentProSupplier = (XDocumentPropertiesSupplier)UnoRuntime.queryInterface(
106*323ac9c5SLi Feng Wang 				XDocumentPropertiesSupplier.class, this.m_xSDComponent);
107*323ac9c5SLi Feng Wang 		return xDocumentProSupplier.getDocumentProperties();
108*323ac9c5SLi Feng Wang 	}
109*323ac9c5SLi Feng Wang 
110*323ac9c5SLi Feng Wang 	@After
111*323ac9c5SLi Feng Wang 	public void tearDownDocument() {
112*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
113*323ac9c5SLi Feng Wang 
114*323ac9c5SLi Feng Wang 	}
115*323ac9c5SLi Feng Wang 
116*323ac9c5SLi Feng Wang 	@BeforeClass
117*323ac9c5SLi Feng Wang 	public static void setUpConnection() throws Exception {
118*323ac9c5SLi Feng Wang 		app.start();
119*323ac9c5SLi Feng Wang 		m_filePath = Testspace.getPath("temp/CheckFileProperties.odp");
120*323ac9c5SLi Feng Wang 		FileUtil.deleteFile(m_filePath);
121*323ac9c5SLi Feng Wang 	}
122*323ac9c5SLi Feng Wang 
123*323ac9c5SLi Feng Wang 	@AfterClass
124*323ac9c5SLi Feng Wang 	public static void tearDownConnection() throws InterruptedException,
125*323ac9c5SLi Feng Wang 			Exception {
126*323ac9c5SLi Feng Wang 		app.close();
127*323ac9c5SLi Feng Wang 		//remove the temp file
128*323ac9c5SLi Feng Wang 		FileUtil.deleteFile(Testspace.getPath("temp"));
129*323ac9c5SLi Feng Wang 	}
130*323ac9c5SLi Feng Wang 
131*323ac9c5SLi Feng Wang 	/*
132*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Created*/
133*323ac9c5SLi Feng Wang 	@Test
134*323ac9c5SLi Feng Wang 	public void testGeneralAuthor() throws Exception {
135*323ac9c5SLi Feng Wang 		String author = getUserName();
136*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
137*323ac9c5SLi Feng Wang 		xDocPro.setAuthor(author);
138*323ac9c5SLi Feng Wang 
139*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
140*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
141*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
142*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
143*323ac9c5SLi Feng Wang 		assertEquals("Author should be "+ author, author, xDocPro2.getAuthor());
144*323ac9c5SLi Feng Wang 	}
145*323ac9c5SLi Feng Wang 
146*323ac9c5SLi Feng Wang 	private boolean DateTimeEquals(DateTime datetime1, DateTime datetime2){
147*323ac9c5SLi Feng Wang 
148*323ac9c5SLi Feng Wang 		if(datetime1.Seconds == datetime2.Seconds &&
149*323ac9c5SLi Feng Wang 				datetime1.Minutes == datetime2.Minutes &&
150*323ac9c5SLi Feng Wang 				datetime1.Hours == datetime2.Hours &&
151*323ac9c5SLi Feng Wang 				datetime1.Day == datetime2.Day &&
152*323ac9c5SLi Feng Wang 				datetime1.Month == datetime2.Month &&
153*323ac9c5SLi Feng Wang 				datetime1.Year == datetime2.Year)
154*323ac9c5SLi Feng Wang 			return true;
155*323ac9c5SLi Feng Wang 		else
156*323ac9c5SLi Feng Wang 			return false;
157*323ac9c5SLi Feng Wang 	}
158*323ac9c5SLi Feng Wang 
159*323ac9c5SLi Feng Wang 	private boolean DateEquals(Date date1, Date date2){
160*323ac9c5SLi Feng Wang 
161*323ac9c5SLi Feng Wang 		if(date1.Day == date2.Day &&
162*323ac9c5SLi Feng Wang 		   date1.Month == date2.Month &&
163*323ac9c5SLi Feng Wang 			date1.Year == date2.Year)
164*323ac9c5SLi Feng Wang 			return true;
165*323ac9c5SLi Feng Wang 		else
166*323ac9c5SLi Feng Wang 			return false;
167*323ac9c5SLi Feng Wang 	}
168*323ac9c5SLi Feng Wang 
169*323ac9c5SLi Feng Wang 	private boolean DurationEquals(Duration d1, Duration d2){
170*323ac9c5SLi Feng Wang 
171*323ac9c5SLi Feng Wang 		if(d1.Seconds == d2.Seconds &&
172*323ac9c5SLi Feng Wang 				d1.Minutes == d2.Minutes &&
173*323ac9c5SLi Feng Wang 				d1.Hours == d2.Hours &&
174*323ac9c5SLi Feng Wang 				d1.Days == d2.Days &&
175*323ac9c5SLi Feng Wang 				d1.Months == d2.Months &&
176*323ac9c5SLi Feng Wang 				d1.Years == d2.Years)
177*323ac9c5SLi Feng Wang 			return true;
178*323ac9c5SLi Feng Wang 		else
179*323ac9c5SLi Feng Wang 			return false;
180*323ac9c5SLi Feng Wang 	}
181*323ac9c5SLi Feng Wang 
182*323ac9c5SLi Feng Wang 	private DateTime getCurrentDateTime(){
183*323ac9c5SLi Feng Wang 		Calendar ca = Calendar.getInstance();
184*323ac9c5SLi Feng Wang 		DateTime currentDateTime = new DateTime();
185*323ac9c5SLi Feng Wang 		currentDateTime.Year = (short)ca.get(Calendar.YEAR);
186*323ac9c5SLi Feng Wang 		currentDateTime.Month = (short)ca.get(Calendar.MONTH);
187*323ac9c5SLi Feng Wang 		currentDateTime.Day = (short)ca.get(Calendar.DATE);
188*323ac9c5SLi Feng Wang 		currentDateTime.Minutes = (short)ca.get(Calendar.MINUTE);
189*323ac9c5SLi Feng Wang 		currentDateTime.Hours = (short)ca.get(Calendar.HOUR);
190*323ac9c5SLi Feng Wang 		currentDateTime.Seconds = (short)ca.get(Calendar.SECOND);
191*323ac9c5SLi Feng Wang 
192*323ac9c5SLi Feng Wang 		return currentDateTime;
193*323ac9c5SLi Feng Wang 	}
194*323ac9c5SLi Feng Wang 
195*323ac9c5SLi Feng Wang 	private Date getCurrentDate(){
196*323ac9c5SLi Feng Wang 		Calendar ca = Calendar.getInstance();
197*323ac9c5SLi Feng Wang 		Date currentDate = new Date();
198*323ac9c5SLi Feng Wang 		currentDate.Year = (short)ca.get(Calendar.YEAR);
199*323ac9c5SLi Feng Wang 		currentDate.Month = (short)ca.get(Calendar.MONTH);
200*323ac9c5SLi Feng Wang 		currentDate.Day = (short)ca.get(Calendar.DATE);
201*323ac9c5SLi Feng Wang 
202*323ac9c5SLi Feng Wang 		return currentDate;
203*323ac9c5SLi Feng Wang 	}
204*323ac9c5SLi Feng Wang 
205*323ac9c5SLi Feng Wang 	/*
206*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Created*/
207*323ac9c5SLi Feng Wang 	@Test
208*323ac9c5SLi Feng Wang 	public void testGeneralCreationDate() throws Exception {
209*323ac9c5SLi Feng Wang 		DateTime creationDate = getCurrentDateTime();
210*323ac9c5SLi Feng Wang 
211*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
212*323ac9c5SLi Feng Wang 
213*323ac9c5SLi Feng Wang 		xDocPro.setCreationDate(creationDate);
214*323ac9c5SLi Feng Wang 
215*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
216*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
217*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
218*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
219*323ac9c5SLi Feng Wang 		DateTime result = xDocPro2.getCreationDate();
220*323ac9c5SLi Feng Wang 		assertTrue("CreationDate should be the same as set", this.DateTimeEquals(creationDate, result));
221*323ac9c5SLi Feng Wang 	}
222*323ac9c5SLi Feng Wang 
223*323ac9c5SLi Feng Wang 	/*
224*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Modified*/
225*323ac9c5SLi Feng Wang 	@Test
226*323ac9c5SLi Feng Wang 	//ModifiedBy will be set each time the file loaded. The value is the one set in Tools->options->User data->Last name
227*323ac9c5SLi Feng Wang 	public void testGeneralModifiedBy() throws Exception {
228*323ac9c5SLi Feng Wang 		String modifiedBy = this.getUserName();
229*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
230*323ac9c5SLi Feng Wang 		xDocPro.setModifiedBy(modifiedBy);
231*323ac9c5SLi Feng Wang 
232*323ac9c5SLi Feng Wang 
233*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
234*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
235*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
236*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
237*323ac9c5SLi Feng Wang 		assertEquals("The file is modified by "+ modifiedBy, modifiedBy, xDocPro2.getModifiedBy());
238*323ac9c5SLi Feng Wang 	}
239*323ac9c5SLi Feng Wang 
240*323ac9c5SLi Feng Wang 	/*
241*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Modified*/
242*323ac9c5SLi Feng Wang 	@Test
243*323ac9c5SLi Feng Wang 	public void testGeneralModificationDate() throws Exception {
244*323ac9c5SLi Feng Wang 		//modification date will be set each time the file saved, so I don't save after set.
245*323ac9c5SLi Feng Wang 		DateTime modificationDate = getCurrentDateTime();
246*323ac9c5SLi Feng Wang 
247*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
248*323ac9c5SLi Feng Wang 
249*323ac9c5SLi Feng Wang 		xDocPro.setModificationDate(modificationDate);
250*323ac9c5SLi Feng Wang 
251*323ac9c5SLi Feng Wang 		DateTime result = xDocPro.getModificationDate();
252*323ac9c5SLi Feng Wang 		assertTrue("ModificationDate should be the same as set", this.DateTimeEquals(modificationDate, result));
253*323ac9c5SLi Feng Wang 	}
254*323ac9c5SLi Feng Wang 
255*323ac9c5SLi Feng Wang 	/*
256*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Last printed*/
257*323ac9c5SLi Feng Wang 	@Test
258*323ac9c5SLi Feng Wang 	public void testGeneralPrintBy() throws Exception {
259*323ac9c5SLi Feng Wang 		String printBy = "PrintBy";
260*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
261*323ac9c5SLi Feng Wang 
262*323ac9c5SLi Feng Wang 		xDocPro.setPrintedBy(printBy);
263*323ac9c5SLi Feng Wang 
264*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
265*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
266*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
267*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
268*323ac9c5SLi Feng Wang 		assertEquals("This document is printed by "+ printBy, printBy, xDocPro2.getPrintedBy());
269*323ac9c5SLi Feng Wang 	}
270*323ac9c5SLi Feng Wang 
271*323ac9c5SLi Feng Wang 	/*
272*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Last printed*/
273*323ac9c5SLi Feng Wang 	@Test
274*323ac9c5SLi Feng Wang 	public void testGeneralPrintDate() throws Exception {
275*323ac9c5SLi Feng Wang 		DateTime printDate = getCurrentDateTime();
276*323ac9c5SLi Feng Wang 
277*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
278*323ac9c5SLi Feng Wang 
279*323ac9c5SLi Feng Wang 		xDocPro.setPrintDate(printDate);
280*323ac9c5SLi Feng Wang 
281*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
282*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
283*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
284*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
285*323ac9c5SLi Feng Wang 		DateTime result = xDocPro2.getPrintDate();
286*323ac9c5SLi Feng Wang 		assertTrue("PrintDate should be the same as set", this.DateTimeEquals(printDate, result));
287*323ac9c5SLi Feng Wang 	}
288*323ac9c5SLi Feng Wang 
289*323ac9c5SLi Feng Wang 	/*
290*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Total editing time*/
291*323ac9c5SLi Feng Wang 	@Test
292*323ac9c5SLi Feng Wang 	public void testGeneralEditingDuration() throws Exception {
293*323ac9c5SLi Feng Wang 		int editingDuration = 60;
294*323ac9c5SLi Feng Wang 
295*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
296*323ac9c5SLi Feng Wang 
297*323ac9c5SLi Feng Wang 		xDocPro.setEditingDuration(editingDuration);
298*323ac9c5SLi Feng Wang 
299*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
300*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
301*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
302*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
303*323ac9c5SLi Feng Wang 		assertEquals("Totally editing time should be "+ editingDuration, editingDuration, xDocPro2.getEditingDuration());
304*323ac9c5SLi Feng Wang 	}
305*323ac9c5SLi Feng Wang 
306*323ac9c5SLi Feng Wang 	/*
307*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Revision number*/
308*323ac9c5SLi Feng Wang 	@Test
309*323ac9c5SLi Feng Wang 	public void testGeneralRevisionNumber() throws Exception {
310*323ac9c5SLi Feng Wang 		short revisionNumber = 10;
311*323ac9c5SLi Feng Wang 
312*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
313*323ac9c5SLi Feng Wang 
314*323ac9c5SLi Feng Wang 		xDocPro.setEditingCycles(revisionNumber);
315*323ac9c5SLi Feng Wang 
316*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
317*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
318*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
319*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
320*323ac9c5SLi Feng Wang 		assertEquals("Revision number should be "+ revisionNumber, revisionNumber, xDocPro2.getEditingCycles());
321*323ac9c5SLi Feng Wang 	}
322*323ac9c5SLi Feng Wang 
323*323ac9c5SLi Feng Wang 	/*
324*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->template*/
325*323ac9c5SLi Feng Wang 	@Test
326*323ac9c5SLi Feng Wang 	public void testGeneralTemplateName() throws Exception {
327*323ac9c5SLi Feng Wang 		String templateName = "I'm a template";
328*323ac9c5SLi Feng Wang 
329*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
330*323ac9c5SLi Feng Wang 
331*323ac9c5SLi Feng Wang 		xDocPro.setTemplateName(templateName);
332*323ac9c5SLi Feng Wang 
333*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
334*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
335*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
336*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
337*323ac9c5SLi Feng Wang 		assertEquals("Template name should be "+ templateName, templateName, xDocPro2.getTemplateName());
338*323ac9c5SLi Feng Wang 	}
339*323ac9c5SLi Feng Wang 
340*323ac9c5SLi Feng Wang 	/*
341*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Reset*/
342*323ac9c5SLi Feng Wang 	@Test
343*323ac9c5SLi Feng Wang 	public void testGeneralReset() throws Exception {
344*323ac9c5SLi Feng Wang 		String author = "ResetAuthor";
345*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
346*323ac9c5SLi Feng Wang 		xDocPro.resetUserData(author);
347*323ac9c5SLi Feng Wang 
348*323ac9c5SLi Feng Wang 		assertEquals("Author should be "+ author, author, xDocPro.getAuthor());
349*323ac9c5SLi Feng Wang 		assertEquals("Modified should be empty", "", xDocPro.getModifiedBy());
350*323ac9c5SLi Feng Wang 		assertTrue("ModificationDate should be empty",
351*323ac9c5SLi Feng Wang 				DateTimeEquals(new DateTime(), xDocPro.getModificationDate()));
352*323ac9c5SLi Feng Wang 		assertEquals("PrintBy should be empty", "", xDocPro.getPrintedBy());
353*323ac9c5SLi Feng Wang 		assertTrue("PrintDate should be empty",
354*323ac9c5SLi Feng Wang 				DateTimeEquals(new DateTime(), xDocPro.getPrintDate()));
355*323ac9c5SLi Feng Wang 		assertEquals("Totally editing time should be empty", 0, xDocPro.getEditingDuration());
356*323ac9c5SLi Feng Wang 		assertEquals("Revision number should be empty", 1, xDocPro.getEditingCycles());
357*323ac9c5SLi Feng Wang 	}
358*323ac9c5SLi Feng Wang 
359*323ac9c5SLi Feng Wang 	// UI entry: File->Properties->General->Apply user data
360*323ac9c5SLi Feng Wang 
361*323ac9c5SLi Feng Wang 	// UI entry: File->Properties->General->digital signature
362*323ac9c5SLi Feng Wang 
363*323ac9c5SLi Feng Wang 	//Description begin
364*323ac9c5SLi Feng Wang 	/*
365*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Title*/
366*323ac9c5SLi Feng Wang 	@Test
367*323ac9c5SLi Feng Wang 	public void testDescriptionTitle() throws Exception{
368*323ac9c5SLi Feng Wang 		String title = "titleForTest";
369*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
370*323ac9c5SLi Feng Wang 		xDocPro.setTitle(title);
371*323ac9c5SLi Feng Wang 
372*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
373*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
374*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
375*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
376*323ac9c5SLi Feng Wang 		assertEquals("Title should be "+ title, title, xDocPro2.getTitle());
377*323ac9c5SLi Feng Wang 	}
378*323ac9c5SLi Feng Wang 
379*323ac9c5SLi Feng Wang 	/*
380*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Subject*/
381*323ac9c5SLi Feng Wang 	@Test
382*323ac9c5SLi Feng Wang 	public void testDescriptionSubject() throws Exception{
383*323ac9c5SLi Feng Wang 		String subject = "subjectForTest";
384*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
385*323ac9c5SLi Feng Wang 		xDocPro.setSubject(subject);
386*323ac9c5SLi Feng Wang 
387*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
388*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
389*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
390*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
391*323ac9c5SLi Feng Wang 		assertEquals("Subject should be "+ subject, subject, xDocPro2.getSubject());
392*323ac9c5SLi Feng Wang 	}
393*323ac9c5SLi Feng Wang 
394*323ac9c5SLi Feng Wang 	/*
395*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Keywords*/
396*323ac9c5SLi Feng Wang 	@Test
397*323ac9c5SLi Feng Wang 	public void testDescriptionKeywords() throws Exception{
398*323ac9c5SLi Feng Wang 		String[] keywords = {"keyword1", "keyword2"};
399*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
400*323ac9c5SLi Feng Wang 		xDocPro.setKeywords(keywords);
401*323ac9c5SLi Feng Wang 
402*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
403*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
404*323ac9c5SLi Feng Wang 
405*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
406*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
407*323ac9c5SLi Feng Wang 		String[] keywordsResult = xDocPro2.getKeywords();
408*323ac9c5SLi Feng Wang 		assertEquals("There should be 2 Keywords", 2, keywordsResult.length);
409*323ac9c5SLi Feng Wang 		for(int i=0;i<keywordsResult.length;i++)
410*323ac9c5SLi Feng Wang 		{
411*323ac9c5SLi Feng Wang 			String num = Integer.toString(i+1);
412*323ac9c5SLi Feng Wang 			assertEquals("The keywords should be keyword"+num, "keyword"+num, keywordsResult[i]);
413*323ac9c5SLi Feng Wang 		}
414*323ac9c5SLi Feng Wang 	}
415*323ac9c5SLi Feng Wang 
416*323ac9c5SLi Feng Wang 	/*
417*323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Comments*/
418*323ac9c5SLi Feng Wang 	@Test
419*323ac9c5SLi Feng Wang 	public void testDescriptionComments() throws Exception{
420*323ac9c5SLi Feng Wang 		String comments = "This is the comment.";
421*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
422*323ac9c5SLi Feng Wang 		xDocPro.setDescription(comments);
423*323ac9c5SLi Feng Wang 
424*323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
425*323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
426*323ac9c5SLi Feng Wang 
427*323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
428*323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
429*323ac9c5SLi Feng Wang 
430*323ac9c5SLi Feng Wang 		assertEquals("Comments should be "+comments, comments, xDocPro2.getDescription());
431*323ac9c5SLi Feng Wang 	}
432*323ac9c5SLi Feng Wang 	//Description end
433*323ac9c5SLi Feng Wang 
434*323ac9c5SLi Feng Wang 	//custom properties begin
435*323ac9c5SLi Feng Wang 	//UI entry: File->Properties->Custom properties
436*323ac9c5SLi Feng Wang 		private void addCustomPro(String propertyName, Object value) throws PropertyExistException, IllegalTypeException, IllegalArgumentException{
437*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
438*323ac9c5SLi Feng Wang 			XPropertyContainer proContainer = xDocPro.getUserDefinedProperties();
439*323ac9c5SLi Feng Wang 			proContainer.addProperty(propertyName, PropertyAttribute.REMOVEABLE, value);
440*323ac9c5SLi Feng Wang 		}
441*323ac9c5SLi Feng Wang 
442*323ac9c5SLi Feng Wang 		private Object getCustomPro(String propertyName) throws UnknownPropertyException, WrappedTargetException{
443*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
444*323ac9c5SLi Feng Wang 			XPropertyContainer proContainer = xDocPro.getUserDefinedProperties();
445*323ac9c5SLi Feng Wang 			XPropertySet xProSet = (XPropertySet)UnoRuntime.queryInterface(
446*323ac9c5SLi Feng Wang 					XPropertySet.class, proContainer);
447*323ac9c5SLi Feng Wang 
448*323ac9c5SLi Feng Wang 			return xProSet.getPropertyValue(propertyName);
449*323ac9c5SLi Feng Wang 		}
450*323ac9c5SLi Feng Wang 
451*323ac9c5SLi Feng Wang 		@Test
452*323ac9c5SLi Feng Wang 		public void testCustomAddPro_Text() throws Exception{
453*323ac9c5SLi Feng Wang 			String addedProName = "TextPro";
454*323ac9c5SLi Feng Wang 			String addedProDefaultValue = "testUser";
455*323ac9c5SLi Feng Wang 
456*323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
457*323ac9c5SLi Feng Wang 
458*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
459*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
460*323ac9c5SLi Feng Wang 
461*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
462*323ac9c5SLi Feng Wang 
463*323ac9c5SLi Feng Wang 			String result = (String)getCustomPro(addedProName);
464*323ac9c5SLi Feng Wang 
465*323ac9c5SLi Feng Wang 			assertTrue("added Text property \""+addedProName+"\" should exist", result != null);
466*323ac9c5SLi Feng Wang 			assertEquals("value of added property should be "+addedProDefaultValue,
467*323ac9c5SLi Feng Wang 					addedProDefaultValue, result);
468*323ac9c5SLi Feng Wang 		}
469*323ac9c5SLi Feng Wang 
470*323ac9c5SLi Feng Wang 		@Test
471*323ac9c5SLi Feng Wang 		public void testCustomAddPro_DateTime() throws Exception{
472*323ac9c5SLi Feng Wang 			String addedProName = "DateTimePro";
473*323ac9c5SLi Feng Wang 			DateTime addedProDefaultValue = getCurrentDateTime();
474*323ac9c5SLi Feng Wang 
475*323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
476*323ac9c5SLi Feng Wang 
477*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
478*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
479*323ac9c5SLi Feng Wang 
480*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
481*323ac9c5SLi Feng Wang 
482*323ac9c5SLi Feng Wang 			DateTime result = (DateTime)getCustomPro(addedProName);
483*323ac9c5SLi Feng Wang 			assertTrue("added DateTime property \""+addedProName+"\" should exist", result != null);
484*323ac9c5SLi Feng Wang 			assertTrue("value of added property should be the same as set",
485*323ac9c5SLi Feng Wang 					this.DateTimeEquals(result, addedProDefaultValue));
486*323ac9c5SLi Feng Wang 		}
487*323ac9c5SLi Feng Wang 
488*323ac9c5SLi Feng Wang 		@Test
489*323ac9c5SLi Feng Wang 		public void testCustomAddPro_Date() throws Exception{
490*323ac9c5SLi Feng Wang 			String addedProName = "DatePro";
491*323ac9c5SLi Feng Wang 			Date addedProDefaultValue = getCurrentDate();
492*323ac9c5SLi Feng Wang 
493*323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
494*323ac9c5SLi Feng Wang 
495*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
496*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
497*323ac9c5SLi Feng Wang 
498*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
499*323ac9c5SLi Feng Wang 
500*323ac9c5SLi Feng Wang 			Date result = (Date)getCustomPro(addedProName);
501*323ac9c5SLi Feng Wang 			assertTrue("added Date property \""+addedProName+"\" should exist", result != null);
502*323ac9c5SLi Feng Wang 			assertTrue("value of added property should be the same as set",
503*323ac9c5SLi Feng Wang 					this.DateEquals(result, addedProDefaultValue));
504*323ac9c5SLi Feng Wang 		}
505*323ac9c5SLi Feng Wang 
506*323ac9c5SLi Feng Wang 		@Test
507*323ac9c5SLi Feng Wang 		public void testCustomAddPro_Duration() throws Exception{
508*323ac9c5SLi Feng Wang 			String addedProName = "DurationPro";
509*323ac9c5SLi Feng Wang 			Duration addedProDefaultValue = new Duration();
510*323ac9c5SLi Feng Wang 			addedProDefaultValue.Days = 1;
511*323ac9c5SLi Feng Wang 
512*323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
513*323ac9c5SLi Feng Wang 
514*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
515*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
516*323ac9c5SLi Feng Wang 
517*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
518*323ac9c5SLi Feng Wang 
519*323ac9c5SLi Feng Wang 			Duration result = (Duration)getCustomPro(addedProName);
520*323ac9c5SLi Feng Wang 			assertTrue("added Date property \""+addedProName+"\" should exist", result != null);
521*323ac9c5SLi Feng Wang 			assertTrue("value of added property should the same as set", DurationEquals(addedProDefaultValue, result));
522*323ac9c5SLi Feng Wang 		}
523*323ac9c5SLi Feng Wang 
524*323ac9c5SLi Feng Wang 		@Test
525*323ac9c5SLi Feng Wang 		public void testCustomAddPro_Number() throws Exception{
526*323ac9c5SLi Feng Wang 			String addedProName = "NumberPro";
527*323ac9c5SLi Feng Wang 			Double addedProDefaultValue = (double)10;
528*323ac9c5SLi Feng Wang 
529*323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
530*323ac9c5SLi Feng Wang 
531*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
532*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
533*323ac9c5SLi Feng Wang 
534*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
535*323ac9c5SLi Feng Wang 
536*323ac9c5SLi Feng Wang 			Object oResult = getCustomPro(addedProName);
537*323ac9c5SLi Feng Wang 
538*323ac9c5SLi Feng Wang 			Double result = (Double)oResult;
539*323ac9c5SLi Feng Wang 			assertTrue("added Number property \""+addedProName+"\" should exist", oResult != null);
540*323ac9c5SLi Feng Wang 			assertEquals("value of added property should be "+Double.toString(addedProDefaultValue),
541*323ac9c5SLi Feng Wang 					addedProDefaultValue, result);
542*323ac9c5SLi Feng Wang 		}
543*323ac9c5SLi Feng Wang 
544*323ac9c5SLi Feng Wang 		@Test
545*323ac9c5SLi Feng Wang 		public void testCustomAddPro_Boolean() throws Exception{
546*323ac9c5SLi Feng Wang 			String addedProName = "BooleanPro";
547*323ac9c5SLi Feng Wang 			Boolean addedProDefaultValue = true;
548*323ac9c5SLi Feng Wang 
549*323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
550*323ac9c5SLi Feng Wang 
551*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
552*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
553*323ac9c5SLi Feng Wang 
554*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
555*323ac9c5SLi Feng Wang 
556*323ac9c5SLi Feng Wang 			Object oResult = getCustomPro(addedProName);
557*323ac9c5SLi Feng Wang 
558*323ac9c5SLi Feng Wang 			boolean result = (Boolean)oResult;
559*323ac9c5SLi Feng Wang 			assertTrue("added Number property \""+addedProName+"\" should exist", oResult != null);
560*323ac9c5SLi Feng Wang 			assertEquals("value of added property should be "+Boolean.toString(addedProDefaultValue),
561*323ac9c5SLi Feng Wang 					addedProDefaultValue, result);
562*323ac9c5SLi Feng Wang 		}
563*323ac9c5SLi Feng Wang 
564*323ac9c5SLi Feng Wang 		@Test
565*323ac9c5SLi Feng Wang 		public void testCustomRemovePro() throws Exception{
566*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
567*323ac9c5SLi Feng Wang 			XPropertyContainer proContainer = xDocPro.getUserDefinedProperties();
568*323ac9c5SLi Feng Wang 			XPropertySet xProSet = (XPropertySet)UnoRuntime.queryInterface(
569*323ac9c5SLi Feng Wang 					XPropertySet.class, proContainer);
570*323ac9c5SLi Feng Wang 			XPropertySetInfo xproSetInfo = xProSet.getPropertySetInfo();
571*323ac9c5SLi Feng Wang 			Property[] pros = xproSetInfo.getProperties();
572*323ac9c5SLi Feng Wang 
573*323ac9c5SLi Feng Wang 			if(pros.length == 0) //if there is no custom property, add one
574*323ac9c5SLi Feng Wang 			{
575*323ac9c5SLi Feng Wang 				addCustomPro("testPro", "value");
576*323ac9c5SLi Feng Wang 			}
577*323ac9c5SLi Feng Wang 
578*323ac9c5SLi Feng Wang 			for(int i=0; i< pros.length;i++)
579*323ac9c5SLi Feng Wang 			{
580*323ac9c5SLi Feng Wang 				proContainer.removeProperty(pros[i].Name);
581*323ac9c5SLi Feng Wang 			}
582*323ac9c5SLi Feng Wang 
583*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
584*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
585*323ac9c5SLi Feng Wang 
586*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
587*323ac9c5SLi Feng Wang 
588*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
589*323ac9c5SLi Feng Wang 			XPropertyContainer proContainer2 = xDocPro2.getUserDefinedProperties();
590*323ac9c5SLi Feng Wang 			XPropertySet xProSet2 = (XPropertySet)UnoRuntime.queryInterface(
591*323ac9c5SLi Feng Wang 					XPropertySet.class, proContainer2);
592*323ac9c5SLi Feng Wang 			XPropertySetInfo xproSetInfo2 = xProSet2.getPropertySetInfo();
593*323ac9c5SLi Feng Wang 			Property[] pros2 = xproSetInfo2.getProperties();
594*323ac9c5SLi Feng Wang 
595*323ac9c5SLi Feng Wang 			assertEquals("number of custom property should be zero ",
596*323ac9c5SLi Feng Wang 					0, pros2.length);
597*323ac9c5SLi Feng Wang 		}
598*323ac9c5SLi Feng Wang 	//custom properties end
599*323ac9c5SLi Feng Wang 
600*323ac9c5SLi Feng Wang 		//Internet begin
601*323ac9c5SLi Feng Wang 		private void setAutoLoad(String URL, int secs) throws IllegalArgumentException
602*323ac9c5SLi Feng Wang 		{
603*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
604*323ac9c5SLi Feng Wang 			xDocPro.setAutoloadURL(URL);
605*323ac9c5SLi Feng Wang 			xDocPro.setAutoloadSecs(secs);
606*323ac9c5SLi Feng Wang 			xDocPro.setDefaultTarget("_blank");
607*323ac9c5SLi Feng Wang 		}
608*323ac9c5SLi Feng Wang 
609*323ac9c5SLi Feng Wang 		@Test
610*323ac9c5SLi Feng Wang 		public void testNoRefresh() throws Exception{
611*323ac9c5SLi Feng Wang 			String autoLoadURL = "";
612*323ac9c5SLi Feng Wang 			int autoLoadSecs = 0;
613*323ac9c5SLi Feng Wang 			setAutoLoad(autoLoadURL, autoLoadSecs);
614*323ac9c5SLi Feng Wang 
615*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
616*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
617*323ac9c5SLi Feng Wang 
618*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
619*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
620*323ac9c5SLi Feng Wang 
621*323ac9c5SLi Feng Wang 			assertEquals("AutoLoadURL should be empty", autoLoadURL, xDocPro2.getAutoloadURL());
622*323ac9c5SLi Feng Wang 			assertEquals("AutoLoadSecs should be 0", autoLoadSecs, xDocPro2.getAutoloadSecs());
623*323ac9c5SLi Feng Wang 		}
624*323ac9c5SLi Feng Wang 
625*323ac9c5SLi Feng Wang 		@Test
626*323ac9c5SLi Feng Wang 		public void testRefreshEvery60Secs() throws Exception{
627*323ac9c5SLi Feng Wang 			String autoLoadURL = "";
628*323ac9c5SLi Feng Wang 			int autoLoadSecs = 60;
629*323ac9c5SLi Feng Wang 			setAutoLoad(autoLoadURL, autoLoadSecs);
630*323ac9c5SLi Feng Wang 
631*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
632*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
633*323ac9c5SLi Feng Wang 
634*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
635*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
636*323ac9c5SLi Feng Wang 
637*323ac9c5SLi Feng Wang 			assertEquals("AutoLoadURL should be empty", autoLoadURL, xDocPro2.getAutoloadURL());
638*323ac9c5SLi Feng Wang 			assertEquals("AutoLoadSecs should be "+Integer.toString(autoLoadSecs), autoLoadSecs, xDocPro2.getAutoloadSecs());
639*323ac9c5SLi Feng Wang 		}
640*323ac9c5SLi Feng Wang 
641*323ac9c5SLi Feng Wang 		@Test
642*323ac9c5SLi Feng Wang 		public void testRedirect() throws Exception{
643*323ac9c5SLi Feng Wang 			String autoLoadURL = "http://www.openoffice.com/";
644*323ac9c5SLi Feng Wang 			int autoLoadSecs = 5;
645*323ac9c5SLi Feng Wang 			setAutoLoad(autoLoadURL, autoLoadSecs);
646*323ac9c5SLi Feng Wang 
647*323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
648*323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
649*323ac9c5SLi Feng Wang 
650*323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
651*323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
652*323ac9c5SLi Feng Wang 
653*323ac9c5SLi Feng Wang 			assertEquals("AutoLoadURL should be empty", autoLoadURL, xDocPro2.getAutoloadURL());
654*323ac9c5SLi Feng Wang 			assertEquals("AutoLoadSecs should be "+Integer.toString(autoLoadSecs), autoLoadSecs, xDocPro2.getAutoloadSecs());
655*323ac9c5SLi Feng Wang 		}
656*323ac9c5SLi Feng Wang 		//Internet end
657*323ac9c5SLi Feng Wang }
658