1 19 20 package org.netbeans.modules.tasklist.usertasks.model; 21 22 import java.io.ByteArrayInputStream ; 23 import java.io.ByteArrayOutputStream ; 24 import java.io.File ; 25 import java.io.InputStream ; 26 import java.io.OutputStreamWriter ; 27 import java.io.Writer ; 28 import java.util.List ; 29 import java.util.ListIterator ; 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 48 public class UserTaskListTest extends NbTestCase { 49 50 public UserTaskListTest (String name) { 51 super (name); 52 } 53 54 public static void main (String args []) throws Exception { 55 openList("C:\\Dokumente und Einstellungen\\tim\\Desktop\\drmtasks.ics"); 56 } 58 59 public static Test suite () { 60 return new NbTestSuite(UserTaskListTest.class); 61 } 62 63 69 private UserTaskList saveAndLoad(UserTaskList utl) throws Exception { 70 ByteArrayOutputStream out = new ByteArrayOutputStream (); 71 Writer w = new OutputStreamWriter (out, "UTF-8"); 72 ICalExportFormat exp = new ICalExportFormat(); 73 exp.writeList(utl, w, true); 74 byte[] bytes = out.toByteArray(); 75 String s = new String (bytes); 76 ByteArrayInputStream in = new ByteArrayInputStream (bytes); 77 ICalImportFormat imp = new ICalImportFormat(); 78 79 utl = new UserTaskList(); 80 imp.read(utl, in); 81 return utl; 82 } 83 84 87 public void testPreserveOrder() throws Exception { 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 115 public void testLastModified() { 116 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 141 public void testValuesComputed() throws Exception { 142 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 168 public void testLastModified2() throws Exception { 169 UTUtils.LOGGER.fine("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="); 170 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 201 public void testWorkPeriods() throws Exception { 202 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 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 { 234 UserTaskList list = (UserTaskList)openList("tasklist.ics"); List subtasks = list.getSubtasks(); 236 assertTrue("Not all tasks in the list found: found " + subtasks.size() + " elements", subtasks.size() == 1); 239 ListIterator it = subtasks.listIterator(); 240 while (it.hasNext()) { 241 UserTask task = (UserTask)it.next(); 242 assertTrue("Wrong description: " + task.getSummary(), task.getSummary().equals("This is a test task")); assertTrue("Wrong isDone", !task.isDone()); 246 } 247 } 248 249 250 253 public void testSimpleICalImportExport() throws Exception { 254 String 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"; ByteArrayInputStream reader = new ByteArrayInputStream (contents.getBytes()); 256 257 ICalImportFormat io = new ICalImportFormat(); 258 UserTaskList list = new UserTaskList(); 259 260 try { 261 io.read(list, reader); 262 } catch (Exception e) { 263 throw e; 264 } 265 266 List subtasks = list.getSubtasks(); 268 assertTrue("Not all tasks in the list found: found " + subtasks.size() + " elements", subtasks.size() == 1); 271 ListIterator it = subtasks.listIterator(); 272 while (it.hasNext()) { 273 UserTask task = (UserTask)it.next(); 274 assertTrue("Wrong description: " + task.getSummary(), task.getSummary().equals("This is a test task")); assertTrue("Wrong isDone", !task.isDone()); 278 assertEquals("Wrong Percent Complete", 0, task.getPercentComplete()); } 280 281 ByteArrayOutputStream out = new ByteArrayOutputStream (2048); 283 Writer w = new OutputStreamWriter (out, "UTF-8"); 284 285 ICalExportFormat ef = new ICalExportFormat(); 286 try { 287 ef.writeList(list, w, true); 288 } catch (Exception e) { 289 throw e; 290 } 291 292 String result =new String (out.toByteArray(), "utf8"); 294 311 } 312 313 316 private static UserTaskList openList(String name) throws Exception { 317 File data = new File (UserTaskListTest.class.getResource("data").getFile()); 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"); } 328 fo = dao.getPrimaryFile(); 329 } catch (Exception e) { 330 e.printStackTrace(); 331 throw e; 332 } 333 InputStream 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 |