KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > thoughtworks > xstream > converters > basic > DateConverterTest


1 package com.thoughtworks.xstream.converters.basic;
2
3 import com.thoughtworks.xstream.converters.ConversionException;
4 import junit.framework.TestCase;
5
6 import java.util.ArrayList JavaDoc;
7 import java.util.Collections JavaDoc;
8 import java.util.Date JavaDoc;
9 import java.util.List JavaDoc;
10
11 public class DateConverterTest extends TestCase {
12
13     private DateConverter converter;
14
15     protected void setUp() throws Exception JavaDoc {
16         super.setUp();
17         converter = new DateConverter();
18     }
19
20     public void testRetainsDetailDownToMillisecondLevel() {
21         // setup
22
Date JavaDoc in = new Date JavaDoc();
23
24         // execute
25
String JavaDoc text = converter.toString(in);
26         Date JavaDoc out = (Date JavaDoc) converter.fromString(text);
27
28         // verify
29
assertEquals(in, out);
30         assertEquals(in.toString(), out.toString());
31         assertEquals(in.getTime(), out.getTime());
32     }
33
34     public void testUnmarshallsOldXStreamDatesThatLackMillisecond() {
35         // setup
36
String JavaDoc oldStyleText = "2004-02-22 15:16:04PM";
37
38         // execute
39
Date JavaDoc out = (Date JavaDoc) converter.fromString(oldStyleText);
40
41         // verify
42
assertEquals("2004-02-22 15:16:04.0 PM", converter.toString(out));
43     }
44
45     public void testIsThreadSafe() throws InterruptedException JavaDoc {
46         final List JavaDoc results = Collections.synchronizedList(new ArrayList JavaDoc());
47         final DateConverter converter = new DateConverter();
48         final Object JavaDoc monitor = new Object JavaDoc();
49         final int numberOfCallsPerThread = 20;
50         final int numberOfThreads = 20;
51
52         // spawn some concurrent threads, that hammer the converter
53
Runnable JavaDoc runnable = new Runnable JavaDoc() {
54             public void run() {
55                 for (int i = 0; i < numberOfCallsPerThread; i++) {
56                     try {
57                         converter.fromString("2004-02-22 15:16:04.0 PM");
58                         results.add("PASS");
59                     } catch (ConversionException e) {
60                         results.add("FAIL");
61                     } finally {
62                         synchronized (monitor) {
63                             monitor.notifyAll();
64                         }
65                     }
66                 }
67             }
68         };
69         for (int i = 0; i < numberOfThreads; i++) {
70             new Thread JavaDoc(runnable).start();
71         }
72
73         // wait for all results
74
while (results.size() < numberOfThreads * numberOfCallsPerThread) {
75             synchronized (monitor) {
76                 monitor.wait();
77             }
78         }
79
80         assertTrue("Nothing suceeded", results.contains("PASS"));
81         assertFalse("At least one attempt failed", results.contains("FAIL"));
82     }
83 }
84
Popular Tags