JDK 13 RFR of JDK-8222430: Add tests for ElementKind predicates
Jonathan Gibbons
jonathan.gibbons at oracle.com
Mon Apr 15 22:41:31 UTC 2019
+1
-- Jon
On 04/12/2019 02:35 PM, Joe Darcy wrote:
> Hello,
>
> Ahead of some amber work, please review the addition of a test for the
> ElementKind primitives:
>
> JDK-8222430: Add tests for ElementKind predicates
> http://cr.openjdk.java.net/~darcy/8222430.0/
>
> New test sans standard license below.
>
> Thanks,
>
> -Joe
>
> // license omitted here for brevity
>
> /*
> * @test
> * @bug 8222430
> * @summary Test various predicates of ElementKind.
> */
>
> import java.util.Set;
> import java.util.function.Predicate;
> import javax.lang.model.element.ElementKind;
>
> /**
> * Test the isClass, isField, and isInterface predicates of ElementKind.
> */
> public class TestElementKindPredicates {
> public static void main(String... args) {
> Set<ElementKind> ALL_KINDS = Set.of(ElementKind.values());
>
> // isClass: Returns true if this is a kind of class: either
> CLASS or ENUM.
> test(ALL_KINDS,
> (ElementKind k) -> Set.of(ElementKind.CLASS,
> ElementKind.ENUM).contains(k),
> (ElementKind k) -> k.isClass(), "isClass");
>
> // isField: Returns true if this is a kind of field: either
> FIELD or ENUM_CONSTANT.
> test(ALL_KINDS,
> (ElementKind k) -> Set.of(ElementKind.FIELD,
> ElementKind.ENUM_CONSTANT).contains(k),
> (ElementKind k) -> k.isField(), "isField");
>
> // isInterface: Returns true if this is a kind of interface:
> either INTERFACE or ANNOTATION_TYPE.
> test(ALL_KINDS,
> (ElementKind k) -> Set.of(ElementKind.INTERFACE,
> ElementKind.ANNOTATION_TYPE).contains(k),
> (ElementKind k) -> k.isInterface(), "isInterface");
> }
>
> private static void test(Set<ElementKind> kinds,
> Predicate<ElementKind> expectedPred,
> Predicate<ElementKind> actualPred,
> String errorMessage) {
> for(ElementKind kind : kinds) {
> boolean expected = expectedPred.test(kind);
> boolean actual = actualPred.test(kind);
>
> if (expected != actual) {
> throw new RuntimeException("Error testing
> ElementKind." + errorMessage + "(" + kind +
> "):\texpected " + expected
> + "\tgot " + actual);
> }
> }
> }
> }
>
More information about the compiler-dev
mailing list