Thank you Pavel, Paul, Roger and Daniel for your reviewing.

On 5/3/17 5:02 AM, Roger Riggs wrote:
But ": Must throw ClassCastException for parameter which is not Comparable."
in Empty navigableMap is much more useful.

And wrapping exceptions in exceptions makes debugging much harder, because it requires unwrapping the context and figuring out what the test was trying to
do and which was the relevant source line.

As the message and exception trace are all kept, it won't make debugging harder.

For example for EmptyNavigableMap.java:

No exception case:
        assertThrowsCCE(
            () -> {},
description + ": Must throw ClassCastException for parameter which is not Comparable.");

The output:

test EmptyNavigableMap.testSubMap("emptyNavigableMap().descendingMap().descendingMap()", {}): failure java.lang.AssertionError: emptyNavigableMap().descendingMap().descendingMap(): Must throw ClassCastException for parameter which is not Comparable.
Expected ClassCastException to be thrown, but nothing was thrown
    at EmptyNavigableMap.assertThrows(EmptyNavigableMap.java:76)
    at EmptyNavigableMap.assertThrowsCCE(EmptyNavigableMap.java:82)
    at EmptyNavigableMap.testSubMap(EmptyNavigableMap.java:227)
...
Caused by: java.lang.AssertionError: Expected ClassCastException to be thrown, but nothing was thrown
    at org.testng.Assert.expectThrows(Assert.java:1018)
    at org.testng.Assert.assertThrows(Assert.java:989)
    at EmptyNavigableMap.assertThrows(EmptyNavigableMap.java:74)
    ... 17 more

Wrong exception case:
        assertThrowsCCE(
            () -> {
                throw new NullPointerException();
            },
description + ": Must throw ClassCastException for parameter which is not Comparable.");

The output:

test EmptyNavigableMap.testSubMap("emptyNavigableMap().descendingMap().descendingMap()", {}): failure java.lang.AssertionError: emptyNavigableMap().descendingMap().descendingMap(): Must throw ClassCastException for parameter which is not Comparable. Expected ClassCastException to be thrown, but NullPointerException was thrown
    at EmptyNavigableMap.assertThrows(EmptyNavigableMap.java:76)
    at EmptyNavigableMap.assertThrowsCCE(EmptyNavigableMap.java:82)
    at EmptyNavigableMap.testSubMap(EmptyNavigableMap.java:227)
...
Caused by: java.lang.AssertionError: Expected ClassCastException to be thrown, but NullPointerException was thrown
    at org.testng.Assert.expectThrows(Assert.java:1013)
    at org.testng.Assert.assertThrows(Assert.java:989)
    at EmptyNavigableMap.assertThrows(EmptyNavigableMap.java:74)
    ... 17 more



I should probably try to file a bug against TestNG.assertThrows to add a variant with a message. Many/most of the TestNG asserts have variants with messages.

Good point!

- java/util/Map/Defaults.java:167 The {}'s around the lambda value are not necessary (like 166).
I'll remove it when push.

Thanks,
Amy

Reply via email to