KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > roller > presentation > atomapi > AtomCollectionTest


1 /*
2  * Copyright 2005 David M Johnson (For RSS and Atom In Action)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.roller.presentation.atomapi;
17
18 import java.text.SimpleDateFormat JavaDoc;
19 import java.util.Calendar JavaDoc;
20 import java.util.Date JavaDoc;
21
22 import junit.framework.Test;
23 import junit.framework.TestCase;
24 import junit.framework.TestSuite;
25
26 import org.jdom.Document;
27
28 /**
29  * @author Dave Johnson
30  */

31 public class AtomCollectionTest extends TestCase {
32     
33     private static SimpleDateFormat JavaDoc df =
34         new SimpleDateFormat JavaDoc( "yyyy-MM-dd'T'HH:mm:ssZ" );
35    
36     /** Creates a new instance of AtomCollectionTest */
37     public AtomCollectionTest() {
38     }
39
40     public void testRangeParsing() throws Exception JavaDoc {
41         Date JavaDoc end = new Date JavaDoc(); // now
42
Calendar JavaDoc cal = Calendar.getInstance();
43         cal.setTime(end);
44         cal.add(Calendar.DATE, -1);
45         Date JavaDoc start = cal.getTime(); // one day ago
46
String JavaDoc startString = df.format(start);
47         String JavaDoc endString = df.format(end);
48         
49         String JavaDoc r1 = "Range: updated="+startString+"/"+endString;
50         AtomCollection.Range range = AtomCollection.parseRange(r1);
51         assertNotNull(range.start);
52         assertNotNull(range.end);
53         
54         String JavaDoc r2 = "Range: updated="+startString+"/";
55         range = AtomCollection.parseRange(r2);
56         assertNotNull(range.start);
57         assertNull(range.end);
58         
59         String JavaDoc r3 = "Range: updated="+"/"+endString;
60         range = AtomCollection.parseRange(r3);
61         assertNull(range.start);
62         assertNotNull(range.end);
63     }
64     
65     public void testCollectionBean() throws Exception JavaDoc {
66         
67         // create a collection with a member
68
Date JavaDoc date1 = new Date JavaDoc();
69         AtomCollection collection = new AtomCollection();
70         AtomCollection.Member member1 = new AtomCollection.Member();
71         member1.setTitle("title1");
72         member1.setHref("http://example.com/item1");
73         member1.setUpdated(date1);
74         collection.addMember(member1);
75         
76         // add another member
77
Date JavaDoc date2 = new Date JavaDoc();
78         AtomCollection.Member member2 = new AtomCollection.Member();
79         member2.setTitle("title2");
80         member2.setHref("http://example.com/item2");
81         member2.setUpdated(date2);
82         collection.addMember(member2);
83         
84         // serialize to XML
85
Document doc = AtomCollection.collectionToDocument(collection);
86         assertEquals("collection", doc.getRootElement().getName());
87         assertEquals(2, doc.getRootElement().getContent().size());
88         
89         // deserialize from XML and assert we've got the same stuff
90
AtomCollection col2 = AtomCollection.documentToCollection(doc);
91         assertEquals(2, col2.getMembers().size());
92         
93         AtomCollection.Member m1 = (AtomCollection.Member)col2.getMembers().get(0);
94         assertEquals("title1", m1.getTitle());
95         assertEquals("http://example.com/item1", m1.getHref());
96         assertCloseEnough(date1, m1.getUpdated());
97         
98         AtomCollection.Member m2 = (AtomCollection.Member)col2.getMembers().get(1);
99         assertEquals("title2", m2.getTitle());
100         assertEquals("http://example.com/item2", m2.getHref());
101         assertCloseEnough(date2, m2.getUpdated());
102     }
103     
104     public void testServiceBean() {
105         
106         AtomService.Collection collection = new AtomService.Collection();
107         collection.setTitle("All blog entries");
108         collection.setContents("entries");
109         collection.setHref("http://example.com/collection1");
110         
111         AtomService.Workspace workspace = new AtomService.Workspace();
112         workspace.setTitle("My blog");
113         workspace.addCollection(collection);
114         
115         AtomService service = new AtomService();
116         service.addWorkspace(workspace);
117
118         // serialize to XML
119
Document doc = AtomService.serviceToDocument(service);
120         assertEquals("service", doc.getRootElement().getName());
121         assertEquals(1, doc.getRootElement().getContent().size());
122   
123         // deserialize from XML and assert we've got the same stuff
124
AtomService service2 = AtomService.documentToService(doc);
125         
126         AtomService.Workspace workspace2 =
127             (AtomService.Workspace)service2.getWorkspaces().get(0);
128         assertEquals("My blog", workspace2.getTitle());
129         
130         AtomService.Collection collection2 =
131             (AtomService.Collection)workspace2.getCollections().get(0);
132         assertEquals("All blog entries", collection2.getTitle());
133         assertEquals("entries", collection.getContents());
134         assertEquals("http://example.com/collection1", collection2.getHref());
135     }
136
137     /** Compare times ignoring milliseconds */
138     public void assertCloseEnough(Date JavaDoc d1, Date JavaDoc d2) {
139         long t1 = d1.getTime() - d1.getTime() % 1000;
140         long t2 = d2.getTime() - d2.getTime() % 1000;
141         assertEquals(t1, t2);
142     }
143     
144     public static Test suite() {
145         TestSuite suite = new TestSuite();
146         suite.addTest(new TestSuite(AtomCollectionTest.class));
147         return suite;
148     }
149 }
150
Popular Tags