test/java/util/concurrent/ConcurrentQueues/IteratorWeakConsistency.java

Print this page

        

*** 54,65 **** // Other concurrent queues (e.g. ArrayBlockingQueue) do not // currently have weakly consistent iterators. // test(new ArrayBlockingQueue(20)); } ! void test(Queue q) throws Throwable { // TODO: make this more general for (int i = 0; i < 10; i++) q.add(i); Iterator it = q.iterator(); q.poll(); q.poll(); --- 54,66 ---- // Other concurrent queues (e.g. ArrayBlockingQueue) do not // currently have weakly consistent iterators. // test(new ArrayBlockingQueue(20)); } ! void test(Queue q) { // TODO: make this more general + try { for (int i = 0; i < 10; i++) q.add(i); Iterator it = q.iterator(); q.poll(); q.poll();
*** 71,82 **** --- 72,103 ---- equal(list, Arrays.asList(0, 3, 4, 5, 6, 8, 9)); check(! list.contains(null)); System.out.printf("%s: %s%n", q.getClass().getSimpleName(), list); + } catch (Throwable t) { unexpected(t); } + + try { + q.clear(); + q.add(1); + q.add(2); + q.add(3); + q.add(4); + Iterator it = q.iterator(); + it.next(); + q.remove(2); + q.remove(1); + q.remove(3); + boolean found4 = false; + while (it.hasNext()) { + found4 |= it.next().equals(4); } + check(found4); + } catch (Throwable t) { unexpected(t); } + } + //--------------------- Infrastructure --------------------------- volatile int passed = 0, failed = 0; void pass() {passed++;} void fail() {failed++; Thread.dumpStack();} void fail(String msg) {System.err.println(msg); fail();}
*** 83,93 **** void unexpected(Throwable t) {failed++; t.printStackTrace();} void check(boolean cond) {if (cond) pass(); else fail();} void equal(Object x, Object y) { if (x == null ? y == null : x.equals(y)) pass(); else fail(x + " not equal to " + y);} - static Class<?> thisClass = new Object(){}.getClass().getEnclosingClass(); public static void main(String[] args) throws Throwable { new IteratorWeakConsistency().instanceMain(args);} public void instanceMain(String[] args) throws Throwable { try {test(args);} catch (Throwable t) {unexpected(t);} System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); --- 104,113 ----