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