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

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

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

revision 1.8, Fri Jan 9 20:07:36 2004 UTC revision 1.17, Sun Nov 22 18:55:56 2009 UTC
# Line 18  Line 18 
18          return new TestSuite(AtomicLongTest.class);          return new TestSuite(AtomicLongTest.class);
19      }      }
20    
21        final long[] VALUES = {
22            Long.MIN_VALUE,
23            Integer.MIN_VALUE, -1, 0, 1, 42, Integer.MAX_VALUE,
24            Long.MAX_VALUE,
25        };
26    
27      /**      /**
28       * constructor initializes to given value       * constructor initializes to given value
29       */       */
# Line 44  Line 50 
50          assertEquals(2,ai.get());          assertEquals(2,ai.get());
51          ai.set(-3);          ai.set(-3);
52          assertEquals(-3,ai.get());          assertEquals(-3,ai.get());
53        }
54    
55        /**
56         * get returns the last value lazySet in same thread
57         */
58        public void testGetLazySet() {
59            AtomicLong ai = new AtomicLong(1);
60            assertEquals(1,ai.get());
61            ai.lazySet(2);
62            assertEquals(2,ai.get());
63            ai.lazySet(-3);
64            assertEquals(-3,ai.get());
65      }      }
66    
67      /**      /**
68       * compareAndSet succeeds in changing value if equal to expected else fails       * compareAndSet succeeds in changing value if equal to expected else fails
69       */       */
# Line 64  Line 82 
82       * compareAndSet in one thread enables another waiting for value       * compareAndSet in one thread enables another waiting for value
83       * to succeed       * to succeed
84       */       */
85      public void testCompareAndSetInMultipleThreads() {      public void testCompareAndSetInMultipleThreads() throws Exception {
86          final AtomicLong ai = new AtomicLong(1);          final AtomicLong ai = new AtomicLong(1);
87          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new CheckedRunnable() {
88                  public void run() {              public void realRun() {
89                      while(!ai.compareAndSet(2, 3)) Thread.yield();                  while (!ai.compareAndSet(2, 3))
90                        Thread.yield();
91                  }});                  }});
92          try {  
93              t.start();              t.start();
94              assertTrue(ai.compareAndSet(1, 2));              assertTrue(ai.compareAndSet(1, 2));
95              t.join(LONG_DELAY_MS);              t.join(LONG_DELAY_MS);
96              assertFalse(t.isAlive());              assertFalse(t.isAlive());
97              assertEquals(ai.get(), 3);              assertEquals(ai.get(), 3);
98          }          }
         catch(Exception e) {  
             unexpectedException();  
         }  
     }  
99    
100      /**      /**
101       * repeated weakCompareAndSet succeeds in changing value when equal       * repeated weakCompareAndSet succeeds in changing value when equal
# Line 179  Line 194 
194      /**      /**
195       * a deserialized serialized atomic holds same value       * a deserialized serialized atomic holds same value
196       */       */
197      public void testSerialization() {      public void testSerialization() throws Exception {
198          AtomicLong l = new AtomicLong();          AtomicLong l = new AtomicLong();
199    
         try {  
200              l.set(-22);              l.set(-22);
201              ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);              ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
202              ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));              ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
# Line 193  Line 207 
207              ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));              ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(bin));
208              AtomicLong r = (AtomicLong) in.readObject();              AtomicLong r = (AtomicLong) in.readObject();
209              assertEquals(l.get(), r.get());              assertEquals(l.get(), r.get());
         } catch(Exception e){  
             unexpectedException();  
         }  
210      }      }
211    
212      /**      /**
# Line 203  Line 214 
214       */       */
215      public void testToString() {      public void testToString() {
216          AtomicLong ai = new AtomicLong();          AtomicLong ai = new AtomicLong();
217          for (long i = -12; i < 6; ++i) {          assertEquals("0", ai.toString());
218            for (long i : VALUES) {
219              ai.set(i);              ai.set(i);
220              assertEquals(ai.toString(), Long.toString(i));              assertEquals(ai.toString(), Long.toString(i));
221          }          }
222      }      }
223    
224        /**
225         * intValue returns current value.
226         */
227        public void testIntValue() {
228            AtomicLong ai = new AtomicLong();
229            assertEquals(0, ai.intValue());
230            for (long x : VALUES) {
231                ai.set(x);
232                assertEquals((int)x, ai.intValue());
233            }
234        }
235    
236        /**
237         * longValue returns current value.
238         */
239        public void testLongValue() {
240            AtomicLong ai = new AtomicLong();
241            assertEquals(0L, ai.longValue());
242            for (long x : VALUES) {
243                ai.set(x);
244                assertEquals((long)x, ai.longValue());
245            }
246        }
247    
248        /**
249         * floatValue returns current value.
250         */
251        public void testFloatValue() {
252            AtomicLong ai = new AtomicLong();
253            assertEquals(0.0f, ai.floatValue());
254            for (long x : VALUES) {
255                ai.set(x);
256                assertEquals((float)x, ai.floatValue());
257            }
258        }
259    
260        /**
261         * doubleValue returns current value.
262         */
263        public void testDoubleValue() {
264            AtomicLong ai = new AtomicLong();
265            assertEquals(0.0d, ai.doubleValue());
266            for (long x : VALUES) {
267                ai.set(x);
268                assertEquals((double)x, ai.doubleValue());
269            }
270        }
271    
272  }  }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.17

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8