KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > joda > time > TestWeeks


1 /*
2  * Copyright 2001-2006 Stephen Colebourne
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.joda.time;
17
18 import java.io.ByteArrayInputStream JavaDoc;
19 import java.io.ByteArrayOutputStream JavaDoc;
20 import java.io.ObjectInputStream JavaDoc;
21 import java.io.ObjectOutputStream JavaDoc;
22
23 import junit.framework.TestCase;
24 import junit.framework.TestSuite;
25
26 /**
27  * This class is a Junit unit test for Weeks.
28  *
29  * @author Stephen Colebourne
30  */

31 public class TestWeeks extends TestCase {
32     // Test in 2002/03 as time zones are more well known
33
// (before the late 90's they were all over the place)
34
private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
35
36     public static void main(String JavaDoc[] args) {
37         junit.textui.TestRunner.run(suite());
38     }
39
40     public static TestSuite suite() {
41         return new TestSuite(TestWeeks.class);
42     }
43
44     public TestWeeks(String JavaDoc name) {
45         super(name);
46     }
47
48     protected void setUp() throws Exception JavaDoc {
49     }
50
51     protected void tearDown() throws Exception JavaDoc {
52     }
53
54     //-----------------------------------------------------------------------
55
public void testConstants() {
56         assertEquals(0, Weeks.ZERO.getWeeks());
57         assertEquals(1, Weeks.ONE.getWeeks());
58         assertEquals(2, Weeks.TWO.getWeeks());
59         assertEquals(3, Weeks.THREE.getWeeks());
60         assertEquals(Integer.MAX_VALUE, Weeks.MAX_VALUE.getWeeks());
61         assertEquals(Integer.MIN_VALUE, Weeks.MIN_VALUE.getWeeks());
62     }
63
64     //-----------------------------------------------------------------------
65
public void testFactory_weeks_int() {
66         assertSame(Weeks.ZERO, Weeks.weeks(0));
67         assertSame(Weeks.ONE, Weeks.weeks(1));
68         assertSame(Weeks.TWO, Weeks.weeks(2));
69         assertSame(Weeks.THREE, Weeks.weeks(3));
70         assertSame(Weeks.MAX_VALUE, Weeks.weeks(Integer.MAX_VALUE));
71         assertSame(Weeks.MIN_VALUE, Weeks.weeks(Integer.MIN_VALUE));
72         assertEquals(-1, Weeks.weeks(-1).getWeeks());
73         assertEquals(4, Weeks.weeks(4).getWeeks());
74     }
75
76     //-----------------------------------------------------------------------
77
public void testFactory_weeksBetween_RInstant() {
78         DateTime start = new DateTime(2006, 6, 9, 12, 0, 0, 0, PARIS);
79         DateTime end1 = new DateTime(2006, 6, 30, 12, 0, 0, 0, PARIS);
80         DateTime end2 = new DateTime(2006, 7, 21, 12, 0, 0, 0, PARIS);
81         
82         assertEquals(3, Weeks.weeksBetween(start, end1).getWeeks());
83         assertEquals(0, Weeks.weeksBetween(start, start).getWeeks());
84         assertEquals(0, Weeks.weeksBetween(end1, end1).getWeeks());
85         assertEquals(-3, Weeks.weeksBetween(end1, start).getWeeks());
86         assertEquals(6, Weeks.weeksBetween(start, end2).getWeeks());
87     }
88
89     public void testFactory_weeksBetween_RPartial() {
90         LocalDate start = new LocalDate(2006, 6, 9);
91         LocalDate end1 = new LocalDate(2006, 6, 30);
92         YearMonthDay end2 = new YearMonthDay(2006, 7, 21);
93         
94         assertEquals(3, Weeks.weeksBetween(start, end1).getWeeks());
95         assertEquals(0, Weeks.weeksBetween(start, start).getWeeks());
96         assertEquals(0, Weeks.weeksBetween(end1, end1).getWeeks());
97         assertEquals(-3, Weeks.weeksBetween(end1, start).getWeeks());
98         assertEquals(6, Weeks.weeksBetween(start, end2).getWeeks());
99     }
100
101     public void testFactory_weeksIn_RInterval() {
102         DateTime start = new DateTime(2006, 6, 9, 12, 0, 0, 0, PARIS);
103         DateTime end1 = new DateTime(2006, 6, 30, 12, 0, 0, 0, PARIS);
104         DateTime end2 = new DateTime(2006, 7, 21, 12, 0, 0, 0, PARIS);
105         
106         assertEquals(0, Weeks.weeksIn((ReadableInterval) null).getWeeks());
107         assertEquals(3, Weeks.weeksIn(new Interval(start, end1)).getWeeks());
108         assertEquals(0, Weeks.weeksIn(new Interval(start, start)).getWeeks());
109         assertEquals(0, Weeks.weeksIn(new Interval(end1, end1)).getWeeks());
110         assertEquals(6, Weeks.weeksIn(new Interval(start, end2)).getWeeks());
111     }
112
113     public void testFactory_standardWeeksIn_RPeriod() {
114         assertEquals(0, Weeks.standardWeeksIn((ReadablePeriod) null).getWeeks());
115         assertEquals(0, Weeks.standardWeeksIn(Period.ZERO).getWeeks());
116         assertEquals(1, Weeks.standardWeeksIn(new Period(0, 0, 1, 0, 0, 0, 0, 0)).getWeeks());
117         assertEquals(123, Weeks.standardWeeksIn(Period.weeks(123)).getWeeks());
118         assertEquals(-987, Weeks.standardWeeksIn(Period.weeks(-987)).getWeeks());
119         assertEquals(1, Weeks.standardWeeksIn(Period.days(13)).getWeeks());
120         assertEquals(2, Weeks.standardWeeksIn(Period.days(14)).getWeeks());
121         assertEquals(2, Weeks.standardWeeksIn(Period.days(15)).getWeeks());
122         try {
123             Weeks.standardWeeksIn(Period.months(1));
124             fail();
125         } catch (IllegalArgumentException JavaDoc ex) {
126             // expeceted
127
}
128     }
129
130     public void testFactory_parseWeeks_String() {
131         assertEquals(0, Weeks.parseWeeks((String JavaDoc) null).getWeeks());
132         assertEquals(0, Weeks.parseWeeks("P0W").getWeeks());
133         assertEquals(1, Weeks.parseWeeks("P1W").getWeeks());
134         assertEquals(-3, Weeks.parseWeeks("P-3W").getWeeks());
135         assertEquals(2, Weeks.parseWeeks("P0Y0M2W").getWeeks());
136         assertEquals(2, Weeks.parseWeeks("P2WT0H0M").getWeeks());
137         try {
138             Weeks.parseWeeks("P1Y1D");
139             fail();
140         } catch (IllegalArgumentException JavaDoc ex) {
141             // expeceted
142
}
143         try {
144             Weeks.parseWeeks("P1WT1H");
145             fail();
146         } catch (IllegalArgumentException JavaDoc ex) {
147             // expeceted
148
}
149     }
150
151     //-----------------------------------------------------------------------
152
public void testGetMethods() {
153         Weeks test = Weeks.weeks(20);
154         assertEquals(20, test.getWeeks());
155     }
156
157     public void testGetFieldType() {
158         Weeks test = Weeks.weeks(20);
159         assertEquals(DurationFieldType.weeks(), test.getFieldType());
160     }
161
162     public void testGetPeriodType() {
163         Weeks test = Weeks.weeks(20);
164         assertEquals(PeriodType.weeks(), test.getPeriodType());
165     }
166
167     //-----------------------------------------------------------------------
168
public void testIsGreaterThan() {
169         assertEquals(true, Weeks.THREE.isGreaterThan(Weeks.TWO));
170         assertEquals(false, Weeks.THREE.isGreaterThan(Weeks.THREE));
171         assertEquals(false, Weeks.TWO.isGreaterThan(Weeks.THREE));
172         assertEquals(true, Weeks.ONE.isGreaterThan(null));
173         assertEquals(false, Weeks.weeks(-1).isGreaterThan(null));
174     }
175
176     public void testIsLessThan() {
177         assertEquals(false, Weeks.THREE.isLessThan(Weeks.TWO));
178         assertEquals(false, Weeks.THREE.isLessThan(Weeks.THREE));
179         assertEquals(true, Weeks.TWO.isLessThan(Weeks.THREE));
180         assertEquals(false, Weeks.ONE.isLessThan(null));
181         assertEquals(true, Weeks.weeks(-1).isLessThan(null));
182     }
183
184     //-----------------------------------------------------------------------
185
public void testToString() {
186         Weeks test = Weeks.weeks(20);
187         assertEquals("P20W", test.toString());
188         
189         test = Weeks.weeks(-20);
190         assertEquals("P-20W", test.toString());
191     }
192
193     //-----------------------------------------------------------------------
194
public void testSerialization() throws Exception JavaDoc {
195         Weeks test = Weeks.THREE;
196         
197         ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc();
198         ObjectOutputStream JavaDoc oos = new ObjectOutputStream JavaDoc(baos);
199         oos.writeObject(test);
200         byte[] bytes = baos.toByteArray();
201         oos.close();
202         
203         ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc(bytes);
204         ObjectInputStream JavaDoc ois = new ObjectInputStream JavaDoc(bais);
205         Weeks result = (Weeks) ois.readObject();
206         ois.close();
207         
208         assertSame(test, result);
209     }
210
211     //-----------------------------------------------------------------------
212
public void testToStandardDays() {
213         Weeks test = Weeks.weeks(2);
214         Days expected = Days.days(14);
215         assertEquals(expected, test.toStandardDays());
216         
217         try {
218             Weeks.MAX_VALUE.toStandardDays();
219             fail();
220         } catch (ArithmeticException JavaDoc ex) {
221             // expected
222
}
223     }
224
225     public void testToStandardHours() {
226         Weeks test = Weeks.weeks(2);
227         Hours expected = Hours.hours(2 * 7 * 24);
228         assertEquals(expected, test.toStandardHours());
229         
230         try {
231             Weeks.MAX_VALUE.toStandardHours();
232             fail();
233         } catch (ArithmeticException JavaDoc ex) {
234             // expected
235
}
236     }
237
238     public void testToStandardMinutes() {
239         Weeks test = Weeks.weeks(2);
240         Minutes expected = Minutes.minutes(2 * 7 * 24 * 60);
241         assertEquals(expected, test.toStandardMinutes());
242         
243         try {
244             Weeks.MAX_VALUE.toStandardMinutes();
245             fail();
246         } catch (ArithmeticException JavaDoc ex) {
247             // expected
248
}
249     }
250
251     public void testToStandardSeconds() {
252         Weeks test = Weeks.weeks(2);
253         Seconds expected = Seconds.seconds(2 * 7 * 24 * 60 * 60);
254         assertEquals(expected, test.toStandardSeconds());
255         
256         try {
257             Weeks.MAX_VALUE.toStandardSeconds();
258             fail();
259         } catch (ArithmeticException JavaDoc ex) {
260             // expected
261
}
262     }
263
264     public void testToStandardDuration() {
265         Weeks test = Weeks.weeks(20);
266         Duration expected = new Duration(20L * DateTimeConstants.MILLIS_PER_WEEK);
267         assertEquals(expected, test.toStandardDuration());
268         
269         expected = new Duration(((long) Integer.MAX_VALUE) * DateTimeConstants.MILLIS_PER_WEEK);
270         assertEquals(expected, Weeks.MAX_VALUE.toStandardDuration());
271     }
272
273     //-----------------------------------------------------------------------
274
public void testPlus_int() {
275         Weeks test2 = Weeks.weeks(2);
276         Weeks result = test2.plus(3);
277         assertEquals(2, test2.getWeeks());
278         assertEquals(5, result.getWeeks());
279         
280         assertEquals(1, Weeks.ONE.plus(0).getWeeks());
281         
282         try {
283             Weeks.MAX_VALUE.plus(1);
284             fail();
285         } catch (ArithmeticException JavaDoc ex) {
286             // expected
287
}
288     }
289
290     public void testPlus_Weeks() {
291         Weeks test2 = Weeks.weeks(2);
292         Weeks test3 = Weeks.weeks(3);
293         Weeks result = test2.plus(test3);
294         assertEquals(2, test2.getWeeks());
295         assertEquals(3, test3.getWeeks());
296         assertEquals(5, result.getWeeks());
297         
298         assertEquals(1, Weeks.ONE.plus(Weeks.ZERO).getWeeks());
299         assertEquals(1, Weeks.ONE.plus((Weeks) null).getWeeks());
300         
301         try {
302             Weeks.MAX_VALUE.plus(Weeks.ONE);
303             fail();
304         } catch (ArithmeticException JavaDoc ex) {
305             // expected
306
}
307     }
308
309     public void testMinus_int() {
310         Weeks test2 = Weeks.weeks(2);
311         Weeks result = test2.minus(3);
312         assertEquals(2, test2.getWeeks());
313         assertEquals(-1, result.getWeeks());
314         
315         assertEquals(1, Weeks.ONE.minus(0).getWeeks());
316         
317         try {
318             Weeks.MIN_VALUE.minus(1);
319             fail();
320         } catch (ArithmeticException JavaDoc ex) {
321             // expected
322
}
323     }
324
325     public void testMinus_Weeks() {
326         Weeks test2 = Weeks.weeks(2);
327         Weeks test3 = Weeks.weeks(3);
328         Weeks result = test2.minus(test3);
329         assertEquals(2, test2.getWeeks());
330         assertEquals(3, test3.getWeeks());
331         assertEquals(-1, result.getWeeks());
332         
333         assertEquals(1, Weeks.ONE.minus(Weeks.ZERO).getWeeks());
334         assertEquals(1, Weeks.ONE.minus((Weeks) null).getWeeks());
335         
336         try {
337             Weeks.MIN_VALUE.minus(Weeks.ONE);
338             fail();
339         } catch (ArithmeticException JavaDoc ex) {
340             // expected
341
}
342     }
343
344     public void testMultipliedBy_int() {
345         Weeks test = Weeks.weeks(2);
346         assertEquals(6, test.multipliedBy(3).getWeeks());
347         assertEquals(2, test.getWeeks());
348         assertEquals(-6, test.multipliedBy(-3).getWeeks());
349         assertSame(test, test.multipliedBy(1));
350         
351         Weeks halfMax = Weeks.weeks(Integer.MAX_VALUE / 2 + 1);
352         try {
353             halfMax.multipliedBy(2);
354             fail();
355         } catch (ArithmeticException JavaDoc ex) {
356             // expected
357
}
358     }
359
360     public void testDividedBy_int() {
361         Weeks test = Weeks.weeks(12);
362         assertEquals(6, test.dividedBy(2).getWeeks());
363         assertEquals(12, test.getWeeks());
364         assertEquals(4, test.dividedBy(3).getWeeks());
365         assertEquals(3, test.dividedBy(4).getWeeks());
366         assertEquals(2, test.dividedBy(5).getWeeks());
367         assertEquals(2, test.dividedBy(6).getWeeks());
368         assertSame(test, test.dividedBy(1));
369         
370         try {
371             Weeks.ONE.dividedBy(0);
372             fail();
373         } catch (ArithmeticException JavaDoc ex) {
374             // expected
375
}
376     }
377
378     public void testNegated() {
379         Weeks test = Weeks.weeks(12);
380         assertEquals(-12, test.negated().getWeeks());
381         assertEquals(12, test.getWeeks());
382         
383         try {
384             Weeks.MIN_VALUE.negated();
385             fail();
386         } catch (ArithmeticException JavaDoc ex) {
387             // expected
388
}
389     }
390
391     //-----------------------------------------------------------------------
392
public void testAddToLocalDate() {
393         Weeks test = Weeks.weeks(3);
394         LocalDate date = new LocalDate(2006, 6, 1);
395         LocalDate expected = new LocalDate(2006, 6, 22);
396         assertEquals(expected, date.plus(test));
397     }
398
399 }
400
Popular Tags