summaryrefslogtreecommitdiff
path: root/jsr166-tests/src/test/java/jsr166/SystemTest.java
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2013-08-01 17:26:00 +0100
committerCalin Juravle <calin@google.com>2013-08-14 19:15:59 +0100
commit8f0d92bba199d906c70a5e40d7f3516c1a424117 (patch)
tree3762e8e4275ac7535ce011915fb0e0f7a343deea /jsr166-tests/src/test/java/jsr166/SystemTest.java
parent75a06e56a4cc4599946e21422513e4bafa759509 (diff)
Added jsr166 tck tests as part of the libcore testsuite.
Change-Id: I6094d734f818fa043f2b277cf2b4ec7fec68e26e
Diffstat (limited to 'jsr166-tests/src/test/java/jsr166/SystemTest.java')
-rw-r--r--jsr166-tests/src/test/java/jsr166/SystemTest.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/jsr166-tests/src/test/java/jsr166/SystemTest.java b/jsr166-tests/src/test/java/jsr166/SystemTest.java
new file mode 100644
index 0000000000..32caec28b1
--- /dev/null
+++ b/jsr166-tests/src/test/java/jsr166/SystemTest.java
@@ -0,0 +1,63 @@
+/*
+ * Written by Doug Lea with assistance from members of JCP JSR-166
+ * Expert Group and released to the public domain, as explained at
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ * Other contributors include Andrew Wright, Jeffrey Hayes,
+ * Pat Fisher, Mike Judd.
+ */
+
+package jsr166;
+
+import junit.framework.*;
+
+public class SystemTest extends JSR166TestCase {
+
+ /**
+ * Worst case rounding for millisecs; set for 60 cycle millis clock.
+ * This value might need to be changed on JVMs with coarser
+ * System.currentTimeMillis clocks.
+ */
+ static final long MILLIS_ROUND = 17;
+
+ /**
+ * Nanos between readings of millis is no longer than millis (plus
+ * possible rounding).
+ * This shows only that nano timing not (much) worse than milli.
+ */
+ public void testNanoTime1() throws InterruptedException {
+ long m1 = System.currentTimeMillis();
+ Thread.sleep(1);
+ long n1 = System.nanoTime();
+ Thread.sleep(SHORT_DELAY_MS);
+ long n2 = System.nanoTime();
+ Thread.sleep(1);
+ long m2 = System.currentTimeMillis();
+ long millis = m2 - m1;
+ long nanos = n2 - n1;
+ assertTrue(nanos >= 0);
+ long nanosAsMillis = nanos / 1000000;
+ assertTrue(nanosAsMillis <= millis + MILLIS_ROUND);
+ }
+
+ /**
+ * Millis between readings of nanos is less than nanos, adjusting
+ * for rounding.
+ * This shows only that nano timing not (much) worse than milli.
+ */
+ public void testNanoTime2() throws InterruptedException {
+ long n1 = System.nanoTime();
+ Thread.sleep(1);
+ long m1 = System.currentTimeMillis();
+ Thread.sleep(SHORT_DELAY_MS);
+ long m2 = System.currentTimeMillis();
+ Thread.sleep(1);
+ long n2 = System.nanoTime();
+ long millis = m2 - m1;
+ long nanos = n2 - n1;
+
+ assertTrue(nanos >= 0);
+ long nanosAsMillis = nanos / 1000000;
+ assertTrue(millis <= nanosAsMillis + MILLIS_ROUND);
+ }
+
+}