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

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

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

revision 1.13, Mon Nov 16 05:30:07 2009 UTC revision 1.14, Tue Nov 17 02:37:16 2009 UTC
# Line 37  Line 37 
37          try {          try {
38              int[] a = null;              int[] a = null;
39              AtomicIntegerArray ai = new AtomicIntegerArray(a);              AtomicIntegerArray ai = new AtomicIntegerArray(a);
40          } catch (NullPointerException success) {              shouldThrow();
41          } catch (Exception ex) {          } catch (NullPointerException success) {}
             unexpectedException();  
         }  
42      }      }
43    
44      /**      /**
# Line 61  Line 59 
59          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);          AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
60          try {          try {
61              ai.get(SIZE);              ai.get(SIZE);
62                shouldThrow();
63          } catch (IndexOutOfBoundsException success) {          } catch (IndexOutOfBoundsException success) {
64          }          }
65          try {          try {
66              ai.get(-1);              ai.get(-1);
67                shouldThrow();
68          } catch (IndexOutOfBoundsException success) {          } catch (IndexOutOfBoundsException success) {
69          }          }
70          try {          try {
71              ai.set(SIZE, 0);              ai.set(SIZE, 0);
72                shouldThrow();
73          } catch (IndexOutOfBoundsException success) {          } catch (IndexOutOfBoundsException success) {
74          }          }
75          try {          try {
76              ai.set(-1, 0);              ai.set(-1, 0);
77                shouldThrow();
78          } catch (IndexOutOfBoundsException success) {          } catch (IndexOutOfBoundsException success) {
79          }          }
80      }      }
# Line 128  Line 130 
130       * compareAndSet in one thread enables another waiting for value       * compareAndSet in one thread enables another waiting for value
131       * to succeed       * to succeed
132       */       */
133      public void testCompareAndSetInMultipleThreads() {      public void testCompareAndSetInMultipleThreads() throws Exception {
134          final AtomicIntegerArray a = new AtomicIntegerArray(1);          final AtomicIntegerArray a = new AtomicIntegerArray(1);
135          a.set(0, 1);          a.set(0, 1);
136          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new Runnable() {
137                  public void run() {                  public void run() {
138                      while (!a.compareAndSet(0, 2, 3)) Thread.yield();                      while (!a.compareAndSet(0, 2, 3)) Thread.yield();
139                  }});                  }});
140          try {  
141              t.start();              t.start();
142              assertTrue(a.compareAndSet(0, 1, 2));              assertTrue(a.compareAndSet(0, 1, 2));
143              t.join(LONG_DELAY_MS);              t.join(LONG_DELAY_MS);
144              assertFalse(t.isAlive());              assertFalse(t.isAlive());
145              assertEquals(a.get(0), 3);              assertEquals(a.get(0), 3);
146          }          }
         catch (Exception e) {  
             unexpectedException();  
         }  
     }  
147    
148      /**      /**
149       * repeated weakCompareAndSet succeeds in changing value when equal       * repeated weakCompareAndSet succeeds in changing value when equal
# Line 293  Line 291 
291       * Multiple threads using same array of counters successfully       * Multiple threads using same array of counters successfully
292       * update a number of times equal to total count       * update a number of times equal to total count
293       */       */
294      public void testCountingInMultipleThreads() {      public void testCountingInMultipleThreads() throws InterruptedException {
         try {  
295              final AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);              final AtomicIntegerArray ai = new AtomicIntegerArray(SIZE);
296              for (int i = 0; i < SIZE; ++i)              for (int i = 0; i < SIZE; ++i)
297                  ai.set(i, COUNTDOWN);                  ai.set(i, COUNTDOWN);
# Line 308  Line 305 
305              t2.join();              t2.join();
306              assertEquals(c1.counts+c2.counts, SIZE * COUNTDOWN);              assertEquals(c1.counts+c2.counts, SIZE * COUNTDOWN);
307          }          }
         catch (InterruptedException ie) {  
             unexpectedException();  
         }  
     }  
308    
309    
310      /**      /**
311       * a deserialized serialized array holds same values       * a deserialized serialized array holds same values
312       */       */
313      public void testSerialization() {      public void testSerialization() throws Exception {
314          AtomicIntegerArray l = new AtomicIntegerArray(SIZE);          AtomicIntegerArray l = new AtomicIntegerArray(SIZE);
315          for (int i = 0; i < SIZE; ++i)          for (int i = 0; i < SIZE; ++i)
316              l.set(i, -i);              l.set(i, -i);
317    
         try {  
318              ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);              ByteArrayOutputStream bout = new ByteArrayOutputStream(10000);
319              ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));              ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(bout));
320              out.writeObject(l);              out.writeObject(l);
# Line 334  Line 326 
326              for (int i = 0; i < SIZE; ++i) {              for (int i = 0; i < SIZE; ++i) {
327                  assertEquals(l.get(i), r.get(i));                  assertEquals(l.get(i), r.get(i));
328              }              }
         } catch (Exception e) {  
             e.printStackTrace();  
             unexpectedException();  
         }  
329      }      }
330    
331    

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8