[cvs] / jsr166 / src / test / tck / SystemTest.java Repository:
ViewVC logotype

Diff of /jsr166/src/test/tck/SystemTest.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1, Sun Aug 31 19:24:55 2003 UTC revision 1.5, Sat Dec 27 19:26:44 2003 UTC
# Line 1  Line 1 
1  /*  /*
2   * Written by members of JCP JSR-166 Expert Group and released to the   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * public domain. Use, modify, and redistribute this code in any way   * Expert Group and released to the public domain, as explained at
4   * without acknowledgement. Other contributors include Andrew Wright,   * http://creativecommons.org/licenses/publicdomain
5   * Jeffrey Hayes, Pat Fischer, Mike Judd.   * Other contributors include Andrew Wright, Jeffrey Hayes,
6     * Pat Fisher, Mike Judd.
7   */   */
8    
9  import junit.framework.*;  import junit.framework.*;
10    
11  public class SystemTest extends TestCase {  public class SystemTest extends JSR166TestCase {
12      public static void main(String[] args) {      public static void main(String[] args) {
13          junit.textui.TestRunner.run(suite());          junit.textui.TestRunner.run(suite());
14      }      }
# Line 16  Line 17 
17          return new TestSuite(SystemTest.class);          return new TestSuite(SystemTest.class);
18      }      }
19    
20        /**
21         * Nanos between readings of millis is no longer than millis (plus
22         * one milli to allow for rounding).
23         * This shows only that nano timing not (much) worse than milli.
24         */
25      public void testNanoTime1() {      public void testNanoTime1() {
26          // Nanos between readings of millis must be no longer than millis          try {
27          long m1 = System.currentTimeMillis();          long m1 = System.currentTimeMillis();
28                Thread.sleep(1);
29          long n1 = System.nanoTime();          long n1 = System.nanoTime();
30                Thread.sleep(SHORT_DELAY_MS);
         // Ensure some computation that is not optimized away.  
         long sum = 0;  
         for (long i = 1; i < 10000; ++i)  
             sum += i;  
         assertTrue(sum != 0);  
   
31          long n2 = System.nanoTime();          long n2 = System.nanoTime();
32                Thread.sleep(1);
         for (long i = 1; i < 10000; ++i)  
             sum -= i;  
         assertTrue(sum == 0);  
   
33          long m2 = System.currentTimeMillis();          long m2 = System.currentTimeMillis();
34          long millis = m2 - m1;          long millis = m2 - m1;
35          long nanos = n2 - n1;          long nanos = n2 - n1;
36    
37          assertTrue(nanos >= 0);          assertTrue(nanos >= 0);
38          assertTrue(nanos <= millis * 1000000);              assertTrue(nanos < (millis+1) * 1000000);
39            }
40            catch(InterruptedException ie) {
41                unexpectedException();
42            }
43      }      }
44    
45        /**
46         * Millis between readings of nanos is no longer than nanos
47         * This shows only that nano timing not (much) worse than milli.
48         */
49      public void testNanoTime2() {      public void testNanoTime2() {
50          // Millis between readings of nanos must be no longer than nanos          try {
51          long n1 = System.nanoTime();          long n1 = System.nanoTime();
52                Thread.sleep(1);
53          long m1 = System.currentTimeMillis();          long m1 = System.currentTimeMillis();
54                Thread.sleep(SHORT_DELAY_MS);
         // Ensure some computation that is not optimized away.  
         long sum = 0;  
         for (long i = 1; i < 10000; ++i)  
             sum += i;  
         assertTrue(sum != 0);  
   
55          long m2 = System.currentTimeMillis();          long m2 = System.currentTimeMillis();
56                Thread.sleep(1);
         for (long i = 1; i < 10000; ++i)  
             sum -= i;  
         assertTrue(sum == 0);  
   
57          long n2 = System.nanoTime();          long n2 = System.nanoTime();
   
58          long millis = m2 - m1;          long millis = m2 - m1;
59          long nanos = n2 - n1;          long nanos = n2 - n1;
60    
61          assertTrue(nanos >= 0);          assertTrue(nanos >= 0);
62          assertTrue(millis * 1000000 <= nanos);          assertTrue(millis * 1000000 <= nanos);
63      }      }
64            catch(InterruptedException ie) {
65                unexpectedException();
66            }
67        }
68    
69  }  }
70    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8