1 16 package org.joda.time; 17 18 import java.io.ByteArrayInputStream ; 19 import java.io.ByteArrayOutputStream ; 20 import java.io.ObjectInputStream ; 21 import java.io.ObjectOutputStream ; 22 23 import junit.framework.TestCase; 24 import junit.framework.TestSuite; 25 26 31 public class TestWeeks extends TestCase { 32 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 35 36 public static void main(String [] 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 name) { 45 super(name); 46 } 47 48 protected void setUp() throws Exception { 49 } 50 51 protected void tearDown() throws Exception { 52 } 53 54 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 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 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 ex) { 126 } 128 } 129 130 public void testFactory_parseWeeks_String() { 131 assertEquals(0, Weeks.parseWeeks((String ) 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 ex) { 141 } 143 try { 144 Weeks.parseWeeks("P1WT1H"); 145 fail(); 146 } catch (IllegalArgumentException ex) { 147 } 149 } 150 151 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 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 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 public void testSerialization() throws Exception { 195 Weeks test = Weeks.THREE; 196 197 ByteArrayOutputStream baos = new ByteArrayOutputStream (); 198 ObjectOutputStream oos = new ObjectOutputStream (baos); 199 oos.writeObject(test); 200 byte[] bytes = baos.toByteArray(); 201 oos.close(); 202 203 ByteArrayInputStream bais = new ByteArrayInputStream (bytes); 204 ObjectInputStream ois = new ObjectInputStream (bais); 205 Weeks result = (Weeks) ois.readObject(); 206 ois.close(); 207 208 assertSame(test, result); 209 } 210 211 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 ex) { 221 } 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 ex) { 234 } 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 ex) { 247 } 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 ex) { 260 } 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 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 ex) { 286 } 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 ex) { 305 } 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 ex) { 321 } 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 ex) { 340 } 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 ex) { 356 } 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 ex) { 374 } 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 ex) { 387 } 389 } 390 391 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 |