ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/TimeUnitTest.java
(Generate patch)

Comparing jsr166/src/test/tck/TimeUnitTest.java (file contents):
Revision 1.28 by jsr166, Fri Mar 18 16:55:09 2016 UTC vs.
Revision 1.32 by jsr166, Fri Aug 4 03:30:21 2017 UTC

# Line 14 | Line 14 | import static java.util.concurrent.TimeU
14   import static java.util.concurrent.TimeUnit.NANOSECONDS;
15   import static java.util.concurrent.TimeUnit.SECONDS;
16  
17 import java.time.temporal.ChronoUnit;
17   import java.util.concurrent.CountDownLatch;
18   import java.util.concurrent.TimeUnit;
19  
# Line 294 | Line 293 | public class TimeUnitTest extends JSR166
293          for (TimeUnit x : TimeUnit.values())
294              for (TimeUnit y : TimeUnit.values()) {
295                  long ratio = x.toNanos(1) / y.toNanos(1);
296 <                if (ratio > 1) {
296 >                if (ratio >= 1) {
297                      assertEquals(ratio, y.convert(1, x));
298                      assertEquals(1, x.convert(ratio, y));
299                      long max = Long.MAX_VALUE/ratio;
# Line 302 | Line 301 | public class TimeUnitTest extends JSR166
301                      assertEquals(-max * ratio, y.convert(-max, x));
302                      assertEquals(max, x.convert(max * ratio, y));
303                      assertEquals(-max, x.convert(-max * ratio, y));
304 <                    assertEquals(Long.MAX_VALUE, y.convert(max + 1, x));
305 <                    assertEquals(Long.MIN_VALUE, y.convert(-max - 1, x));
304 >                    if (max < Long.MAX_VALUE) {
305 >                        assertEquals(Long.MAX_VALUE, y.convert(max + 1, x));
306 >                        assertEquals(Long.MIN_VALUE, y.convert(-max - 1, x));
307 >                        assertEquals(Long.MIN_VALUE, y.convert(Long.MIN_VALUE + 1, x));
308 >                    }
309                      assertEquals(Long.MAX_VALUE, y.convert(Long.MAX_VALUE, x));
310                      assertEquals(Long.MIN_VALUE, y.convert(Long.MIN_VALUE, x));
309                    assertEquals(Long.MIN_VALUE, y.convert(Long.MIN_VALUE + 1, x));
311                  }
312              }
313      }
# Line 323 | Line 324 | public class TimeUnitTest extends JSR166
324  
325          for (TimeUnit x : TimeUnit.values()) {
326              long ratio = x.toNanos(1) / NANOSECONDS.toNanos(1);
327 <            if (ratio > 1) {
327 >            if (ratio >= 1) {
328                  long max = Long.MAX_VALUE/ratio;
329                  for (long z : new long[] {0, 1, -1, max, -max})
330                      assertEquals(z * ratio, x.toNanos(z));
331 <                assertEquals(Long.MAX_VALUE, x.toNanos(max + 1));
332 <                assertEquals(Long.MIN_VALUE, x.toNanos(-max - 1));
331 >                if (max < Long.MAX_VALUE) {
332 >                    assertEquals(Long.MAX_VALUE, x.toNanos(max + 1));
333 >                    assertEquals(Long.MIN_VALUE, x.toNanos(-max - 1));
334 >                    assertEquals(Long.MIN_VALUE, x.toNanos(Long.MIN_VALUE + 1));
335 >                }
336                  assertEquals(Long.MAX_VALUE, x.toNanos(Long.MAX_VALUE));
337                  assertEquals(Long.MIN_VALUE, x.toNanos(Long.MIN_VALUE));
334                assertEquals(Long.MIN_VALUE, x.toNanos(Long.MIN_VALUE + 1));
338                  if (max < Integer.MAX_VALUE) {
339                      assertEquals(Long.MAX_VALUE, x.toNanos(Integer.MAX_VALUE));
340                      assertEquals(Long.MIN_VALUE, x.toNanos(Integer.MIN_VALUE));
# Line 347 | Line 350 | public class TimeUnitTest extends JSR166
350      public void testToMicrosSaturate() {
351          for (TimeUnit x : TimeUnit.values()) {
352              long ratio = x.toNanos(1) / MICROSECONDS.toNanos(1);
353 <            if (ratio > 1) {
353 >            if (ratio >= 1) {
354                  long max = Long.MAX_VALUE/ratio;
355                  for (long z : new long[] {0, 1, -1, max, -max})
356                      assertEquals(z * ratio, x.toMicros(z));
357 <                assertEquals(Long.MAX_VALUE, x.toMicros(max + 1));
358 <                assertEquals(Long.MIN_VALUE, x.toMicros(-max - 1));
357 >                if (max < Long.MAX_VALUE) {
358 >                    assertEquals(Long.MAX_VALUE, x.toMicros(max + 1));
359 >                    assertEquals(Long.MIN_VALUE, x.toMicros(-max - 1));
360 >                    assertEquals(Long.MIN_VALUE, x.toMicros(Long.MIN_VALUE + 1));
361 >                }
362                  assertEquals(Long.MAX_VALUE, x.toMicros(Long.MAX_VALUE));
363                  assertEquals(Long.MIN_VALUE, x.toMicros(Long.MIN_VALUE));
358                assertEquals(Long.MIN_VALUE, x.toMicros(Long.MIN_VALUE + 1));
364                  if (max < Integer.MAX_VALUE) {
365                      assertEquals(Long.MAX_VALUE, x.toMicros(Integer.MAX_VALUE));
366                      assertEquals(Long.MIN_VALUE, x.toMicros(Integer.MIN_VALUE));
# Line 371 | Line 376 | public class TimeUnitTest extends JSR166
376      public void testToMillisSaturate() {
377          for (TimeUnit x : TimeUnit.values()) {
378              long ratio = x.toNanos(1) / MILLISECONDS.toNanos(1);
379 <            if (ratio > 1) {
379 >            if (ratio >= 1) {
380                  long max = Long.MAX_VALUE/ratio;
381                  for (long z : new long[] {0, 1, -1, max, -max})
382                      assertEquals(z * ratio, x.toMillis(z));
383 <                assertEquals(Long.MAX_VALUE, x.toMillis(max + 1));
384 <                assertEquals(Long.MIN_VALUE, x.toMillis(-max - 1));
383 >                if (max < Long.MAX_VALUE) {
384 >                    assertEquals(Long.MAX_VALUE, x.toMillis(max + 1));
385 >                    assertEquals(Long.MIN_VALUE, x.toMillis(-max - 1));
386 >                    assertEquals(Long.MIN_VALUE, x.toMillis(Long.MIN_VALUE + 1));
387 >                }
388                  assertEquals(Long.MAX_VALUE, x.toMillis(Long.MAX_VALUE));
389                  assertEquals(Long.MIN_VALUE, x.toMillis(Long.MIN_VALUE));
382                assertEquals(Long.MIN_VALUE, x.toMillis(Long.MIN_VALUE + 1));
390                  if (max < Integer.MAX_VALUE) {
391                      assertEquals(Long.MAX_VALUE, x.toMillis(Integer.MAX_VALUE));
392                      assertEquals(Long.MIN_VALUE, x.toMillis(Integer.MIN_VALUE));
# Line 395 | Line 402 | public class TimeUnitTest extends JSR166
402      public void testToSecondsSaturate() {
403          for (TimeUnit x : TimeUnit.values()) {
404              long ratio = x.toNanos(1) / SECONDS.toNanos(1);
405 <            if (ratio > 1) {
405 >            if (ratio >= 1) {
406                  long max = Long.MAX_VALUE/ratio;
407                  for (long z : new long[] {0, 1, -1, max, -max})
408                      assertEquals(z * ratio, x.toSeconds(z));
409 <                assertEquals(Long.MAX_VALUE, x.toSeconds(max + 1));
410 <                assertEquals(Long.MIN_VALUE, x.toSeconds(-max - 1));
409 >                if (max < Long.MAX_VALUE) {
410 >                    assertEquals(Long.MAX_VALUE, x.toSeconds(max + 1));
411 >                    assertEquals(Long.MIN_VALUE, x.toSeconds(-max - 1));
412 >                    assertEquals(Long.MIN_VALUE, x.toSeconds(Long.MIN_VALUE + 1));
413 >                }
414                  assertEquals(Long.MAX_VALUE, x.toSeconds(Long.MAX_VALUE));
415                  assertEquals(Long.MIN_VALUE, x.toSeconds(Long.MIN_VALUE));
406                assertEquals(Long.MIN_VALUE, x.toSeconds(Long.MIN_VALUE + 1));
416                  if (max < Integer.MAX_VALUE) {
417                      assertEquals(Long.MAX_VALUE, x.toSeconds(Integer.MAX_VALUE));
418                      assertEquals(Long.MIN_VALUE, x.toSeconds(Integer.MIN_VALUE));
# Line 439 | Line 448 | public class TimeUnitTest extends JSR166
448      public void testToHoursSaturate() {
449          for (TimeUnit x : TimeUnit.values()) {
450              long ratio = x.toNanos(1) / HOURS.toNanos(1);
451 <            if (ratio > 1) {
451 >            if (ratio >= 1) {
452                  long max = Long.MAX_VALUE/ratio;
453                  for (long z : new long[] {0, 1, -1, max, -max})
454                      assertEquals(z * ratio, x.toHours(z));
455 <                assertEquals(Long.MAX_VALUE, x.toHours(max + 1));
456 <                assertEquals(Long.MIN_VALUE, x.toHours(-max - 1));
455 >                if (max < Long.MAX_VALUE) {
456 >                    assertEquals(Long.MAX_VALUE, x.toHours(max + 1));
457 >                    assertEquals(Long.MIN_VALUE, x.toHours(-max - 1));
458 >                    assertEquals(Long.MIN_VALUE, x.toHours(Long.MIN_VALUE + 1));
459 >                }
460                  assertEquals(Long.MAX_VALUE, x.toHours(Long.MAX_VALUE));
461                  assertEquals(Long.MIN_VALUE, x.toHours(Long.MIN_VALUE));
450                assertEquals(Long.MIN_VALUE, x.toHours(Long.MIN_VALUE + 1));
462              }
463          }
464      }
# Line 515 | Line 526 | public class TimeUnitTest extends JSR166
526              }});
527  
528          await(pleaseInterrupt);
529 <        assertThreadStaysAlive(t);
529 >        assertThreadBlocks(t, Thread.State.TIMED_WAITING);
530          t.interrupt();
531          awaitTermination(t);
532      }
# Line 548 | Line 559 | public class TimeUnitTest extends JSR166
559              }});
560  
561          await(pleaseInterrupt);
562 <        assertThreadStaysAlive(t);
562 >        assertThreadBlocks(t, Thread.State.TIMED_WAITING);
563          t.interrupt();
564          awaitTermination(t);
565          s.interrupt();
# Line 579 | Line 590 | public class TimeUnitTest extends JSR166
590              }});
591  
592          await(pleaseInterrupt);
593 <        assertThreadStaysAlive(t);
593 >        assertThreadBlocks(t, Thread.State.TIMED_WAITING);
594          t.interrupt();
595          awaitTermination(t);
596      }
597  
598      /**
599 <     * a deserialized serialized unit is the same instance
599 >     * a deserialized/reserialized unit is the same instance
600       */
601      public void testSerialization() throws Exception {
602          for (TimeUnit x : TimeUnit.values())
603              assertSame(x, serialClone(x));
604      }
605  
595    /**
596     * tests for toChronoUnit.
597     */
598    public void testToChronoUnit() throws Exception {
599        assertSame(ChronoUnit.NANOS,   NANOSECONDS.toChronoUnit());
600        assertSame(ChronoUnit.MICROS,  MICROSECONDS.toChronoUnit());
601        assertSame(ChronoUnit.MILLIS,  MILLISECONDS.toChronoUnit());
602        assertSame(ChronoUnit.SECONDS, SECONDS.toChronoUnit());
603        assertSame(ChronoUnit.MINUTES, MINUTES.toChronoUnit());
604        assertSame(ChronoUnit.HOURS,   HOURS.toChronoUnit());
605        assertSame(ChronoUnit.DAYS,    DAYS.toChronoUnit());
606
607        // Every TimeUnit has a defined ChronoUnit equivalent
608        for (TimeUnit x : TimeUnit.values())
609            assertSame(x, TimeUnit.of(x.toChronoUnit()));
610    }
611
612    /**
613     * tests for TimeUnit.of(ChronoUnit).
614     */
615    public void testTimeUnitOf() throws Exception {
616        assertSame(NANOSECONDS,  TimeUnit.of(ChronoUnit.NANOS));
617        assertSame(MICROSECONDS, TimeUnit.of(ChronoUnit.MICROS));
618        assertSame(MILLISECONDS, TimeUnit.of(ChronoUnit.MILLIS));
619        assertSame(SECONDS,      TimeUnit.of(ChronoUnit.SECONDS));
620        assertSame(MINUTES,      TimeUnit.of(ChronoUnit.MINUTES));
621        assertSame(HOURS,        TimeUnit.of(ChronoUnit.HOURS));
622        assertSame(DAYS,         TimeUnit.of(ChronoUnit.DAYS));
623
624        assertThrows(NullPointerException.class,
625                     () -> TimeUnit.of((ChronoUnit)null));
626
627        // ChronoUnits either round trip to their TimeUnit
628        // equivalents, or throw IllegalArgumentException.
629        for (ChronoUnit cu : ChronoUnit.values()) {
630            final TimeUnit tu;
631            try {
632                tu = TimeUnit.of(cu);
633            } catch (IllegalArgumentException acceptable) {
634                continue;
635            }
636            assertSame(cu, tu.toChronoUnit());
637        }
638    }
639
606   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines