From a428e7bb2c2ce1c13b47d1e43128a1c67c397f21 Mon Sep 17 00:00:00 2001 From: gak Date: Sun, 25 Jan 2015 20:29:15 -0800 Subject: Add a method to MoreTypes that does the same operation as Types.asElement, but can be called statically. Then, clean up all of the places that callers to MoreTypes.asTypeElement were passing through a Types instance just for that reason. ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=84753119 --- .../java/com/google/auto/common/MoreTypesTest.java | 34 ++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'common/src/test/java/com') diff --git a/common/src/test/java/com/google/auto/common/MoreTypesTest.java b/common/src/test/java/com/google/auto/common/MoreTypesTest.java index c4fd1470..c2bbe5b9 100644 --- a/common/src/test/java/com/google/auto/common/MoreTypesTest.java +++ b/common/src/test/java/com/google/auto/common/MoreTypesTest.java @@ -18,6 +18,7 @@ package com.google.auto.common; import static com.google.common.truth.Truth.assertThat; import static javax.lang.model.type.TypeKind.NONE; import static javax.lang.model.type.TypeKind.VOID; +import static org.junit.Assert.fail; import com.google.common.base.Function; import com.google.common.base.Optional; @@ -42,6 +43,7 @@ import java.util.Set; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.Element; import javax.lang.model.element.TypeElement; +import javax.lang.model.element.TypeParameterElement; import javax.lang.model.element.VariableElement; import javax.lang.model.type.DeclaredType; import javax.lang.model.type.ErrorType; @@ -254,12 +256,34 @@ public class MoreTypesTest { int[] f11; Set f12; } - + private static class Parent {} private static class ChildA extends Parent {} private static class ChildB extends Parent {} private static class GenericChild extends Parent {} - + + @Test + public void asElement_throws() { + TypeMirror javaDotLang = + compilationRule.getElements().getPackageElement("java.lang").asType(); + try { + MoreTypes.asElement(javaDotLang); + fail(); + } catch (IllegalArgumentException expected) {} + + } + + @Test + public void asElement() { + Elements elements = compilationRule.getElements(); + TypeElement stringElement = elements.getTypeElement("java.lang.String"); + assertThat(MoreTypes.asElement(stringElement.asType())).isEqualTo(stringElement); + TypeParameterElement setParameterElement = Iterables.getOnlyElement( + compilationRule.getElements().getTypeElement("java.util.Set").getTypeParameters()); + assertThat(MoreTypes.asElement(setParameterElement.asType())).isEqualTo(setParameterElement); + // we don't test error types because those are very hard to get predictably + } + @Test public void testNonObjectSuperclass() { Types types = compilationRule.getTypes(); @@ -273,10 +297,10 @@ public class MoreTypesTest { TypeElement genericChild = elements.getTypeElement(GenericChild.class.getCanonicalName()); TypeMirror genericChildOfNumber = types.getDeclaredType(genericChild, numberType); TypeMirror genericChildOfInteger = types.getDeclaredType(genericChild, integerType); - + assertThat(MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) parent.asType())) .isAbsent(); - + Optional parentOfChildA = MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) childA.asType()); Optional parentOfChildB = @@ -286,7 +310,7 @@ public class MoreTypesTest { Optional parentOfGenericChildOfNumber = MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) genericChildOfNumber); Optional parentOfGenericChildOfInteger = - MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) genericChildOfInteger); + MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) genericChildOfInteger); EquivalenceTester tester = EquivalenceTester.of(MoreTypes.equivalence()) .addEquivalenceGroup(parentOfChildA.get(), -- cgit v1.2.3