--- old/test/java/util/Collection/MOAT.java 2011-12-05 12:07:00.896537094 -0800 +++ new/test/java/util/Collection/MOAT.java 2011-12-05 12:07:00.677770326 -0800 @@ -26,6 +26,7 @@ * @bug 6207984 6272521 6192552 6269713 6197726 6260652 5073546 4137464 * 4155650 4216399 4294891 6282555 6318622 6355327 6383475 6420753 * 6431845 4802633 6570566 6570575 6570631 6570924 6691185 6691215 + * 4802647 * @summary Run many tests on many Collection and Map implementations * @author Martin Buchholz * @run main MOAT @@ -58,6 +59,8 @@ public class MOAT { public static void realMain(String[] args) { + testCollection(new NewAbstractCollection()); + testCollection(new NewAbstractSet()); testCollection(new LinkedHashSet()); testCollection(new HashSet()); testCollection(new Vector()); @@ -753,6 +756,14 @@ // The "all" operations should throw NPE when passed null //---------------------------------------------------------------- { + clear(c); + try { + c.removeAll(null); + fail("Expected NullPointerException"); + } + catch (NullPointerException e) { pass(); } + catch (Throwable t) { unexpected(t); } + oneElement(c); try { c.removeAll(null); @@ -761,6 +772,14 @@ catch (NullPointerException e) { pass(); } catch (Throwable t) { unexpected(t); } + clear(c); + try { + c.retainAll(null); + fail("Expected NullPointerException"); + } + catch (NullPointerException e) { pass(); } + catch (Throwable t) { unexpected(t); } + oneElement(c); try { c.retainAll(null); @@ -1205,4 +1224,22 @@ static T serialClone(T obj) { try { return (T) readObject(serializedForm(obj)); } catch (Exception e) { throw new Error(e); }} + private static class NewAbstractCollection extends AbstractCollection { + ArrayList list = new ArrayList<>(); + public boolean remove(Object obj) { + return list.remove(obj); + } + public boolean add(E e) { + return list.add(e); + } + public Iterator iterator() { + return list.iterator(); + } + public int size() { + return list.size(); + } + } + private static class NewAbstractSet extends NewAbstractCollection { + } + }