1323ac9c5SLi Feng Wang /**************************************************************
2323ac9c5SLi Feng Wang  *
3323ac9c5SLi Feng Wang  * Licensed to the Apache Software Foundation (ASF) under one
4323ac9c5SLi Feng Wang  * or more contributor license agreements.  See the NOTICE file
5323ac9c5SLi Feng Wang  * distributed with this work for additional information
6323ac9c5SLi Feng Wang  * regarding copyright ownership.  The ASF licenses this file
7323ac9c5SLi Feng Wang  * to you under the Apache License, Version 2.0 (the
8323ac9c5SLi Feng Wang  * "License"); you may not use this file except in compliance
9323ac9c5SLi Feng Wang  * with the License.  You may obtain a copy of the License at
10323ac9c5SLi Feng Wang  *
11323ac9c5SLi Feng Wang  *   http://www.apache.org/licenses/LICENSE-2.0
12323ac9c5SLi Feng Wang  *
13323ac9c5SLi Feng Wang  * Unless required by applicable law or agreed to in writing,
14323ac9c5SLi Feng Wang  * software distributed under the License is distributed on an
15323ac9c5SLi Feng Wang  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16323ac9c5SLi Feng Wang  * KIND, either express or implied.  See the License for the
17323ac9c5SLi Feng Wang  * specific language governing permissions and limitations
18323ac9c5SLi Feng Wang  * under the License.
19323ac9c5SLi Feng Wang  *
20323ac9c5SLi Feng Wang  *************************************************************/
21323ac9c5SLi Feng Wang /**
22323ac9c5SLi Feng Wang  *
23323ac9c5SLi Feng Wang  */
24323ac9c5SLi Feng Wang package fvt.uno.sd.file;
25323ac9c5SLi Feng Wang import static org.junit.Assert.*;
26323ac9c5SLi Feng Wang 
27323ac9c5SLi Feng Wang import org.junit.After;
28323ac9c5SLi Feng Wang import org.junit.AfterClass;
29323ac9c5SLi Feng Wang import org.junit.Before;
30323ac9c5SLi Feng Wang import org.junit.BeforeClass;
31323ac9c5SLi Feng Wang import org.junit.Test;
32ce8ed6d5SDamjan Jovanovic import org.openoffice.test.OpenOffice;
33323ac9c5SLi Feng Wang import org.openoffice.test.uno.UnoApp;
34323ac9c5SLi Feng Wang import org.openoffice.test.common.FileUtil;
35323ac9c5SLi Feng Wang import org.openoffice.test.common.Testspace;
36323ac9c5SLi Feng Wang 
37323ac9c5SLi Feng Wang import com.sun.star.beans.IllegalTypeException;
38323ac9c5SLi Feng Wang import com.sun.star.beans.Property;
39323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyAttribute;
40323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyExistException;
41323ac9c5SLi Feng Wang import com.sun.star.beans.PropertyValue;
42323ac9c5SLi Feng Wang import com.sun.star.beans.UnknownPropertyException;
43323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertyContainer;
44323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertySet;
45323ac9c5SLi Feng Wang import com.sun.star.beans.XPropertySetInfo;
46323ac9c5SLi Feng Wang import com.sun.star.container.XNameAccess;
47323ac9c5SLi Feng Wang import com.sun.star.document.XDocumentProperties;
48323ac9c5SLi Feng Wang import com.sun.star.document.XDocumentPropertiesSupplier;
49323ac9c5SLi Feng Wang import java.util.Calendar;
50323ac9c5SLi Feng Wang import com.sun.star.util.DateTime;
51323ac9c5SLi Feng Wang import com.sun.star.util.Date;
52323ac9c5SLi Feng Wang import com.sun.star.util.Duration;
53323ac9c5SLi Feng Wang import com.sun.star.lang.IllegalArgumentException;
54323ac9c5SLi Feng Wang import com.sun.star.lang.WrappedTargetException;
55323ac9c5SLi Feng Wang import com.sun.star.lang.XComponent;
56323ac9c5SLi Feng Wang import com.sun.star.lang.XMultiServiceFactory;
57323ac9c5SLi Feng Wang import com.sun.star.uno.UnoRuntime;
58323ac9c5SLi Feng Wang 
59323ac9c5SLi Feng Wang /**
60323ac9c5SLi Feng Wang  * @author LouQL
61323ac9c5SLi Feng Wang  *
62323ac9c5SLi Feng Wang  */
63323ac9c5SLi Feng Wang public class CheckFileProperties {
64323ac9c5SLi Feng Wang 
65ce8ed6d5SDamjan Jovanovic 	private static UnoApp app;
66323ac9c5SLi Feng Wang 
67323ac9c5SLi Feng Wang 	private XComponent m_xSDComponent = null;
68323ac9c5SLi Feng Wang 	private static String m_filePath = null;
69323ac9c5SLi Feng Wang 
70323ac9c5SLi Feng Wang 	@Before
setUpDocument()71323ac9c5SLi Feng Wang 	public void setUpDocument() throws Exception {
72323ac9c5SLi Feng Wang 		if (FileUtil.fileExists(m_filePath)) {//load
73323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
74323ac9c5SLi Feng Wang 		} else {//new
75323ac9c5SLi Feng Wang 			m_xSDComponent = (XComponent) UnoRuntime.queryInterface(
76323ac9c5SLi Feng Wang 					XComponent.class, app.newDocument("simpress"));
77323ac9c5SLi Feng Wang 		}
78323ac9c5SLi Feng Wang 	}
79323ac9c5SLi Feng Wang 
getUserName()80323ac9c5SLi Feng Wang 	private String getUserName() throws com.sun.star.uno.Exception
81323ac9c5SLi Feng Wang 	{
82323ac9c5SLi Feng Wang 		Object configurationProvider = app.getServiceFactory().
83323ac9c5SLi Feng Wang 				createInstance("com.sun.star.configuration.ConfigurationProvider");
84323ac9c5SLi Feng Wang 
85323ac9c5SLi Feng Wang 		XMultiServiceFactory msFac = (XMultiServiceFactory)UnoRuntime.queryInterface(
86323ac9c5SLi Feng Wang 				XMultiServiceFactory.class, configurationProvider);
87323ac9c5SLi Feng Wang 
88323ac9c5SLi Feng Wang 		PropertyValue[] propValue = new PropertyValue[1];
89323ac9c5SLi Feng Wang 		propValue[0] = new PropertyValue();
90323ac9c5SLi Feng Wang 		propValue[0].Name = "nodepath";
91323ac9c5SLi Feng Wang 		propValue[0].Value = "/org.openoffice.UserProfile/Data";
92323ac9c5SLi Feng Wang 
93323ac9c5SLi Feng Wang 		Object configurationAccess = msFac.createInstanceWithArguments(
94323ac9c5SLi Feng Wang 				"com.sun.star.configuration.ConfigurationAccess", propValue);
95323ac9c5SLi Feng Wang 		XNameAccess nameAcc = (XNameAccess)UnoRuntime.queryInterface(XNameAccess.class, configurationAccess);
96323ac9c5SLi Feng Wang 		String givenname = (String)nameAcc.getByName("givenname");
97323ac9c5SLi Feng Wang 		String sn = (String)nameAcc.getByName("sn");
98323ac9c5SLi Feng Wang 		String name = null;
99323ac9c5SLi Feng Wang 		if(givenname.length() == 0) name = sn;
100323ac9c5SLi Feng Wang 		else	name = givenname+" "+sn;
101323ac9c5SLi Feng Wang 
102323ac9c5SLi Feng Wang 		return name;
103323ac9c5SLi Feng Wang 	}
104323ac9c5SLi Feng Wang 
getDocumentProperties()105323ac9c5SLi Feng Wang 	private XDocumentProperties getDocumentProperties(){
106323ac9c5SLi Feng Wang 		XDocumentPropertiesSupplier xDocumentProSupplier = (XDocumentPropertiesSupplier)UnoRuntime.queryInterface(
107323ac9c5SLi Feng Wang 				XDocumentPropertiesSupplier.class, this.m_xSDComponent);
108323ac9c5SLi Feng Wang 		return xDocumentProSupplier.getDocumentProperties();
109323ac9c5SLi Feng Wang 	}
110323ac9c5SLi Feng Wang 
111323ac9c5SLi Feng Wang 	@After
tearDownDocument()112323ac9c5SLi Feng Wang 	public void tearDownDocument() {
113323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
114de51bb97SLi Feng Wang 		m_filePath = Testspace.getPath("temp/CheckFileProperties.odp");
115de51bb97SLi Feng Wang 		FileUtil.deleteFile(m_filePath);
116323ac9c5SLi Feng Wang 
117323ac9c5SLi Feng Wang 	}
118323ac9c5SLi Feng Wang 
119323ac9c5SLi Feng Wang 	@BeforeClass
setUpConnection()120323ac9c5SLi Feng Wang 	public static void setUpConnection() throws Exception {
121ce8ed6d5SDamjan Jovanovic 		OpenOffice openOffice = UnoApp.getDefaultOpenOffice();
122ce8ed6d5SDamjan Jovanovic                 // #128398#
123ce8ed6d5SDamjan Jovanovic                 openOffice.addRegistryModifications(
124ce8ed6d5SDamjan Jovanovic                     " <item oor:path=\"/org.openoffice.Office.Common/Security/Scripting\">\n" +
125ce8ed6d5SDamjan Jovanovic                     "  <prop oor:name=\"RemovePersonalInfoOnSaving\" oor:op=\"fuse\">\n" +
126ce8ed6d5SDamjan Jovanovic                     "   <value>false</value>\n" +
127ce8ed6d5SDamjan Jovanovic                     "  </prop>\n" +
128ce8ed6d5SDamjan Jovanovic                     " </item>");
129ce8ed6d5SDamjan Jovanovic                 app = new UnoApp(openOffice);
130323ac9c5SLi Feng Wang 		app.start();
131323ac9c5SLi Feng Wang 		m_filePath = Testspace.getPath("temp/CheckFileProperties.odp");
132323ac9c5SLi Feng Wang 		FileUtil.deleteFile(m_filePath);
133323ac9c5SLi Feng Wang 	}
134323ac9c5SLi Feng Wang 
135323ac9c5SLi Feng Wang 	@AfterClass
tearDownConnection()136323ac9c5SLi Feng Wang 	public static void tearDownConnection() throws InterruptedException,
137323ac9c5SLi Feng Wang 			Exception {
138323ac9c5SLi Feng Wang 		app.close();
139323ac9c5SLi Feng Wang 	}
140323ac9c5SLi Feng Wang 
141323ac9c5SLi Feng Wang 	/*
142323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Created*/
143323ac9c5SLi Feng Wang 	@Test
testGeneralAuthor()144323ac9c5SLi Feng Wang 	public void testGeneralAuthor() throws Exception {
145323ac9c5SLi Feng Wang 		String author = getUserName();
146323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
147323ac9c5SLi Feng Wang 		xDocPro.setAuthor(author);
148323ac9c5SLi Feng Wang 
149323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
150323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
151323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
152323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
153323ac9c5SLi Feng Wang 		assertEquals("Author should be "+ author, author, xDocPro2.getAuthor());
154323ac9c5SLi Feng Wang 	}
155323ac9c5SLi Feng Wang 
DateTimeEquals(DateTime datetime1, DateTime datetime2)156323ac9c5SLi Feng Wang 	private boolean DateTimeEquals(DateTime datetime1, DateTime datetime2){
157323ac9c5SLi Feng Wang 
158323ac9c5SLi Feng Wang 		if(datetime1.Seconds == datetime2.Seconds &&
159323ac9c5SLi Feng Wang 				datetime1.Minutes == datetime2.Minutes &&
160323ac9c5SLi Feng Wang 				datetime1.Hours == datetime2.Hours &&
161323ac9c5SLi Feng Wang 				datetime1.Day == datetime2.Day &&
162323ac9c5SLi Feng Wang 				datetime1.Month == datetime2.Month &&
163323ac9c5SLi Feng Wang 				datetime1.Year == datetime2.Year)
164323ac9c5SLi Feng Wang 			return true;
165323ac9c5SLi Feng Wang 		else
166323ac9c5SLi Feng Wang 			return false;
167323ac9c5SLi Feng Wang 	}
168323ac9c5SLi Feng Wang 
DateEquals(Date date1, Date date2)169323ac9c5SLi Feng Wang 	private boolean DateEquals(Date date1, Date date2){
170323ac9c5SLi Feng Wang 
171323ac9c5SLi Feng Wang 		if(date1.Day == date2.Day &&
172323ac9c5SLi Feng Wang 		   date1.Month == date2.Month &&
173323ac9c5SLi Feng Wang 			date1.Year == date2.Year)
174323ac9c5SLi Feng Wang 			return true;
175323ac9c5SLi Feng Wang 		else
176323ac9c5SLi Feng Wang 			return false;
177323ac9c5SLi Feng Wang 	}
178323ac9c5SLi Feng Wang 
DurationEquals(Duration d1, Duration d2)179323ac9c5SLi Feng Wang 	private boolean DurationEquals(Duration d1, Duration d2){
180323ac9c5SLi Feng Wang 
181323ac9c5SLi Feng Wang 		if(d1.Seconds == d2.Seconds &&
182323ac9c5SLi Feng Wang 				d1.Minutes == d2.Minutes &&
183323ac9c5SLi Feng Wang 				d1.Hours == d2.Hours &&
184323ac9c5SLi Feng Wang 				d1.Days == d2.Days &&
185323ac9c5SLi Feng Wang 				d1.Months == d2.Months &&
186323ac9c5SLi Feng Wang 				d1.Years == d2.Years)
187323ac9c5SLi Feng Wang 			return true;
188323ac9c5SLi Feng Wang 		else
189323ac9c5SLi Feng Wang 			return false;
190323ac9c5SLi Feng Wang 	}
191323ac9c5SLi Feng Wang 
getCurrentDateTime()192323ac9c5SLi Feng Wang 	private DateTime getCurrentDateTime(){
193323ac9c5SLi Feng Wang 		Calendar ca = Calendar.getInstance();
194323ac9c5SLi Feng Wang 		DateTime currentDateTime = new DateTime();
195323ac9c5SLi Feng Wang 		currentDateTime.Year = (short)ca.get(Calendar.YEAR);
196d917f5e5SDamjan Jovanovic 		// java.util.Calendar's months start at 0=January.
197d917f5e5SDamjan Jovanovic 		currentDateTime.Month = (short)(ca.get(Calendar.MONTH) + 1);
198323ac9c5SLi Feng Wang 		currentDateTime.Day = (short)ca.get(Calendar.DATE);
199323ac9c5SLi Feng Wang 		currentDateTime.Minutes = (short)ca.get(Calendar.MINUTE);
2007b7d1fc9SDamjan Jovanovic 		currentDateTime.Hours = (short)ca.get(Calendar.HOUR_OF_DAY);
201323ac9c5SLi Feng Wang 		currentDateTime.Seconds = (short)ca.get(Calendar.SECOND);
202323ac9c5SLi Feng Wang 
203323ac9c5SLi Feng Wang 		return currentDateTime;
204323ac9c5SLi Feng Wang 	}
205323ac9c5SLi Feng Wang 
getCurrentDate()206323ac9c5SLi Feng Wang 	private Date getCurrentDate(){
207323ac9c5SLi Feng Wang 		Calendar ca = Calendar.getInstance();
208323ac9c5SLi Feng Wang 		Date currentDate = new Date();
209323ac9c5SLi Feng Wang 		currentDate.Year = (short)ca.get(Calendar.YEAR);
210d917f5e5SDamjan Jovanovic 		// java.util.Calendar's months start at 0=January.
211d917f5e5SDamjan Jovanovic 		currentDate.Month = (short)(ca.get(Calendar.MONTH) + 1);
212323ac9c5SLi Feng Wang 		currentDate.Day = (short)ca.get(Calendar.DATE);
213323ac9c5SLi Feng Wang 
214323ac9c5SLi Feng Wang 		return currentDate;
215323ac9c5SLi Feng Wang 	}
216323ac9c5SLi Feng Wang 
217323ac9c5SLi Feng Wang 	/*
218323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Created*/
219323ac9c5SLi Feng Wang 	@Test
testGeneralCreationDate()220323ac9c5SLi Feng Wang 	public void testGeneralCreationDate() throws Exception {
221323ac9c5SLi Feng Wang 		DateTime creationDate = getCurrentDateTime();
222323ac9c5SLi Feng Wang 
223323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
224323ac9c5SLi Feng Wang 
225323ac9c5SLi Feng Wang 		xDocPro.setCreationDate(creationDate);
226323ac9c5SLi Feng Wang 
227323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
228323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
229323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
230323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
231323ac9c5SLi Feng Wang 		DateTime result = xDocPro2.getCreationDate();
232323ac9c5SLi Feng Wang 		assertTrue("CreationDate should be the same as set", this.DateTimeEquals(creationDate, result));
233323ac9c5SLi Feng Wang 	}
234323ac9c5SLi Feng Wang 
235323ac9c5SLi Feng Wang 	/*
236323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Modified*/
237323ac9c5SLi Feng Wang 	@Test
238323ac9c5SLi Feng Wang 	//ModifiedBy will be set each time the file loaded. The value is the one set in Tools->options->User data->Last name
testGeneralModifiedBy()239323ac9c5SLi Feng Wang 	public void testGeneralModifiedBy() throws Exception {
240323ac9c5SLi Feng Wang 		String modifiedBy = this.getUserName();
241323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
242323ac9c5SLi Feng Wang 		xDocPro.setModifiedBy(modifiedBy);
243323ac9c5SLi Feng Wang 
244323ac9c5SLi Feng Wang 
245323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
246323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
247323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
248323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
249323ac9c5SLi Feng Wang 		assertEquals("The file is modified by "+ modifiedBy, modifiedBy, xDocPro2.getModifiedBy());
250323ac9c5SLi Feng Wang 	}
251323ac9c5SLi Feng Wang 
252323ac9c5SLi Feng Wang 	/*
253323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Modified*/
254323ac9c5SLi Feng Wang 	@Test
testGeneralModificationDate()255323ac9c5SLi Feng Wang 	public void testGeneralModificationDate() throws Exception {
256323ac9c5SLi Feng Wang 		//modification date will be set each time the file saved, so I don't save after set.
257323ac9c5SLi Feng Wang 		DateTime modificationDate = getCurrentDateTime();
258323ac9c5SLi Feng Wang 
259323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
260323ac9c5SLi Feng Wang 
261323ac9c5SLi Feng Wang 		xDocPro.setModificationDate(modificationDate);
262323ac9c5SLi Feng Wang 
263323ac9c5SLi Feng Wang 		DateTime result = xDocPro.getModificationDate();
264323ac9c5SLi Feng Wang 		assertTrue("ModificationDate should be the same as set", this.DateTimeEquals(modificationDate, result));
265323ac9c5SLi Feng Wang 	}
266323ac9c5SLi Feng Wang 
267323ac9c5SLi Feng Wang 	/*
268323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Last printed*/
269323ac9c5SLi Feng Wang 	@Test
testGeneralPrintBy()270323ac9c5SLi Feng Wang 	public void testGeneralPrintBy() throws Exception {
271323ac9c5SLi Feng Wang 		String printBy = "PrintBy";
272323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
273323ac9c5SLi Feng Wang 
274323ac9c5SLi Feng Wang 		xDocPro.setPrintedBy(printBy);
275323ac9c5SLi Feng Wang 
276323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
277323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
278323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
279323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
280323ac9c5SLi Feng Wang 		assertEquals("This document is printed by "+ printBy, printBy, xDocPro2.getPrintedBy());
281323ac9c5SLi Feng Wang 	}
282323ac9c5SLi Feng Wang 
283323ac9c5SLi Feng Wang 	/*
284323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Last printed*/
285323ac9c5SLi Feng Wang 	@Test
testGeneralPrintDate()286323ac9c5SLi Feng Wang 	public void testGeneralPrintDate() throws Exception {
287323ac9c5SLi Feng Wang 		DateTime printDate = getCurrentDateTime();
288323ac9c5SLi Feng Wang 
289323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
290323ac9c5SLi Feng Wang 
291323ac9c5SLi Feng Wang 		xDocPro.setPrintDate(printDate);
292323ac9c5SLi Feng Wang 
293323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
294323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
295323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
296323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
297323ac9c5SLi Feng Wang 		DateTime result = xDocPro2.getPrintDate();
298323ac9c5SLi Feng Wang 		assertTrue("PrintDate should be the same as set", this.DateTimeEquals(printDate, result));
299323ac9c5SLi Feng Wang 	}
300323ac9c5SLi Feng Wang 
301323ac9c5SLi Feng Wang 	/*
302323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Total editing time*/
303323ac9c5SLi Feng Wang 	@Test
testGeneralEditingDuration()304323ac9c5SLi Feng Wang 	public void testGeneralEditingDuration() throws Exception {
305*13ae91bfSDamjan Jovanovic 		final int editingDuration = 60;
306*13ae91bfSDamjan Jovanovic                 final int maxEditingDuration = 70;
307323ac9c5SLi Feng Wang 
308323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
309323ac9c5SLi Feng Wang 
310323ac9c5SLi Feng Wang 		xDocPro.setEditingDuration(editingDuration);
311323ac9c5SLi Feng Wang 
312323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
313323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
314323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
315323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
316*13ae91bfSDamjan Jovanovic                 // It can take a few seconds longer to save the file, increasing it above editingDuration
317*13ae91bfSDamjan Jovanovic 		assertTrue("Total editing time >= "+ editingDuration, Integer.compare(editingDuration, xDocPro2.getEditingDuration()) <= 0);
318*13ae91bfSDamjan Jovanovic                 assertTrue("Total editing time <= "+ maxEditingDuration, Integer.compare(xDocPro2.getEditingDuration(), maxEditingDuration) <= 0);
319323ac9c5SLi Feng Wang 	}
320323ac9c5SLi Feng Wang 
321323ac9c5SLi Feng Wang 	/*
322323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Revision number*/
323323ac9c5SLi Feng Wang 	@Test
testGeneralRevisionNumber()324323ac9c5SLi Feng Wang 	public void testGeneralRevisionNumber() throws Exception {
325323ac9c5SLi Feng Wang 		short revisionNumber = 10;
326323ac9c5SLi Feng Wang 
327323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
328323ac9c5SLi Feng Wang 
329323ac9c5SLi Feng Wang 		xDocPro.setEditingCycles(revisionNumber);
330323ac9c5SLi Feng Wang 
331323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
332323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
333323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
334323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
335ce8ed6d5SDamjan Jovanovic 		assertEquals("Revision number increments by 1", revisionNumber+1, xDocPro2.getEditingCycles());
336323ac9c5SLi Feng Wang 	}
337323ac9c5SLi Feng Wang 
338323ac9c5SLi Feng Wang 	/*
339323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->template*/
340323ac9c5SLi Feng Wang 	@Test
testGeneralTemplateName()341323ac9c5SLi Feng Wang 	public void testGeneralTemplateName() throws Exception {
342323ac9c5SLi Feng Wang 		String templateName = "I'm a template";
343323ac9c5SLi Feng Wang 
344323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
345323ac9c5SLi Feng Wang 
346323ac9c5SLi Feng Wang 		xDocPro.setTemplateName(templateName);
347323ac9c5SLi Feng Wang 
348323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
349323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
350323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
351323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
352323ac9c5SLi Feng Wang 		assertEquals("Template name should be "+ templateName, templateName, xDocPro2.getTemplateName());
353323ac9c5SLi Feng Wang 	}
354323ac9c5SLi Feng Wang 
355323ac9c5SLi Feng Wang 	/*
356323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->General->Reset*/
357323ac9c5SLi Feng Wang 	@Test
testGeneralReset()358323ac9c5SLi Feng Wang 	public void testGeneralReset() throws Exception {
359323ac9c5SLi Feng Wang 		String author = "ResetAuthor";
360323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
361323ac9c5SLi Feng Wang 		xDocPro.resetUserData(author);
362323ac9c5SLi Feng Wang 
363323ac9c5SLi Feng Wang 		assertEquals("Author should be "+ author, author, xDocPro.getAuthor());
364323ac9c5SLi Feng Wang 		assertEquals("Modified should be empty", "", xDocPro.getModifiedBy());
365323ac9c5SLi Feng Wang 		assertTrue("ModificationDate should be empty",
366323ac9c5SLi Feng Wang 				DateTimeEquals(new DateTime(), xDocPro.getModificationDate()));
367323ac9c5SLi Feng Wang 		assertEquals("PrintBy should be empty", "", xDocPro.getPrintedBy());
368323ac9c5SLi Feng Wang 		assertTrue("PrintDate should be empty",
369323ac9c5SLi Feng Wang 				DateTimeEquals(new DateTime(), xDocPro.getPrintDate()));
370323ac9c5SLi Feng Wang 		assertEquals("Totally editing time should be empty", 0, xDocPro.getEditingDuration());
371323ac9c5SLi Feng Wang 		assertEquals("Revision number should be empty", 1, xDocPro.getEditingCycles());
372323ac9c5SLi Feng Wang 	}
373323ac9c5SLi Feng Wang 
374323ac9c5SLi Feng Wang 	// UI entry: File->Properties->General->Apply user data
375323ac9c5SLi Feng Wang 
376323ac9c5SLi Feng Wang 	// UI entry: File->Properties->General->digital signature
377323ac9c5SLi Feng Wang 
378323ac9c5SLi Feng Wang 	//Description begin
379323ac9c5SLi Feng Wang 	/*
380323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Title*/
381323ac9c5SLi Feng Wang 	@Test
testDescriptionTitle()382323ac9c5SLi Feng Wang 	public void testDescriptionTitle() throws Exception{
383323ac9c5SLi Feng Wang 		String title = "titleForTest";
384323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
385323ac9c5SLi Feng Wang 		xDocPro.setTitle(title);
386323ac9c5SLi Feng Wang 
387323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
388323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
389323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
390323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
391323ac9c5SLi Feng Wang 		assertEquals("Title should be "+ title, title, xDocPro2.getTitle());
392323ac9c5SLi Feng Wang 	}
393323ac9c5SLi Feng Wang 
394323ac9c5SLi Feng Wang 	/*
395323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Subject*/
396323ac9c5SLi Feng Wang 	@Test
testDescriptionSubject()397323ac9c5SLi Feng Wang 	public void testDescriptionSubject() throws Exception{
398323ac9c5SLi Feng Wang 		String subject = "subjectForTest";
399323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
400323ac9c5SLi Feng Wang 		xDocPro.setSubject(subject);
401323ac9c5SLi Feng Wang 
402323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
403323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
404323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
405323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
406323ac9c5SLi Feng Wang 		assertEquals("Subject should be "+ subject, subject, xDocPro2.getSubject());
407323ac9c5SLi Feng Wang 	}
408323ac9c5SLi Feng Wang 
409323ac9c5SLi Feng Wang 	/*
410323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Keywords*/
411323ac9c5SLi Feng Wang 	@Test
testDescriptionKeywords()412323ac9c5SLi Feng Wang 	public void testDescriptionKeywords() throws Exception{
413323ac9c5SLi Feng Wang 		String[] keywords = {"keyword1", "keyword2"};
414323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
415323ac9c5SLi Feng Wang 		xDocPro.setKeywords(keywords);
416323ac9c5SLi Feng Wang 
417323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
418323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
419323ac9c5SLi Feng Wang 
420323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
421323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
422323ac9c5SLi Feng Wang 		String[] keywordsResult = xDocPro2.getKeywords();
423323ac9c5SLi Feng Wang 		assertEquals("There should be 2 Keywords", 2, keywordsResult.length);
424323ac9c5SLi Feng Wang 		for(int i=0;i<keywordsResult.length;i++)
425323ac9c5SLi Feng Wang 		{
426323ac9c5SLi Feng Wang 			String num = Integer.toString(i+1);
427323ac9c5SLi Feng Wang 			assertEquals("The keywords should be keyword"+num, "keyword"+num, keywordsResult[i]);
428323ac9c5SLi Feng Wang 		}
429323ac9c5SLi Feng Wang 	}
430323ac9c5SLi Feng Wang 
431323ac9c5SLi Feng Wang 	/*
432323ac9c5SLi Feng Wang 	 * UI entry: File->Properties->Description->Comments*/
433323ac9c5SLi Feng Wang 	@Test
testDescriptionComments()434323ac9c5SLi Feng Wang 	public void testDescriptionComments() throws Exception{
435323ac9c5SLi Feng Wang 		String comments = "This is the comment.";
436323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro = getDocumentProperties();
437323ac9c5SLi Feng Wang 		xDocPro.setDescription(comments);
438323ac9c5SLi Feng Wang 
439323ac9c5SLi Feng Wang 		app.saveDocument(m_xSDComponent, m_filePath);
440323ac9c5SLi Feng Wang 		app.closeDocument(m_xSDComponent);
441323ac9c5SLi Feng Wang 
442323ac9c5SLi Feng Wang 		m_xSDComponent = app.loadDocument(m_filePath);
443323ac9c5SLi Feng Wang 		XDocumentProperties xDocPro2 = getDocumentProperties();
444323ac9c5SLi Feng Wang 
445323ac9c5SLi Feng Wang 		assertEquals("Comments should be "+comments, comments, xDocPro2.getDescription());
446323ac9c5SLi Feng Wang 	}
447323ac9c5SLi Feng Wang 	//Description end
448323ac9c5SLi Feng Wang 
449323ac9c5SLi Feng Wang 	//custom properties begin
450323ac9c5SLi Feng Wang 	//UI entry: File->Properties->Custom properties
addCustomPro(String propertyName, Object value)451323ac9c5SLi Feng Wang 		private void addCustomPro(String propertyName, Object value) throws PropertyExistException, IllegalTypeException, IllegalArgumentException{
452323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
453323ac9c5SLi Feng Wang 			XPropertyContainer proContainer = xDocPro.getUserDefinedProperties();
454323ac9c5SLi Feng Wang 			proContainer.addProperty(propertyName, PropertyAttribute.REMOVEABLE, value);
455323ac9c5SLi Feng Wang 		}
456323ac9c5SLi Feng Wang 
getCustomPro(String propertyName)457323ac9c5SLi Feng Wang 		private Object getCustomPro(String propertyName) throws UnknownPropertyException, WrappedTargetException{
458323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
459323ac9c5SLi Feng Wang 			XPropertyContainer proContainer = xDocPro.getUserDefinedProperties();
460323ac9c5SLi Feng Wang 			XPropertySet xProSet = (XPropertySet)UnoRuntime.queryInterface(
461323ac9c5SLi Feng Wang 					XPropertySet.class, proContainer);
462323ac9c5SLi Feng Wang 
463323ac9c5SLi Feng Wang 			return xProSet.getPropertyValue(propertyName);
464323ac9c5SLi Feng Wang 		}
465323ac9c5SLi Feng Wang 
466323ac9c5SLi Feng Wang 		@Test
testCustomAddPro_Text()467323ac9c5SLi Feng Wang 		public void testCustomAddPro_Text() throws Exception{
468323ac9c5SLi Feng Wang 			String addedProName = "TextPro";
469323ac9c5SLi Feng Wang 			String addedProDefaultValue = "testUser";
470323ac9c5SLi Feng Wang 
471323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
472323ac9c5SLi Feng Wang 
473323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
474323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
475323ac9c5SLi Feng Wang 
476323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
477323ac9c5SLi Feng Wang 
478323ac9c5SLi Feng Wang 			String result = (String)getCustomPro(addedProName);
479323ac9c5SLi Feng Wang 
480323ac9c5SLi Feng Wang 			assertTrue("added Text property \""+addedProName+"\" should exist", result != null);
481323ac9c5SLi Feng Wang 			assertEquals("value of added property should be "+addedProDefaultValue,
482323ac9c5SLi Feng Wang 					addedProDefaultValue, result);
483323ac9c5SLi Feng Wang 		}
484323ac9c5SLi Feng Wang 
485323ac9c5SLi Feng Wang 		@Test
testCustomAddPro_DateTime()486323ac9c5SLi Feng Wang 		public void testCustomAddPro_DateTime() throws Exception{
487323ac9c5SLi Feng Wang 			String addedProName = "DateTimePro";
488323ac9c5SLi Feng Wang 			DateTime addedProDefaultValue = getCurrentDateTime();
489323ac9c5SLi Feng Wang 
490323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
491323ac9c5SLi Feng Wang 
492323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
493323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
494323ac9c5SLi Feng Wang 
495323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
496323ac9c5SLi Feng Wang 
497323ac9c5SLi Feng Wang 			DateTime result = (DateTime)getCustomPro(addedProName);
498323ac9c5SLi Feng Wang 			assertTrue("added DateTime property \""+addedProName+"\" should exist", result != null);
499323ac9c5SLi Feng Wang 			assertTrue("value of added property should be the same as set",
500323ac9c5SLi Feng Wang 					this.DateTimeEquals(result, addedProDefaultValue));
501323ac9c5SLi Feng Wang 		}
502323ac9c5SLi Feng Wang 
503323ac9c5SLi Feng Wang 		@Test
testCustomAddPro_Date()504323ac9c5SLi Feng Wang 		public void testCustomAddPro_Date() throws Exception{
505323ac9c5SLi Feng Wang 			String addedProName = "DatePro";
506323ac9c5SLi Feng Wang 			Date addedProDefaultValue = getCurrentDate();
507323ac9c5SLi Feng Wang 
508323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
509323ac9c5SLi Feng Wang 
510323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
511323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
512323ac9c5SLi Feng Wang 
513323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
514323ac9c5SLi Feng Wang 
515323ac9c5SLi Feng Wang 			Date result = (Date)getCustomPro(addedProName);
516323ac9c5SLi Feng Wang 			assertTrue("added Date property \""+addedProName+"\" should exist", result != null);
517323ac9c5SLi Feng Wang 			assertTrue("value of added property should be the same as set",
518323ac9c5SLi Feng Wang 					this.DateEquals(result, addedProDefaultValue));
519323ac9c5SLi Feng Wang 		}
520323ac9c5SLi Feng Wang 
521323ac9c5SLi Feng Wang 		@Test
testCustomAddPro_Duration()522323ac9c5SLi Feng Wang 		public void testCustomAddPro_Duration() throws Exception{
523323ac9c5SLi Feng Wang 			String addedProName = "DurationPro";
524323ac9c5SLi Feng Wang 			Duration addedProDefaultValue = new Duration();
525323ac9c5SLi Feng Wang 			addedProDefaultValue.Days = 1;
526323ac9c5SLi Feng Wang 
527323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
528323ac9c5SLi Feng Wang 
529323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
530323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
531323ac9c5SLi Feng Wang 
532323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
533323ac9c5SLi Feng Wang 
534323ac9c5SLi Feng Wang 			Duration result = (Duration)getCustomPro(addedProName);
535323ac9c5SLi Feng Wang 			assertTrue("added Date property \""+addedProName+"\" should exist", result != null);
536323ac9c5SLi Feng Wang 			assertTrue("value of added property should the same as set", DurationEquals(addedProDefaultValue, result));
537323ac9c5SLi Feng Wang 		}
538323ac9c5SLi Feng Wang 
539323ac9c5SLi Feng Wang 		@Test
testCustomAddPro_Number()540323ac9c5SLi Feng Wang 		public void testCustomAddPro_Number() throws Exception{
541323ac9c5SLi Feng Wang 			String addedProName = "NumberPro";
542323ac9c5SLi Feng Wang 			Double addedProDefaultValue = (double)10;
543323ac9c5SLi Feng Wang 
544323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
545323ac9c5SLi Feng Wang 
546323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
547323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
548323ac9c5SLi Feng Wang 
549323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
550323ac9c5SLi Feng Wang 
551323ac9c5SLi Feng Wang 			Object oResult = getCustomPro(addedProName);
552323ac9c5SLi Feng Wang 
553323ac9c5SLi Feng Wang 			Double result = (Double)oResult;
554323ac9c5SLi Feng Wang 			assertTrue("added Number property \""+addedProName+"\" should exist", oResult != null);
555323ac9c5SLi Feng Wang 			assertEquals("value of added property should be "+Double.toString(addedProDefaultValue),
556323ac9c5SLi Feng Wang 					addedProDefaultValue, result);
557323ac9c5SLi Feng Wang 		}
558323ac9c5SLi Feng Wang 
559323ac9c5SLi Feng Wang 		@Test
testCustomAddPro_Boolean()560323ac9c5SLi Feng Wang 		public void testCustomAddPro_Boolean() throws Exception{
561323ac9c5SLi Feng Wang 			String addedProName = "BooleanPro";
562323ac9c5SLi Feng Wang 			Boolean addedProDefaultValue = true;
563323ac9c5SLi Feng Wang 
564323ac9c5SLi Feng Wang 			addCustomPro(addedProName, addedProDefaultValue);
565323ac9c5SLi Feng Wang 
566323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
567323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
568323ac9c5SLi Feng Wang 
569323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
570323ac9c5SLi Feng Wang 
571323ac9c5SLi Feng Wang 			Object oResult = getCustomPro(addedProName);
572323ac9c5SLi Feng Wang 
573323ac9c5SLi Feng Wang 			boolean result = (Boolean)oResult;
574323ac9c5SLi Feng Wang 			assertTrue("added Number property \""+addedProName+"\" should exist", oResult != null);
575323ac9c5SLi Feng Wang 			assertEquals("value of added property should be "+Boolean.toString(addedProDefaultValue),
576323ac9c5SLi Feng Wang 					addedProDefaultValue, result);
577323ac9c5SLi Feng Wang 		}
578323ac9c5SLi Feng Wang 
579323ac9c5SLi Feng Wang 		@Test
testCustomRemovePro()580de51bb97SLi Feng Wang 		public void testCustomRemovePro() throws Exception{
581de51bb97SLi Feng Wang 			addCustomPro("testPro", "value");
582323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
583323ac9c5SLi Feng Wang 			XPropertyContainer proContainer = xDocPro.getUserDefinedProperties();
584323ac9c5SLi Feng Wang 			XPropertySet xProSet = (XPropertySet)UnoRuntime.queryInterface(
585323ac9c5SLi Feng Wang 					XPropertySet.class, proContainer);
586323ac9c5SLi Feng Wang 			XPropertySetInfo xproSetInfo = xProSet.getPropertySetInfo();
587323ac9c5SLi Feng Wang 			Property[] pros = xproSetInfo.getProperties();
588323ac9c5SLi Feng Wang 
589323ac9c5SLi Feng Wang 			for(int i=0; i< pros.length;i++)
590323ac9c5SLi Feng Wang 			{
591323ac9c5SLi Feng Wang 				proContainer.removeProperty(pros[i].Name);
592323ac9c5SLi Feng Wang 			}
593323ac9c5SLi Feng Wang 
594323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
595323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
596323ac9c5SLi Feng Wang 
597323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
598323ac9c5SLi Feng Wang 
599323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
600323ac9c5SLi Feng Wang 			XPropertyContainer proContainer2 = xDocPro2.getUserDefinedProperties();
601323ac9c5SLi Feng Wang 			XPropertySet xProSet2 = (XPropertySet)UnoRuntime.queryInterface(
602323ac9c5SLi Feng Wang 					XPropertySet.class, proContainer2);
603323ac9c5SLi Feng Wang 			XPropertySetInfo xproSetInfo2 = xProSet2.getPropertySetInfo();
604323ac9c5SLi Feng Wang 			Property[] pros2 = xproSetInfo2.getProperties();
605323ac9c5SLi Feng Wang 
606323ac9c5SLi Feng Wang 			assertEquals("number of custom property should be zero ",
607323ac9c5SLi Feng Wang 					0, pros2.length);
608323ac9c5SLi Feng Wang 		}
609323ac9c5SLi Feng Wang 	//custom properties end
610323ac9c5SLi Feng Wang 
611323ac9c5SLi Feng Wang 		//Internet begin
setAutoLoad(String URL, int secs)612323ac9c5SLi Feng Wang 		private void setAutoLoad(String URL, int secs) throws IllegalArgumentException
613323ac9c5SLi Feng Wang 		{
614323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro = getDocumentProperties();
615323ac9c5SLi Feng Wang 			xDocPro.setAutoloadURL(URL);
616323ac9c5SLi Feng Wang 			xDocPro.setAutoloadSecs(secs);
617323ac9c5SLi Feng Wang 			xDocPro.setDefaultTarget("_blank");
618323ac9c5SLi Feng Wang 		}
619323ac9c5SLi Feng Wang 
620323ac9c5SLi Feng Wang 		@Test
testNoRefresh()621323ac9c5SLi Feng Wang 		public void testNoRefresh() throws Exception{
622323ac9c5SLi Feng Wang 			String autoLoadURL = "";
623323ac9c5SLi Feng Wang 			int autoLoadSecs = 0;
624323ac9c5SLi Feng Wang 			setAutoLoad(autoLoadURL, autoLoadSecs);
625323ac9c5SLi Feng Wang 
626323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
627323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
628323ac9c5SLi Feng Wang 
629323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
630323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
631323ac9c5SLi Feng Wang 
632323ac9c5SLi Feng Wang 			assertEquals("AutoLoadURL should be empty", autoLoadURL, xDocPro2.getAutoloadURL());
633323ac9c5SLi Feng Wang 			assertEquals("AutoLoadSecs should be 0", autoLoadSecs, xDocPro2.getAutoloadSecs());
634323ac9c5SLi Feng Wang 		}
635323ac9c5SLi Feng Wang 
636323ac9c5SLi Feng Wang 		@Test
testRefreshEvery60Secs()637323ac9c5SLi Feng Wang 		public void testRefreshEvery60Secs() throws Exception{
638323ac9c5SLi Feng Wang 			String autoLoadURL = "";
639323ac9c5SLi Feng Wang 			int autoLoadSecs = 60;
640323ac9c5SLi Feng Wang 			setAutoLoad(autoLoadURL, autoLoadSecs);
641323ac9c5SLi Feng Wang 
642323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
643323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
644323ac9c5SLi Feng Wang 
645323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
646323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
647323ac9c5SLi Feng Wang 
648323ac9c5SLi Feng Wang 			assertEquals("AutoLoadURL should be empty", autoLoadURL, xDocPro2.getAutoloadURL());
649323ac9c5SLi Feng Wang 			assertEquals("AutoLoadSecs should be "+Integer.toString(autoLoadSecs), autoLoadSecs, xDocPro2.getAutoloadSecs());
650323ac9c5SLi Feng Wang 		}
651323ac9c5SLi Feng Wang 
652323ac9c5SLi Feng Wang 		@Test
testRedirect()653323ac9c5SLi Feng Wang 		public void testRedirect() throws Exception{
654323ac9c5SLi Feng Wang 			String autoLoadURL = "http://www.openoffice.com/";
655323ac9c5SLi Feng Wang 			int autoLoadSecs = 5;
656323ac9c5SLi Feng Wang 			setAutoLoad(autoLoadURL, autoLoadSecs);
657323ac9c5SLi Feng Wang 
658323ac9c5SLi Feng Wang 			app.saveDocument(m_xSDComponent, m_filePath);
659323ac9c5SLi Feng Wang 			app.closeDocument(m_xSDComponent);
660323ac9c5SLi Feng Wang 
661323ac9c5SLi Feng Wang 			m_xSDComponent = app.loadDocument(m_filePath);
662323ac9c5SLi Feng Wang 			XDocumentProperties xDocPro2 = getDocumentProperties();
663323ac9c5SLi Feng Wang 
664323ac9c5SLi Feng Wang 			assertEquals("AutoLoadURL should be empty", autoLoadURL, xDocPro2.getAutoloadURL());
665323ac9c5SLi Feng Wang 			assertEquals("AutoLoadSecs should be "+Integer.toString(autoLoadSecs), autoLoadSecs, xDocPro2.getAutoloadSecs());
666323ac9c5SLi Feng Wang 		}
667323ac9c5SLi Feng Wang 		//Internet end
668323ac9c5SLi Feng Wang }
669