8023897
: Replace/update/rename executeAndCatch in various tests to assertThrows
Reviewed-by: dfuchs, prappo, psandoz, rriggs
This commit is contained in:
parent
853c626781
commit
295faa8f79
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -179,119 +179,65 @@ public class ParallelPrefix {
|
||||
@Test
|
||||
public void testNPEs() {
|
||||
// null array
|
||||
assertThrows( () -> Arrays.parallelPrefix((int[]) null, Integer::max),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix((long []) null, Long::max),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix((double []) null, Double::max),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix((String []) null, String::concat),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((int[]) null, Integer::max));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((long []) null, Long::max));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((double []) null, Double::max));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((String []) null, String::concat));
|
||||
|
||||
// null array w/ range
|
||||
assertThrows( () -> Arrays.parallelPrefix((int[]) null, 0, 0, Integer::max),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix((long []) null, 0, 0, Long::max),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix((double []) null, 0, 0, Double::max),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix((String []) null, 0, 0, String::concat),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((int[]) null, 0, 0, Integer::max));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((long []) null, 0, 0, Long::max));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((double []) null, 0, 0, Double::max));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix((String []) null, 0, 0, String::concat));
|
||||
|
||||
// null op
|
||||
assertThrows( () -> Arrays.parallelPrefix(new int[] {}, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new long[] {}, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new double[] {}, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new String[] {}, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new int[] {}, null));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new long[] {}, null));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new double[] {}, null));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new String[] {}, null));
|
||||
|
||||
// null op w/ range
|
||||
assertThrows( () -> Arrays.parallelPrefix(new int[] {}, 0, 0, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new long[] {}, 0, 0, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new double[] {}, 0, 0, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new String[] {}, 0, 0, null),
|
||||
NullPointerException.class, "should throw NPE");
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new int[] {}, 0, 0, null));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new long[] {}, 0, 0, null));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new double[] {}, 0, 0, null));
|
||||
assertThrowsNPE(() -> Arrays.parallelPrefix(new String[] {}, 0, 0, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIAEs() {
|
||||
assertThrows( () -> Arrays.parallelPrefix(new int[] {}, 1, 0, Integer::max),
|
||||
IllegalArgumentException.class, "should throw IAE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new long[] {}, 1, 0, Long::max),
|
||||
IllegalArgumentException.class, "should throw IAE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new double[] {}, 1, 0, Double::max),
|
||||
IllegalArgumentException.class, "should throw IAE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new String[] {}, 1, 0, String::concat),
|
||||
IllegalArgumentException.class, "should throw IAE");
|
||||
assertThrowsIAE(() -> Arrays.parallelPrefix(new int[] {}, 1, 0, Integer::max));
|
||||
assertThrowsIAE(() -> Arrays.parallelPrefix(new long[] {}, 1, 0, Long::max));
|
||||
assertThrowsIAE(() -> Arrays.parallelPrefix(new double[] {}, 1, 0, Double::max));
|
||||
assertThrowsIAE(() -> Arrays.parallelPrefix(new String[] {}, 1, 0, String::concat));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAIOBEs() {
|
||||
public void testAIOOBEs() {
|
||||
// bad "fromIndex"
|
||||
assertThrows( () -> Arrays.parallelPrefix(new int[] {}, -1, 0, Integer::max),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new long[] {}, -1, 0, Long::max),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new double[] {}, -1, 0, Double::max),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new String[] {}, -1, 0, String::concat),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new int[] {}, -1, 0, Integer::max));
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new long[] {}, -1, 0, Long::max));
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new double[] {}, -1, 0, Double::max));
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new String[] {}, -1, 0, String::concat));
|
||||
|
||||
// bad "toIndex"
|
||||
assertThrows( () -> Arrays.parallelPrefix(new int[] {}, 0, 1, Integer::max),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new long[] {}, 0, 1, Long::max),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new double[] {}, 0, 1, Double::max),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrows( () -> Arrays.parallelPrefix(new String[] {}, 0, 1, String::concat),
|
||||
ArrayIndexOutOfBoundsException.class, "should throw AIOBE");
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new int[] {}, 0, 1, Integer::max));
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new long[] {}, 0, 1, Long::max));
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new double[] {}, 0, 1, Double::max));
|
||||
assertThrowsAIOOB(() -> Arrays.parallelPrefix(new String[] {}, 0, 1, String::concat));
|
||||
}
|
||||
|
||||
// "library" code
|
||||
|
||||
public interface Thrower<T extends Throwable> {
|
||||
|
||||
public void run() throws T;
|
||||
private void assertThrowsNPE(ThrowingRunnable r) {
|
||||
assertThrows(NullPointerException.class, r);
|
||||
}
|
||||
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) {
|
||||
assertThrows(thrower, throwable, null);
|
||||
private void assertThrowsIAE(ThrowingRunnable r) {
|
||||
assertThrows(IllegalArgumentException.class, r);
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) {
|
||||
Throwable thrown;
|
||||
try {
|
||||
thrower.run();
|
||||
thrown = null;
|
||||
} catch (Throwable caught) {
|
||||
thrown = caught;
|
||||
}
|
||||
|
||||
assertInstance(thrown, throwable,
|
||||
((null != message) ? message : "") +
|
||||
" Failed to throw " + throwable.getCanonicalName());
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Class<T> throwable, String message, Thrower<T>... throwers) {
|
||||
for(Thrower<T> thrower : throwers) {
|
||||
assertThrows(thrower, throwable, message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void assertInstance(Object actual, Class<?> expected) {
|
||||
assertInstance(expected.isInstance(actual), null);
|
||||
}
|
||||
|
||||
public static void assertInstance(Object actual, Class<?> expected, String message) {
|
||||
assertTrue(expected.isInstance(actual), message);
|
||||
private void assertThrowsAIOOB(ThrowingRunnable r) {
|
||||
assertThrows(ArrayIndexOutOfBoundsException.class, r);
|
||||
}
|
||||
|
||||
static void assertArraysEqual(int[] actual, int[] expected) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -32,7 +32,9 @@ import org.testng.annotations.Test;
|
||||
import java.util.Arrays;
|
||||
import java.util.Spliterators;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import org.testng.Assert.ThrowingRunnable;
|
||||
|
||||
import static org.testng.Assert.assertThrows;
|
||||
|
||||
public class StreamAndSpliterator {
|
||||
@Test
|
||||
@ -124,25 +126,11 @@ public class StreamAndSpliterator {
|
||||
assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, 0, 1, 0));
|
||||
}
|
||||
|
||||
void assertThrowsNPE(Runnable r) {
|
||||
NullPointerException caught = null;
|
||||
try {
|
||||
r.run();
|
||||
}
|
||||
catch (NullPointerException e) {
|
||||
caught = e;
|
||||
}
|
||||
assertNotNull(caught, "NullPointerException not thrown");
|
||||
void assertThrowsNPE(ThrowingRunnable r) {
|
||||
assertThrows(NullPointerException.class, r);
|
||||
}
|
||||
|
||||
void assertThrowsAIOOB(Runnable r) {
|
||||
ArrayIndexOutOfBoundsException caught = null;
|
||||
try {
|
||||
r.run();
|
||||
}
|
||||
catch (ArrayIndexOutOfBoundsException e) {
|
||||
caught = e;
|
||||
}
|
||||
assertNotNull(caught, "ArrayIndexOutOfBoundsException not thrown");
|
||||
void assertThrowsAIOOB(ThrowingRunnable r) {
|
||||
assertThrows(ArrayIndexOutOfBoundsException.class, r);
|
||||
}
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ import static java.util.stream.Collectors.toList;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
import static org.testng.Assert.assertThrows;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
@ -167,8 +168,8 @@ public class BitSetStreamTest extends SpliteratorTestHelper {
|
||||
|
||||
@Test(dataProvider = "BitSet.stream.spliterator")
|
||||
public void testIntNullPointerException(String description, Collection<Integer> exp, Supplier<Spliterator.OfInt> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining((IntConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance((IntConsumer) null));
|
||||
assertThrows(NullPointerException.class, () -> s.get().forEachRemaining((IntConsumer) null));
|
||||
assertThrows(NullPointerException.class, () -> s.get().tryAdvance((IntConsumer) null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "BitSet.stream.spliterator")
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -36,10 +36,12 @@ import java.util.Iterator;
|
||||
import java.util.NavigableMap;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.Assert.ThrowingRunnable;
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.annotations.DataProvider;
|
||||
|
||||
import static org.testng.Assert.fail;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
|
||||
@ -65,26 +67,27 @@ public class EmptyNavigableMap {
|
||||
((null != message) ? message : "") + " Not empty. ");
|
||||
}
|
||||
|
||||
public interface Thrower<T extends Throwable> {
|
||||
|
||||
public void run() throws T;
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) {
|
||||
assertThrows(thrower, throwable, null);
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) {
|
||||
Throwable result;
|
||||
private <T extends Throwable> void assertThrows(Class<T> throwableClass,
|
||||
ThrowingRunnable runnable,
|
||||
String message) {
|
||||
try {
|
||||
thrower.run();
|
||||
fail(((null != message) ? message : "") + "Failed to throw " + throwable.getCanonicalName() + ". ");
|
||||
return;
|
||||
} catch (Throwable caught) {
|
||||
result = caught;
|
||||
Assert.assertThrows(throwableClass, runnable);
|
||||
} catch (AssertionError e) {
|
||||
throw new AssertionError(String.format("%s%n%s",
|
||||
((null != message) ? message : ""), e.getMessage()), e);
|
||||
}
|
||||
}
|
||||
|
||||
assertInstance(result, throwable, ((null != message) ? message : "") + "Failed to throw " + throwable.getCanonicalName() + ". ");
|
||||
private void assertThrowsCCE(ThrowingRunnable r, String s) {
|
||||
assertThrows(ClassCastException.class, r, s);
|
||||
}
|
||||
|
||||
private void assertThrowsNPE(ThrowingRunnable r, String s) {
|
||||
assertThrows(NullPointerException.class, r, s);
|
||||
}
|
||||
|
||||
private void assertThrowsIAE(ThrowingRunnable r, String s) {
|
||||
assertThrows(IllegalArgumentException.class, r, s);
|
||||
}
|
||||
|
||||
public static final boolean isDescending(SortedMap<?,?> set) {
|
||||
@ -121,10 +124,9 @@ public class EmptyNavigableMap {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableMap<?,?>", dataProviderClass = EmptyNavigableMap.class)
|
||||
public void testContainsRequiresComparable(String description, NavigableMap<?,?> navigableMap) {
|
||||
assertThrows(() -> {
|
||||
assertThrowsCCE(() -> {
|
||||
navigableMap.containsKey(new Object());
|
||||
},
|
||||
ClassCastException.class,
|
||||
description + ": Compareable should be required");
|
||||
}
|
||||
|
||||
@ -175,14 +177,12 @@ public class EmptyNavigableMap {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableMap<?,?>", dataProviderClass = EmptyNavigableMap.class)
|
||||
public void testHeadMap(String description, NavigableMap navigableMap) {
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> { NavigableMap ss = navigableMap.headMap(null, false); },
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> { NavigableMap ss = navigableMap.headMap(new Object(), true); },
|
||||
ClassCastException.class,
|
||||
description + ": Must throw ClassCastException for non-Comparable element");
|
||||
|
||||
NavigableMap ss = navigableMap.headMap("1", false);
|
||||
@ -203,50 +203,44 @@ public class EmptyNavigableMap {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableMap<?,?>", dataProviderClass = EmptyNavigableMap.class)
|
||||
public void testSubMap(String description, NavigableMap navigableMap) {
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
SortedMap ss = navigableMap.subMap(null, BigInteger.TEN);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
SortedMap ss = navigableMap.subMap(BigInteger.ZERO, null);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
SortedMap ss = navigableMap.subMap(null, null);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
Object obj1 = new Object();
|
||||
Object obj2 = new Object();
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> {
|
||||
SortedMap ss = navigableMap.subMap(obj1, BigInteger.TEN);
|
||||
},
|
||||
ClassCastException.class, description
|
||||
+ ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
description + ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> {
|
||||
SortedMap ss = navigableMap.subMap(BigInteger.ZERO, obj2);
|
||||
},
|
||||
ClassCastException.class, description
|
||||
+ ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
description + ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> {
|
||||
SortedMap ss = navigableMap.subMap(obj1, obj2);
|
||||
},
|
||||
ClassCastException.class, description
|
||||
+ ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
description + ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
|
||||
// minimal range
|
||||
navigableMap.subMap(BigInteger.ZERO, false, BigInteger.ZERO, false);
|
||||
@ -257,12 +251,11 @@ public class EmptyNavigableMap {
|
||||
Object first = isDescending(navigableMap) ? BigInteger.TEN : BigInteger.ZERO;
|
||||
Object last = (BigInteger.ZERO == first) ? BigInteger.TEN : BigInteger.ZERO;
|
||||
|
||||
assertThrows(
|
||||
assertThrowsIAE(
|
||||
() -> {
|
||||
navigableMap.subMap(last, true, first, false);
|
||||
},
|
||||
IllegalArgumentException.class, description
|
||||
+ ": Must throw IllegalArgumentException when fromElement is not less than toElement.");
|
||||
description + ": Must throw IllegalArgumentException when fromElement is not less than toElement.");
|
||||
|
||||
navigableMap.subMap(first, true, last, false);
|
||||
}
|
||||
@ -280,10 +273,9 @@ public class EmptyNavigableMap {
|
||||
// slightly smaller
|
||||
NavigableMap ns = subMap.subMap(first, false, last, false);
|
||||
// slight expansion
|
||||
assertThrows(() -> {
|
||||
assertThrowsIAE(() -> {
|
||||
ns.subMap(first, true, last, true);
|
||||
},
|
||||
IllegalArgumentException.class,
|
||||
description + ": Expansion should not be allowed");
|
||||
|
||||
// much smaller
|
||||
@ -301,10 +293,9 @@ public class EmptyNavigableMap {
|
||||
NavigableMap ns = subMap.headMap(BigInteger.ONE, false);
|
||||
|
||||
// slight expansion
|
||||
assertThrows(() -> {
|
||||
assertThrowsIAE(() -> {
|
||||
ns.headMap(BigInteger.ONE, true);
|
||||
},
|
||||
IllegalArgumentException.class,
|
||||
description + ": Expansion should not be allowed");
|
||||
|
||||
// much smaller
|
||||
@ -322,10 +313,9 @@ public class EmptyNavigableMap {
|
||||
NavigableMap ns = subMap.tailMap(BigInteger.ONE, false);
|
||||
|
||||
// slight expansion
|
||||
assertThrows(() -> {
|
||||
assertThrowsIAE(() -> {
|
||||
ns.tailMap(BigInteger.ONE, true);
|
||||
},
|
||||
IllegalArgumentException.class,
|
||||
description + ": Expansion should not be allowed");
|
||||
|
||||
// much smaller
|
||||
@ -337,15 +327,15 @@ public class EmptyNavigableMap {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableMap<?,?>", dataProviderClass = EmptyNavigableMap.class)
|
||||
public void testTailMap(String description, NavigableMap navigableMap) {
|
||||
assertThrows(() -> {
|
||||
assertThrowsNPE(() -> {
|
||||
navigableMap.tailMap(null);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(() -> {
|
||||
assertThrowsCCE(() -> {
|
||||
navigableMap.tailMap(new Object());
|
||||
}, ClassCastException.class);
|
||||
},
|
||||
description);
|
||||
|
||||
NavigableMap ss = navigableMap.tailMap("1", true);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -37,10 +37,12 @@ import java.util.NoSuchElementException;
|
||||
import java.util.NavigableSet;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.Assert.ThrowingRunnable;
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.annotations.DataProvider;
|
||||
|
||||
import static org.testng.Assert.fail;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
import static org.testng.Assert.assertSame;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
@ -67,26 +69,31 @@ public class EmptyNavigableSet {
|
||||
((null != message) ? message : "") + " Not empty. ");
|
||||
}
|
||||
|
||||
public interface Thrower<T extends Throwable> {
|
||||
|
||||
public void run() throws T;
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) {
|
||||
assertThrows(thrower, throwable, null);
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) {
|
||||
Throwable result;
|
||||
private <T extends Throwable> void assertThrows(Class<T> throwableClass,
|
||||
ThrowingRunnable runnable,
|
||||
String message) {
|
||||
try {
|
||||
thrower.run();
|
||||
fail(((null != message) ? message : "") + "Failed to throw " + throwable.getCanonicalName() + ". ");
|
||||
return;
|
||||
} catch (Throwable caught) {
|
||||
result = caught;
|
||||
Assert.assertThrows(throwableClass, runnable);
|
||||
} catch (AssertionError e) {
|
||||
throw new AssertionError(String.format("%s%n%s",
|
||||
((null != message) ? message : ""), e.getMessage()), e);
|
||||
}
|
||||
}
|
||||
|
||||
assertInstance(result, throwable, ((null != message) ? message : "") + "Failed to throw " + throwable.getCanonicalName() + ". ");
|
||||
private void assertThrowsCCE(ThrowingRunnable r, String s) {
|
||||
assertThrows(ClassCastException.class, r, s);
|
||||
}
|
||||
|
||||
private void assertThrowsNPE(ThrowingRunnable r, String s) {
|
||||
assertThrows(NullPointerException.class, r, s);
|
||||
}
|
||||
|
||||
private void assertThrowsIAE(ThrowingRunnable r, String s) {
|
||||
assertThrows(IllegalArgumentException.class, r, s);
|
||||
}
|
||||
|
||||
private void assertThrowsNSEE(ThrowingRunnable r, String s) {
|
||||
assertThrows(NoSuchElementException.class, r, s);
|
||||
}
|
||||
|
||||
public static final boolean isDescending(SortedSet<?> set) {
|
||||
@ -123,10 +130,9 @@ public class EmptyNavigableSet {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
|
||||
public void testContainsRequiresComparable(String description, NavigableSet<?> navigableSet) {
|
||||
assertThrows(() -> {
|
||||
assertThrowsCCE(() -> {
|
||||
navigableSet.contains(new Object());
|
||||
},
|
||||
ClassCastException.class,
|
||||
description + ": Compareable should be required");
|
||||
}
|
||||
|
||||
@ -176,9 +182,9 @@ public class EmptyNavigableSet {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
|
||||
public void testFirst(String description, NavigableSet<?> navigableSet) {
|
||||
assertThrows(() -> {
|
||||
assertThrowsNSEE(() -> {
|
||||
navigableSet.first();
|
||||
}, NoSuchElementException.class, description);
|
||||
}, description);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -186,14 +192,12 @@ public class EmptyNavigableSet {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
|
||||
public void testHeadSet(String description, NavigableSet navigableSet) {
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> { NavigableSet ns = navigableSet.headSet(null, false); },
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> { NavigableSet ns = navigableSet.headSet(new Object(), true); },
|
||||
ClassCastException.class,
|
||||
description + ": Must throw ClassCastException for non-Comparable element");
|
||||
|
||||
NavigableSet ns = navigableSet.headSet("1", false);
|
||||
@ -206,9 +210,9 @@ public class EmptyNavigableSet {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
|
||||
public void testLast(String description, NavigableSet<?> navigableSet) {
|
||||
assertThrows(() -> {
|
||||
assertThrowsNSEE(() -> {
|
||||
navigableSet.last();
|
||||
}, NoSuchElementException.class, description);
|
||||
}, description);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -224,50 +228,44 @@ public class EmptyNavigableSet {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
|
||||
public void testSubSet(String description, NavigableSet navigableSet) {
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
SortedSet ss = navigableSet.subSet(null, BigInteger.TEN);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
SortedSet ss = navigableSet.subSet(BigInteger.ZERO, null);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
SortedSet ss = navigableSet.subSet(null, null);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
Object obj1 = new Object();
|
||||
Object obj2 = new Object();
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> {
|
||||
SortedSet ss = navigableSet.subSet(obj1, BigInteger.TEN);
|
||||
},
|
||||
ClassCastException.class, description
|
||||
+ ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
description + ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> {
|
||||
SortedSet ss = navigableSet.subSet(BigInteger.ZERO, obj2);
|
||||
},
|
||||
ClassCastException.class, description
|
||||
+ ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
description + ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
|
||||
assertThrows(
|
||||
assertThrowsCCE(
|
||||
() -> {
|
||||
SortedSet ss = navigableSet.subSet(obj1, obj2);
|
||||
},
|
||||
ClassCastException.class, description
|
||||
+ ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
description + ": Must throw ClassCastException for parameter which is not Comparable.");
|
||||
|
||||
// minimal range
|
||||
navigableSet.subSet(BigInteger.ZERO, false, BigInteger.ZERO, false);
|
||||
@ -278,11 +276,11 @@ public class EmptyNavigableSet {
|
||||
Object first = isDescending(navigableSet) ? BigInteger.TEN : BigInteger.ZERO;
|
||||
Object last = (BigInteger.ZERO == first) ? BigInteger.TEN : BigInteger.ZERO;
|
||||
|
||||
assertThrows(
|
||||
assertThrowsIAE(
|
||||
() -> {
|
||||
navigableSet.subSet(last, true, first, false);
|
||||
},
|
||||
IllegalArgumentException.class, description
|
||||
description
|
||||
+ ": Must throw IllegalArgumentException when fromElement is not less than toElement.");
|
||||
|
||||
navigableSet.subSet(first, true, last, false);
|
||||
@ -301,10 +299,9 @@ public class EmptyNavigableSet {
|
||||
// slightly smaller
|
||||
NavigableSet ns = subSet.subSet(first, false, last, false);
|
||||
// slight expansion
|
||||
assertThrows(() -> {
|
||||
assertThrowsIAE(() -> {
|
||||
ns.subSet(first, true, last, true);
|
||||
},
|
||||
IllegalArgumentException.class,
|
||||
description + ": Expansion should not be allowed");
|
||||
|
||||
// much smaller
|
||||
@ -322,10 +319,9 @@ public class EmptyNavigableSet {
|
||||
NavigableSet ns = subSet.headSet(BigInteger.ONE, false);
|
||||
|
||||
// slight expansion
|
||||
assertThrows(() -> {
|
||||
assertThrowsIAE(() -> {
|
||||
ns.headSet(BigInteger.ONE, true);
|
||||
},
|
||||
IllegalArgumentException.class,
|
||||
description + ": Expansion should not be allowed");
|
||||
|
||||
// much smaller
|
||||
@ -343,10 +339,9 @@ public class EmptyNavigableSet {
|
||||
NavigableSet ns = subSet.tailSet(BigInteger.ONE, false);
|
||||
|
||||
// slight expansion
|
||||
assertThrows(() -> {
|
||||
assertThrowsIAE(() -> {
|
||||
ns.tailSet(BigInteger.ONE, true);
|
||||
},
|
||||
IllegalArgumentException.class,
|
||||
description + ": Expansion should not be allowed");
|
||||
|
||||
// much smaller
|
||||
@ -358,15 +353,14 @@ public class EmptyNavigableSet {
|
||||
*/
|
||||
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
|
||||
public void testTailSet(String description, NavigableSet navigableSet) {
|
||||
assertThrows(() -> {
|
||||
assertThrowsNPE(() -> {
|
||||
navigableSet.tailSet(null);
|
||||
},
|
||||
NullPointerException.class,
|
||||
description + ": Must throw NullPointerException for null element");
|
||||
|
||||
assertThrows(() -> {
|
||||
assertThrowsCCE(() -> {
|
||||
navigableSet.tailSet(new Object());
|
||||
}, ClassCastException.class);
|
||||
}, description);
|
||||
|
||||
NavigableSet ss = navigableSet.tailSet("1", true);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -21,16 +21,16 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.PrimitiveIterator;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.DoubleConsumer;
|
||||
import java.util.function.IntConsumer;
|
||||
import java.util.function.LongConsumer;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import org.testng.Assert.ThrowingRunnable;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertThrows;
|
||||
|
||||
/**
|
||||
* @test
|
||||
@ -53,8 +53,8 @@ public class PrimitiveIteratorDefaults {
|
||||
}
|
||||
};
|
||||
|
||||
executeAndCatch(() -> i.forEachRemaining((IntConsumer) null));
|
||||
executeAndCatch(() -> i.forEachRemaining((Consumer<Integer>) null));
|
||||
assertThrowsNPE(() -> i.forEachRemaining((IntConsumer) null));
|
||||
assertThrowsNPE(() -> i.forEachRemaining((Consumer<Integer>) null));
|
||||
}
|
||||
|
||||
public void testLongForEachRemainingWithNull() {
|
||||
@ -70,8 +70,8 @@ public class PrimitiveIteratorDefaults {
|
||||
}
|
||||
};
|
||||
|
||||
executeAndCatch(() -> i.forEachRemaining((LongConsumer) null));
|
||||
executeAndCatch(() -> i.forEachRemaining((Consumer<Long>) null));
|
||||
assertThrowsNPE(() -> i.forEachRemaining((LongConsumer) null));
|
||||
assertThrowsNPE(() -> i.forEachRemaining((Consumer<Long>) null));
|
||||
}
|
||||
|
||||
public void testDoubleForEachRemainingWithNull() {
|
||||
@ -87,29 +87,12 @@ public class PrimitiveIteratorDefaults {
|
||||
}
|
||||
};
|
||||
|
||||
executeAndCatch(() -> i.forEachRemaining((DoubleConsumer) null));
|
||||
executeAndCatch(() -> i.forEachRemaining((Consumer<Double>) null));
|
||||
assertThrowsNPE(() -> i.forEachRemaining((DoubleConsumer) null));
|
||||
assertThrowsNPE(() -> i.forEachRemaining((Consumer<Double>) null));
|
||||
}
|
||||
|
||||
private void executeAndCatch(Runnable r) {
|
||||
executeAndCatch(NullPointerException.class, r);
|
||||
}
|
||||
|
||||
private void executeAndCatch(Class<? extends Exception> expected, Runnable r) {
|
||||
Exception caught = null;
|
||||
try {
|
||||
r.run();
|
||||
}
|
||||
catch (Exception e) {
|
||||
caught = e;
|
||||
}
|
||||
|
||||
assertNotNull(caught,
|
||||
String.format("No Exception was thrown, expected an Exception of %s to be thrown",
|
||||
expected.getName()));
|
||||
assertTrue(expected.isInstance(caught),
|
||||
String.format("Exception thrown %s not an instance of %s",
|
||||
caught.getClass().getName(), expected.getName()));
|
||||
private void assertThrowsNPE(ThrowingRunnable r) {
|
||||
assertThrows(NullPointerException.class, r);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -53,15 +53,19 @@ import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.testng.Assert.ThrowingRunnable;
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.annotations.DataProvider;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import static org.testng.Assert.fail;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
import static org.testng.Assert.assertNull;
|
||||
import static org.testng.Assert.assertSame;
|
||||
import static org.testng.Assert.assertThrows;
|
||||
|
||||
public class Defaults {
|
||||
|
||||
@ -159,14 +163,8 @@ public class Defaults {
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=nonNull values=nonNull")
|
||||
public static void testReplaceAllNoNullReplacement(String description, Map<IntegerEnum, String> map) {
|
||||
assertThrows(
|
||||
() -> { map.replaceAll(null); },
|
||||
NullPointerException.class,
|
||||
description);
|
||||
assertThrows(
|
||||
() -> { map.replaceAll((k,v) -> null); },
|
||||
NullPointerException.class,
|
||||
description + " should not allow replacement with null value");
|
||||
assertThrowsNPE(() -> map.replaceAll(null));
|
||||
assertThrowsNPE(() -> map.replaceAll((k,v) -> null)); //should not allow replacement with null value
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=withNull values=withNull")
|
||||
@ -209,7 +207,7 @@ public class Defaults {
|
||||
public void testReplaceKVNoNulls(String description, Map<IntegerEnum, String> map) {
|
||||
assertTrue(map.containsKey(FIRST_KEY), "expected key missing");
|
||||
assertSame(map.get(FIRST_KEY), FIRST_VALUE, "found wrong value");
|
||||
assertThrows( () -> {map.replace(FIRST_KEY, null);}, NullPointerException.class, description + ": should throw NPE");
|
||||
assertThrowsNPE(() -> map.replace(FIRST_KEY, null));
|
||||
assertSame(map.replace(FIRST_KEY, EXTRA_VALUE), FIRST_VALUE, description + ": replaced wrong value");
|
||||
assertSame(map.get(FIRST_KEY), EXTRA_VALUE, "found wrong value");
|
||||
}
|
||||
@ -248,8 +246,13 @@ public class Defaults {
|
||||
public void testReplaceKVVNoNulls(String description, Map<IntegerEnum, String> map) {
|
||||
assertTrue(map.containsKey(FIRST_KEY), "expected key missing");
|
||||
assertSame(map.get(FIRST_KEY), FIRST_VALUE, "found wrong value");
|
||||
assertThrows( () -> {map.replace(FIRST_KEY, FIRST_VALUE, null);}, NullPointerException.class, description + ": should throw NPE");
|
||||
assertThrows( () -> {if (!map.replace(FIRST_KEY, null, EXTRA_VALUE)) throw new NullPointerException("default returns false rather than throwing");}, NullPointerException.class, description + ": should throw NPE");
|
||||
assertThrowsNPE(() -> map.replace(FIRST_KEY, FIRST_VALUE, null));
|
||||
assertThrowsNPE(
|
||||
() -> {
|
||||
if (!map.replace(FIRST_KEY, null, EXTRA_VALUE)) {
|
||||
throw new NullPointerException("default returns false rather than throwing");
|
||||
}
|
||||
});
|
||||
assertTrue(map.replace(FIRST_KEY, FIRST_VALUE, EXTRA_VALUE), description + ": replaced wrong value");
|
||||
assertSame(map.get(FIRST_KEY), EXTRA_VALUE, "found wrong value");
|
||||
}
|
||||
@ -319,9 +322,7 @@ public class Defaults {
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=all values=all")
|
||||
public void testComputeIfAbsentNullFunction(String description, Map<IntegerEnum, String> map) {
|
||||
assertThrows( () -> { map.computeIfAbsent(KEYS[1], null);},
|
||||
NullPointerException.class,
|
||||
"Should throw NPE");
|
||||
assertThrowsNPE(() -> map.computeIfAbsent(KEYS[1], null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=withNull values=withNull")
|
||||
@ -366,9 +367,7 @@ public class Defaults {
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=all values=all")
|
||||
public void testComputeIfPresentNullFunction(String description, Map<IntegerEnum, String> map) {
|
||||
assertThrows( () -> { map.computeIfPresent(KEYS[1], null);},
|
||||
NullPointerException.class,
|
||||
"Should throw NPE");
|
||||
assertThrowsNPE(() -> map.computeIfPresent(KEYS[1], null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=withNull values=withNull")
|
||||
@ -459,9 +458,7 @@ public class Defaults {
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=all values=all")
|
||||
public void testComputeNullFunction(String description, Map<IntegerEnum, String> map) {
|
||||
assertThrows( () -> { map.compute(KEYS[1], null);},
|
||||
NullPointerException.class,
|
||||
"Should throw NPE");
|
||||
assertThrowsNPE(() -> map.compute(KEYS[1], null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "MergeCases")
|
||||
@ -531,9 +528,7 @@ public class Defaults {
|
||||
|
||||
@Test(dataProvider = "Map<IntegerEnum,String> rw=true keys=all values=all")
|
||||
public void testMergeNullMerger(String description, Map<IntegerEnum, String> map) {
|
||||
assertThrows( () -> { map.merge(KEYS[1], VALUES[1], null);},
|
||||
NullPointerException.class,
|
||||
"Should throw NPE");
|
||||
assertThrowsNPE(() -> map.merge(KEYS[1], VALUES[1], null));
|
||||
}
|
||||
|
||||
/** A function that flipflops between running two other functions. */
|
||||
@ -973,41 +968,8 @@ public class Defaults {
|
||||
return cases;
|
||||
}
|
||||
|
||||
public interface Thrower<T extends Throwable> {
|
||||
|
||||
public void run() throws T;
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) {
|
||||
assertThrows(thrower, throwable, null);
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) {
|
||||
Throwable thrown;
|
||||
try {
|
||||
thrower.run();
|
||||
thrown = null;
|
||||
} catch (Throwable caught) {
|
||||
thrown = caught;
|
||||
}
|
||||
|
||||
assertInstance(thrown, throwable,
|
||||
((null != message) ? message : "") +
|
||||
" Failed to throw " + throwable.getCanonicalName());
|
||||
}
|
||||
|
||||
public static <T extends Throwable> void assertThrows(Class<T> throwable, String message, Thrower<T>... throwers) {
|
||||
for (Thrower<T> thrower : throwers) {
|
||||
assertThrows(thrower, throwable, message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void assertInstance(Object actual, Class<?> expected) {
|
||||
assertInstance(expected.isInstance(actual), null);
|
||||
}
|
||||
|
||||
public static void assertInstance(Object actual, Class<?> expected, String message) {
|
||||
assertTrue(expected.isInstance(actual), message);
|
||||
public static void assertThrowsNPE(ThrowingRunnable r) {
|
||||
assertThrows(NullPointerException.class, r);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -21,14 +21,13 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.LongAdder;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
@ -172,12 +171,12 @@ public class RandomTest {
|
||||
*/
|
||||
public void testBadStreamSize() {
|
||||
Random r = new Random();
|
||||
executeAndCatchIAE(() -> r.ints(-1L));
|
||||
executeAndCatchIAE(() -> r.ints(-1L, 2, 3));
|
||||
executeAndCatchIAE(() -> r.longs(-1L));
|
||||
executeAndCatchIAE(() -> r.longs(-1L, -1L, 1L));
|
||||
executeAndCatchIAE(() -> r.doubles(-1L));
|
||||
executeAndCatchIAE(() -> r.doubles(-1L, .5, .6));
|
||||
assertThrowsIAE(() -> r.ints(-1L));
|
||||
assertThrowsIAE(() -> r.ints(-1L, 2, 3));
|
||||
assertThrowsIAE(() -> r.longs(-1L));
|
||||
assertThrowsIAE(() -> r.longs(-1L, -1L, 1L));
|
||||
assertThrowsIAE(() -> r.doubles(-1L));
|
||||
assertThrowsIAE(() -> r.doubles(-1L, .5, .6));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -186,10 +185,10 @@ public class RandomTest {
|
||||
*/
|
||||
public void testBadStreamBounds() {
|
||||
Random r = new Random();
|
||||
executeAndCatchIAE(() -> r.ints(2, 1));
|
||||
executeAndCatchIAE(() -> r.ints(10, 42, 42));
|
||||
executeAndCatchIAE(() -> r.longs(-1L, -1L));
|
||||
executeAndCatchIAE(() -> r.longs(10, 1L, -2L));
|
||||
assertThrowsIAE(() -> r.ints(2, 1));
|
||||
assertThrowsIAE(() -> r.ints(10, 42, 42));
|
||||
assertThrowsIAE(() -> r.longs(-1L, -1L));
|
||||
assertThrowsIAE(() -> r.longs(10, 1L, -2L));
|
||||
|
||||
testDoubleBadOriginBound((o, b) -> r.doubles(10, o, b));
|
||||
}
|
||||
@ -198,45 +197,28 @@ public class RandomTest {
|
||||
static final double FINITE = Math.PI;
|
||||
|
||||
void testDoubleBadOriginBound(BiConsumer<Double, Double> bi) {
|
||||
executeAndCatchIAE(() -> bi.accept(17.0, 2.0));
|
||||
executeAndCatchIAE(() -> bi.accept(0.0, 0.0));
|
||||
executeAndCatchIAE(() -> bi.accept(Double.NaN, FINITE));
|
||||
executeAndCatchIAE(() -> bi.accept(FINITE, Double.NaN));
|
||||
executeAndCatchIAE(() -> bi.accept(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY));
|
||||
assertThrowsIAE(() -> bi.accept(17.0, 2.0));
|
||||
assertThrowsIAE(() -> bi.accept(0.0, 0.0));
|
||||
assertThrowsIAE(() -> bi.accept(Double.NaN, FINITE));
|
||||
assertThrowsIAE(() -> bi.accept(FINITE, Double.NaN));
|
||||
assertThrowsIAE(() -> bi.accept(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY));
|
||||
|
||||
// Returns NaN
|
||||
// executeAndCatchIAE(() -> bi.accept(Double.NEGATIVE_INFINITY, FINITE));
|
||||
// executeAndCatchIAE(() -> bi.accept(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY));
|
||||
// assertThrowsIAE(() -> bi.accept(Double.NEGATIVE_INFINITY, FINITE));
|
||||
// assertThrowsIAE(() -> bi.accept(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY));
|
||||
|
||||
executeAndCatchIAE(() -> bi.accept(FINITE, Double.NEGATIVE_INFINITY));
|
||||
assertThrowsIAE(() -> bi.accept(FINITE, Double.NEGATIVE_INFINITY));
|
||||
|
||||
// Returns Double.MAX_VALUE
|
||||
// executeAndCatchIAE(() -> bi.accept(FINITE, Double.POSITIVE_INFINITY));
|
||||
// assertThrowsIAE(() -> bi.accept(FINITE, Double.POSITIVE_INFINITY));
|
||||
|
||||
executeAndCatchIAE(() -> bi.accept(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY));
|
||||
executeAndCatchIAE(() -> bi.accept(Double.POSITIVE_INFINITY, FINITE));
|
||||
executeAndCatchIAE(() -> bi.accept(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
|
||||
assertThrowsIAE(() -> bi.accept(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY));
|
||||
assertThrowsIAE(() -> bi.accept(Double.POSITIVE_INFINITY, FINITE));
|
||||
assertThrowsIAE(() -> bi.accept(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY));
|
||||
}
|
||||
|
||||
private void executeAndCatchIAE(Runnable r) {
|
||||
executeAndCatch(IllegalArgumentException.class, r);
|
||||
}
|
||||
|
||||
private void executeAndCatch(Class<? extends Exception> expected, Runnable r) {
|
||||
Exception caught = null;
|
||||
try {
|
||||
r.run();
|
||||
}
|
||||
catch (Exception e) {
|
||||
caught = e;
|
||||
}
|
||||
|
||||
assertNotNull(caught,
|
||||
String.format("No Exception was thrown, expected an Exception of %s to be thrown",
|
||||
expected.getName()));
|
||||
Assert.assertTrue(expected.isInstance(caught),
|
||||
String.format("Exception thrown %s not an instance of %s",
|
||||
caught.getClass().getName(), expected.getName()));
|
||||
private void assertThrowsIAE(ThrowingRunnable r) {
|
||||
assertThrows(IllegalArgumentException.class, r);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -212,16 +212,16 @@ public class SpliteratorCollisions extends SpliteratorTestHelper {
|
||||
void testNullPointerException(String description,
|
||||
Collection<HashableInteger> exp,
|
||||
Supplier<Spliterator<HashableInteger>> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining(null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance(null));
|
||||
assertThrowsNPE(() -> s.get().forEachRemaining(null));
|
||||
assertThrowsNPE(() -> s.get().tryAdvance(null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "HashableIntSpliteratorWithNull")
|
||||
void testNullPointerExceptionWithNull(String description,
|
||||
Collection<HashableInteger> exp,
|
||||
Supplier<Spliterator<HashableInteger>> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining(null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance(null));
|
||||
assertThrowsNPE(() -> s.get().forEachRemaining(null));
|
||||
assertThrowsNPE(() -> s.get().tryAdvance(null));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -21,9 +21,6 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.ConcurrentModificationException;
|
||||
@ -42,8 +39,11 @@ import java.util.Vector;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import org.testng.Assert.ThrowingRunnable;
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertThrows;
|
||||
|
||||
/**
|
||||
* @test
|
||||
@ -125,7 +125,7 @@ public class SpliteratorFailFastTest extends SpliteratorLateBindingFailFastHelpe
|
||||
});
|
||||
source.update();
|
||||
|
||||
executeAndCatch(() -> s.tryAdvance(e -> {
|
||||
assertThrowsCME(() -> s.tryAdvance(e -> {
|
||||
}));
|
||||
}
|
||||
|
||||
@ -137,7 +137,7 @@ public class SpliteratorFailFastTest extends SpliteratorLateBindingFailFastHelpe
|
||||
});
|
||||
source.update();
|
||||
|
||||
executeAndCatch(() -> s.forEachRemaining(e -> {
|
||||
assertThrowsCME(() -> s.forEachRemaining(e -> {
|
||||
}));
|
||||
}
|
||||
}
|
||||
@ -147,7 +147,7 @@ public class SpliteratorFailFastTest extends SpliteratorLateBindingFailFastHelpe
|
||||
Source<T> source = ss.get();
|
||||
Spliterator<T> s = source.spliterator();
|
||||
|
||||
executeAndCatch(() -> s.forEachRemaining(e -> {
|
||||
assertThrowsCME(() -> s.forEachRemaining(e -> {
|
||||
source.update();
|
||||
}));
|
||||
}
|
||||
@ -161,7 +161,7 @@ public class SpliteratorFailFastTest extends SpliteratorLateBindingFailFastHelpe
|
||||
s.estimateSize();
|
||||
source.update();
|
||||
|
||||
executeAndCatch(() -> s.tryAdvance(e -> {
|
||||
assertThrowsCME(() -> s.tryAdvance(e -> {
|
||||
}));
|
||||
}
|
||||
|
||||
@ -172,30 +172,13 @@ public class SpliteratorFailFastTest extends SpliteratorLateBindingFailFastHelpe
|
||||
s.estimateSize();
|
||||
source.update();
|
||||
|
||||
executeAndCatch(() -> s.forEachRemaining(e -> {
|
||||
assertThrowsCME(() -> s.forEachRemaining(e -> {
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
private void executeAndCatch(Runnable r) {
|
||||
executeAndCatch(ConcurrentModificationException.class, r);
|
||||
}
|
||||
|
||||
private void executeAndCatch(Class<? extends Exception> expected, Runnable r) {
|
||||
Exception caught = null;
|
||||
try {
|
||||
r.run();
|
||||
}
|
||||
catch (Exception e) {
|
||||
caught = e;
|
||||
}
|
||||
|
||||
assertNotNull(caught,
|
||||
String.format("No Exception was thrown, expected an Exception of %s to be thrown",
|
||||
expected.getName()));
|
||||
assertTrue(expected.isInstance(caught),
|
||||
String.format("Exception thrown %s not an instance of %s",
|
||||
caught.getClass().getName(), expected.getName()));
|
||||
private void assertThrowsCME(ThrowingRunnable r) {
|
||||
assertThrows(ConcurrentModificationException.class, r);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -666,8 +666,8 @@ public class SpliteratorTraversingAndSplittingTest extends SpliteratorTestHelper
|
||||
|
||||
@Test(dataProvider = "Spliterator<Integer>")
|
||||
public void testNullPointerException(String description, Collection<Integer> exp, Supplier<Spliterator<Integer>> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining(null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance(null));
|
||||
assertThrowsNPE(() -> s.get().forEachRemaining(null));
|
||||
assertThrowsNPE(() -> s.get().tryAdvance(null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Spliterator<Integer>")
|
||||
@ -866,8 +866,8 @@ public class SpliteratorTraversingAndSplittingTest extends SpliteratorTestHelper
|
||||
|
||||
@Test(dataProvider = "Spliterator.OfInt")
|
||||
public void testIntNullPointerException(String description, Collection<Integer> exp, Supplier<Spliterator.OfInt> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining((IntConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance((IntConsumer) null));
|
||||
assertThrowsNPE(() -> s.get().forEachRemaining((IntConsumer) null));
|
||||
assertThrowsNPE(() -> s.get().tryAdvance((IntConsumer) null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Spliterator.OfInt")
|
||||
@ -1009,8 +1009,8 @@ public class SpliteratorTraversingAndSplittingTest extends SpliteratorTestHelper
|
||||
|
||||
@Test(dataProvider = "Spliterator.OfLong")
|
||||
public void testLongNullPointerException(String description, Collection<Long> exp, Supplier<Spliterator.OfLong> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining((LongConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance((LongConsumer) null));
|
||||
assertThrowsNPE(() -> s.get().forEachRemaining((LongConsumer) null));
|
||||
assertThrowsNPE(() -> s.get().tryAdvance((LongConsumer) null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Spliterator.OfLong")
|
||||
@ -1152,8 +1152,8 @@ public class SpliteratorTraversingAndSplittingTest extends SpliteratorTestHelper
|
||||
|
||||
@Test(dataProvider = "Spliterator.OfDouble")
|
||||
public void testDoubleNullPointerException(String description, Collection<Double> exp, Supplier<Spliterator.OfDouble> s) {
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().forEachRemaining((DoubleConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> s.get().tryAdvance((DoubleConsumer) null));
|
||||
assertThrowsNPE(() -> s.get().forEachRemaining((DoubleConsumer) null));
|
||||
assertThrowsNPE(() -> s.get().tryAdvance((DoubleConsumer) null));
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Spliterator.OfDouble")
|
||||
|
@ -26,8 +26,6 @@ import java.util.function.*;
|
||||
import java.util.stream.LambdaTestHelpers;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.fail;
|
||||
|
||||
/**
|
||||
* Assertion methods for spliterators, to be called from other tests
|
||||
@ -224,22 +222,22 @@ public class SpliteratorTestHelper {
|
||||
// directly test the primitive methods
|
||||
if (sp instanceof Spliterator.OfInt) {
|
||||
Spliterator.OfInt psp = (Spliterator.OfInt) sp;
|
||||
executeAndCatch(NullPointerException.class, () -> psp.forEachRemaining((IntConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> psp.tryAdvance((IntConsumer) null));
|
||||
assertThrowsNPE(() -> psp.forEachRemaining((IntConsumer) null));
|
||||
assertThrowsNPE(() -> psp.tryAdvance((IntConsumer) null));
|
||||
}
|
||||
else if (sp instanceof Spliterator.OfLong) {
|
||||
Spliterator.OfLong psp = (Spliterator.OfLong) sp;
|
||||
executeAndCatch(NullPointerException.class, () -> psp.forEachRemaining((LongConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> psp.tryAdvance((LongConsumer) null));
|
||||
assertThrowsNPE(() -> psp.forEachRemaining((LongConsumer) null));
|
||||
assertThrowsNPE(() -> psp.tryAdvance((LongConsumer) null));
|
||||
}
|
||||
else if (sp instanceof Spliterator.OfDouble) {
|
||||
Spliterator.OfDouble psp = (Spliterator.OfDouble) sp;
|
||||
executeAndCatch(NullPointerException.class, () -> psp.forEachRemaining((DoubleConsumer) null));
|
||||
executeAndCatch(NullPointerException.class, () -> psp.tryAdvance((DoubleConsumer) null));
|
||||
assertThrowsNPE(() -> psp.forEachRemaining((DoubleConsumer) null));
|
||||
assertThrowsNPE(() -> psp.tryAdvance((DoubleConsumer) null));
|
||||
}
|
||||
else {
|
||||
executeAndCatch(NullPointerException.class, () -> sp.forEachRemaining(null));
|
||||
executeAndCatch(NullPointerException.class, () -> sp.tryAdvance(null));
|
||||
assertThrowsNPE(() -> sp.forEachRemaining(null));
|
||||
assertThrowsNPE(() -> sp.tryAdvance(null));
|
||||
}
|
||||
}
|
||||
|
||||
@ -653,21 +651,8 @@ public class SpliteratorTestHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public static void executeAndCatch(Class<? extends Exception> expected, Runnable r) {
|
||||
Exception caught = null;
|
||||
try {
|
||||
r.run();
|
||||
}
|
||||
catch (Exception e) {
|
||||
caught = e;
|
||||
}
|
||||
|
||||
assertNotNull(caught,
|
||||
String.format("No Exception was thrown, expected an Exception of %s to be thrown",
|
||||
expected.getName()));
|
||||
assertTrue(expected.isInstance(caught),
|
||||
String.format("Exception thrown %s not an instance of %s",
|
||||
caught.getClass().getName(), expected.getName()));
|
||||
public static void assertThrowsNPE(ThrowingRunnable r) {
|
||||
assertThrows(NullPointerException.class, r);
|
||||
}
|
||||
|
||||
public static<U> void mixedTraverseAndSplit(Consumer<U> b, Spliterator<U> splTop) {
|
||||
|
Loading…
Reference in New Issue
Block a user