KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > tasklist > usertasks > model > UserTaskListTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.tasklist.usertasks.model;
21
22 import java.io.ByteArrayInputStream JavaDoc;
23 import java.io.ByteArrayOutputStream JavaDoc;
24 import java.io.File JavaDoc;
25 import java.io.InputStream JavaDoc;
26 import java.io.OutputStreamWriter JavaDoc;
27 import java.io.Writer JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.ListIterator JavaDoc;
30
31 import junit.framework.Test;
32
33 import org.netbeans.junit.NbTestCase;
34 import org.netbeans.junit.NbTestSuite;
35 import org.netbeans.modules.tasklist.usertasks.translators.ICalExportFormat;
36 import org.netbeans.modules.tasklist.usertasks.translators.ICalImportFormat;
37 import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
38 import org.openide.filesystems.FileObject;
39 import org.openide.filesystems.LocalFileSystem;
40 import org.openide.filesystems.Repository;
41 import org.openide.loaders.DataObject;
42
43 /**
44  * Test the usertask list functionality
45  *
46  * @author Tor Norbye
47  */

48 public class UserTaskListTest extends NbTestCase {
49
50     public UserTaskListTest (String JavaDoc name) {
51         super (name);
52     }
53     
54     public static void main (String JavaDoc args []) throws Exception JavaDoc {
55         openList("C:\\Dokumente und Einstellungen\\tim\\Desktop\\drmtasks.ics");
56         //junit.textui.TestRunner.run (UserTaskListTest.class);
57
}
58     
59     public static Test suite () {
60         return new NbTestSuite(UserTaskListTest.class);
61     }
62
63     /**
64      * Save to/restore from .ics.
65      *
66      * @param utl this task list will be saved
67      * @return restored from .ics task list
68      */

69     private UserTaskList saveAndLoad(UserTaskList utl) throws Exception JavaDoc {
70         ByteArrayOutputStream JavaDoc out = new ByteArrayOutputStream JavaDoc();
71         Writer JavaDoc w = new OutputStreamWriter JavaDoc(out, "UTF-8");
72         ICalExportFormat exp = new ICalExportFormat();
73         exp.writeList(utl, w, true);
74         byte[] bytes = out.toByteArray();
75         String JavaDoc s = new String JavaDoc(bytes);
76         ByteArrayInputStream JavaDoc in = new ByteArrayInputStream JavaDoc(bytes);
77         ICalImportFormat imp = new ICalImportFormat();
78
79         utl = new UserTaskList();
80         imp.read(utl, in);
81         return utl;
82     }
83     
84     /**
85      * Task list should preserve order of tasks.
86      */

87     public void testPreserveOrder() throws Exception JavaDoc {
88         UserTaskList utl = new UserTaskList();
89         UserTask ut = new UserTask("1", utl);
90         UserTask ut2 = new UserTask("2", utl);
91         UserTask ut3 = new UserTask("3", utl);
92         utl.getSubtasks().add(ut);
93         utl.getSubtasks().add(ut2);
94         utl.getSubtasks().add(ut3);
95         
96         utl = saveAndLoad(utl);
97         
98         assertEquals("1", utl.getSubtasks().getUserTask(0).getSummary());
99         assertEquals("2", utl.getSubtasks().getUserTask(1).getSummary());
100         assertEquals("3", utl.getSubtasks().getUserTask(2).getSummary());
101         
102         utl.getSubtasks().getUserTask(1).moveUp();
103         
104         utl = saveAndLoad(utl);
105         
106         assertEquals("2", utl.getSubtasks().getUserTask(0).getSummary());
107         assertEquals("1", utl.getSubtasks().getUserTask(1).getSummary());
108         assertEquals("3", utl.getSubtasks().getUserTask(2).getSummary());
109     }
110     
111     /**
112      * Changing one task should not trigger the "last-modified" value of
113      * other tasks in a list.
114      */

115     public void testLastModified() {
116         // utl
117
// |-ut
118
// |-ut3
119
// |-ut2
120
UserTaskList utl = new UserTaskList();
121         UserTask ut = new UserTask("test", utl);
122         UserTask ut2 = new UserTask("test2", utl);
123         UserTask ut3 = new UserTask("test2", utl);
124         utl.getSubtasks().add(ut);
125         utl.getSubtasks().add(ut2);
126         ut.getSubtasks().add(ut3);
127         
128         ut2.setLastEditedDate(15);
129         
130         ut.setDone(true);
131         assertEquals(15, ut2.getLastEditedDate());
132         
133         ut.setValuesComputed(true);
134         ut3.setDone(true);
135         assertEquals(15, ut2.getLastEditedDate());
136     }
137     
138     /**
139      * ValuesComputed should be saved properly.
140      */

141     public void testValuesComputed() throws Exception JavaDoc {
142         // utl
143
// |-ut
144
// |-ut2
145
// |-ut3
146
UserTaskList utl = new UserTaskList();
147         UserTask ut = new UserTask("test", utl);
148         UserTask ut2 = new UserTask("test2", utl);
149         UserTask ut3 = new UserTask("test2", utl);
150         utl.getSubtasks().add(ut);
151         ut.getSubtasks().add(ut2);
152         ut2.getSubtasks().add(ut3);
153         ut.setValuesComputed(true);
154         
155         utl = saveAndLoad(utl);
156         ut = utl.getSubtasks().get(0);
157         ut2 = ut.getSubtasks().get(0);
158         ut3 = ut2.getSubtasks().get(0);
159         
160         assertTrue(ut.isValuesComputed());
161         assertFalse(ut2.isValuesComputed());
162         assertFalse(ut3.isValuesComputed());
163     }
164     
165     /**
166      * Opening a task list should not trigger the last modified date.
167      */

168     public void testLastModified2() throws Exception JavaDoc {
169         UTUtils.LOGGER.fine("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
170         // utl
171
// |-ut
172
// |-ut2
173
// |-ut3
174
UserTaskList utl = new UserTaskList();
175         UserTask ut = new UserTask("test", utl);
176         UserTask ut2 = new UserTask("test2", utl);
177         UserTask ut3 = new UserTask("test2", utl);
178         utl.getSubtasks().add(ut);
179         ut.getSubtasks().add(ut2);
180         ut.getSubtasks().add(ut3);
181         ut3.setDone(true);
182         ut.setValuesComputed(true);
183         
184         ut.setLastEditedDate(15000);
185         ut2.setLastEditedDate(15000);
186         ut3.setLastEditedDate(15000);
187         
188         utl = saveAndLoad(utl);
189         ut = utl.getSubtasks().get(0);
190         ut2 = ut.getSubtasks().get(0);
191         ut3 = ut.getSubtasks().get(1);
192         
193         assertEquals(15000, ut.getLastEditedDate());
194         assertEquals(15000, ut2.getLastEditedDate());
195         assertEquals(15000, ut3.getLastEditedDate());
196     }
197     
198     /**
199      * Stores and loads working periods.
200      */

201     public void testWorkPeriods() throws Exception JavaDoc {
202         // utl
203
// |-ut
204
UserTaskList utl = new UserTaskList();
205         UserTask ut = new UserTask("test", utl);
206         utl.getSubtasks().add(ut);
207         
208         long time = System.currentTimeMillis();
209         UserTask.WorkPeriod wp = new UserTask.WorkPeriod(time, 2);
210         ut.getWorkPeriods().add(wp);
211         
212         utl = saveAndLoad(utl);
213         ut = utl.getSubtasks().get(0);
214         wp = ut.getWorkPeriods().get(0);
215         
216         long delta = Math.abs(wp.getStart() - time);
217         assertTrue(Long.toString(delta), delta < 1000);
218         assertEquals(wp.getDuration(), 2);
219     }
220     
221     /**
222      * Deleting completed tasks.
223      */

224     public void testPurge() {
225         UserTaskList utl = new UserTaskList();
226         UserTask ut = new UserTask("test", utl);
227         utl.getSubtasks().add(ut);
228         ut.setDone(true);
229         utl.getSubtasks().purgeCompletedItems();
230         assertTrue(utl.getSubtasks().size() == 0);
231     }
232     
233     public void testUserTaskList() throws Exception JavaDoc {
234         UserTaskList list = (UserTaskList)openList("tasklist.ics"); // NOI18N
235
List JavaDoc subtasks = list.getSubtasks();
236         assertTrue("Not all tasks in the list found: found " + subtasks.size() + // NOI18N
237
" elements", // NOI18N
238
subtasks.size() == 1);
239         ListIterator JavaDoc it = subtasks.listIterator();
240         while (it.hasNext()) {
241             UserTask task = (UserTask)it.next();
242             assertTrue("Wrong description: " + task.getSummary(), // NOI18N
243
task.getSummary().equals("This is a test task")); // NOI18N
244
assertTrue("Wrong isDone", // NOI18N
245
!task.isDone());
246         }
247     }
248
249
250     /**
251      * Test the import/export feature
252      */

253     public void testSimpleICalImportExport() throws Exception JavaDoc {
254         String JavaDoc contents = "BEGIN:VCALENDAR\r\nPRODID:-//NetBeans tasklist//NONSGML 1.0//EN\r\nVERSION:2.0\r\n\r\nBEGIN:VTODO\r\nUID:nb1031618664570.1@proto/192.129.100.100\r\nCREATED:20020910T004424Z\r\nSUMMARY:This is a test task\r\nPERCENT-COMPLETE:0\r\nEND:VTODO\r\n\r\nEND:VCALENDAR\r\n"; // NOI18N
255
ByteArrayInputStream JavaDoc reader = new ByteArrayInputStream JavaDoc(contents.getBytes());
256
257         ICalImportFormat io = new ICalImportFormat();
258         UserTaskList list = new UserTaskList();
259
260         try {
261             io.read(list, reader);
262         } catch (Exception JavaDoc e) {
263             throw e;
264         }
265
266         // Check that the list we read in is indeed correct
267
List JavaDoc subtasks = list.getSubtasks();
268         assertTrue("Not all tasks in the list found: found " + subtasks.size() + // NOI18N
269
" elements", // NOI18N
270
subtasks.size() == 1);
271         ListIterator JavaDoc it = subtasks.listIterator();
272         while (it.hasNext()) {
273             UserTask task = (UserTask)it.next();
274             assertTrue("Wrong description: " + task.getSummary(), // NOI18N
275
task.getSummary().equals("This is a test task")); // NOI18N
276
assertTrue("Wrong isDone", // NOI18N
277
!task.isDone());
278             assertEquals("Wrong Percent Complete", 0, task.getPercentComplete()); // NOI18N
279
}
280
281         // Write the list back out
282
ByteArrayOutputStream JavaDoc out = new ByteArrayOutputStream JavaDoc(2048);
283         Writer JavaDoc w = new OutputStreamWriter JavaDoc(out, "UTF-8");
284
285         ICalExportFormat ef = new ICalExportFormat();
286         try {
287             ef.writeList(list, w, true);
288         } catch (Exception JavaDoc e) {
289             throw e;
290         }
291         
292         String JavaDoc result =new String JavaDoc(out.toByteArray(), "utf8"); // NOI18N XXX we do not know the encoding
293

294         /* Uncomment to log the two strings if you want to diff them etc.
295         try {
296             FileWriter w = new FileWriter("contents.txt");
297             w.write(contents);
298             w.close();
299         } catch (Exception e) {
300             fail("Exception");
301         }
302         
303         try {
304             FileWriter w = new FileWriter("result.txt");
305             w.write(result);
306             w.close();
307         } catch (Exception e) {
308             fail("Exception");
309         }
310         */

311     }
312
313     // TODO: xCal test - run output out and back in through xCal, then
314
// do a second check
315

316     private static UserTaskList openList(String JavaDoc name) throws Exception JavaDoc {
317         File JavaDoc data = new File JavaDoc(UserTaskListTest.class.getResource("data").getFile()); // NOI18N
318
LocalFileSystem lfs = new LocalFileSystem();
319         lfs.setRootDirectory(data);
320         Repository.getDefault().addFileSystem(lfs);
321
322         FileObject fo = null;
323         try {
324             DataObject dao = DataObject.find(lfs.findResource(name));
325             if (dao == null) {
326                 fail(name + " not found"); // NOI18N
327
}
328             fo = dao.getPrimaryFile();
329         } catch (Exception JavaDoc e) {
330             e.printStackTrace();
331             throw e;
332         }
333         InputStream JavaDoc is = fo.getInputStream();
334         UserTaskList list = new UserTaskList();
335         ICalImportFormat.read(list, fo.getInputStream());
336         is.close();
337         return list;
338     }
339 }
340
Popular Tags