Polish MergedAnnotation support

This commit is contained in:
Sam Brannen
2019-05-13 13:59:26 +02:00
parent cfc4a59135
commit 785e8d8116
7 changed files with 40 additions and 58 deletions

View File

@@ -394,7 +394,7 @@ public class AnnotationTypeMappingsTests {
.withMessage("Different @AliasFor mirror values for annotation ["
+ AliasPair.class.getName() + "] declared on "
+ WithDifferentValueAliasPair.class.getName()
+ ", attribute 'a' and its alias 'b' are declared with values of [test1] and [test2].");
+ "; attribute 'a' and its alias 'b' are declared with values of [test1] and [test2].");
}
@Test

View File

@@ -52,52 +52,46 @@ public class AttributeMethodsTests {
@Test
public void forAnnotationTypeWhenHasMultipleAttributesReturnsAttributes() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
MultipleAttributes.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(MultipleAttributes.class);
assertThat(methods.get("value").getName()).isEqualTo("value");
assertThat(methods.get("intValue").getName()).isEqualTo("intValue");
assertThat(getAll(methods)).flatExtracting(Method::getName).containsExactly(
"intValue", "value");
assertThat(getAll(methods)).flatExtracting(Method::getName).containsExactly("intValue", "value");
}
@Test
public void isOnlyValueAttributeWhenHasOnlyValueAttributeReturnsTrue() {
public void hasOnlyValueAttributeWhenHasOnlyValueAttributeReturnsTrue() {
AttributeMethods methods = AttributeMethods.forAnnotationType(ValueOnly.class);
assertThat(methods.isOnlyValueAttribute()).isTrue();
assertThat(methods.hasOnlyValueAttribute()).isTrue();
}
@Test
public void isOnlyValueAttributeWhenHasOnlySingleNonValueAttributeReturnsFalse() {
public void hasOnlyValueAttributeWhenHasOnlySingleNonValueAttributeReturnsFalse() {
AttributeMethods methods = AttributeMethods.forAnnotationType(NonValueOnly.class);
assertThat(methods.isOnlyValueAttribute()).isFalse();
assertThat(methods.hasOnlyValueAttribute()).isFalse();
}
@Test
public void isOnlyValueAttributeWhenHasOnlyMultipleAttributesIncludingValueReturnsFalse() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
MultipleAttributes.class);
assertThat(methods.isOnlyValueAttribute()).isFalse();
public void hasOnlyValueAttributeWhenHasOnlyMultipleAttributesIncludingValueReturnsFalse() {
AttributeMethods methods = AttributeMethods.forAnnotationType(MultipleAttributes.class);
assertThat(methods.hasOnlyValueAttribute()).isFalse();
}
@Test
public void indexOfNameReturnsIndex() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
MultipleAttributes.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(MultipleAttributes.class);
assertThat(methods.indexOf("value")).isEqualTo(1);
}
@Test
public void indexOfMethodReturnsIndex() throws Exception {
AttributeMethods methods = AttributeMethods.forAnnotationType(
MultipleAttributes.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(MultipleAttributes.class);
Method method = MultipleAttributes.class.getDeclaredMethod("value");
assertThat(methods.indexOf(method)).isEqualTo(1);
}
@Test
public void sizeReturnsSize() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
MultipleAttributes.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(MultipleAttributes.class);
assertThat(methods.size()).isEqualTo(2);
}
@@ -109,8 +103,7 @@ public class AttributeMethodsTests {
@Test
public void canThrowTypeNotPresentExceptionWhenHasClassArrayAttributeReturnsTrue() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
ClassArrayValue.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(ClassArrayValue.class);
assertThat(methods.canThrowTypeNotPresentException(0)).isTrue();
}
@@ -122,15 +115,13 @@ public class AttributeMethodsTests {
@Test
public void hasDefaultValueMethodWhenHasDefaultValueMethodReturnsTrue() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
DefaultValueAttribute.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(DefaultValueAttribute.class);
assertThat(methods.hasDefaultValueMethod()).isTrue();
}
@Test
public void hasDefaultValueMethodWhenHasNoDefaultValueMethodsReturnsFalse() {
AttributeMethods methods = AttributeMethods.forAnnotationType(
MultipleAttributes.class);
AttributeMethods methods = AttributeMethods.forAnnotationType(MultipleAttributes.class);
assertThat(methods.hasDefaultValueMethod()).isFalse();
}
@@ -138,8 +129,7 @@ public class AttributeMethodsTests {
public void isValidWhenHasTypeNotPresentExceptionReturnsFalse() {
ClassValue annotation = mockAnnotation(ClassValue.class);
given(annotation.value()).willThrow(TypeNotPresentException.class);
AttributeMethods attributes = AttributeMethods.forAnnotationType(
annotation.annotationType());
AttributeMethods attributes = AttributeMethods.forAnnotationType(annotation.annotationType());
assertThat(attributes.isValid(annotation)).isFalse();
}
@@ -148,8 +138,7 @@ public class AttributeMethodsTests {
public void isValidWhenDoesNotHaveTypeNotPresentExceptionReturnsTrue() {
ClassValue annotation = mock(ClassValue.class);
given(annotation.value()).willReturn((Class) InputStream.class);
AttributeMethods attributes = AttributeMethods.forAnnotationType(
annotation.annotationType());
AttributeMethods attributes = AttributeMethods.forAnnotationType(annotation.annotationType());
assertThat(attributes.isValid(annotation)).isTrue();
}
@@ -157,10 +146,8 @@ public class AttributeMethodsTests {
public void validateWhenHasTypeNotPresentExceptionThrowsException() {
ClassValue annotation = mockAnnotation(ClassValue.class);
given(annotation.value()).willThrow(TypeNotPresentException.class);
AttributeMethods attributes = AttributeMethods.forAnnotationType(
annotation.annotationType());
assertThatIllegalStateException().isThrownBy(() ->
attributes.validate(annotation));
AttributeMethods attributes = AttributeMethods.forAnnotationType(annotation.annotationType());
assertThatIllegalStateException().isThrownBy(() -> attributes.validate(annotation));
}
@Test
@@ -168,8 +155,7 @@ public class AttributeMethodsTests {
public void validateWhenDoesNotHaveTypeNotPresentExceptionThrowsNothing() {
ClassValue annotation = mockAnnotation(ClassValue.class);
given(annotation.value()).willReturn((Class) InputStream.class);
AttributeMethods attributes = AttributeMethods.forAnnotationType(
annotation.annotationType());
AttributeMethods attributes = AttributeMethods.forAnnotationType(annotation.annotationType());
attributes.validate(annotation);
}
@@ -189,12 +175,11 @@ public class AttributeMethodsTests {
}
@Retention(RetentionPolicy.RUNTIME)
static @interface NoAttributes {
@interface NoAttributes {
}
@Retention(RetentionPolicy.RUNTIME)
static @interface MultipleAttributes {
@interface MultipleAttributes {
int intValue();
@@ -203,35 +188,35 @@ public class AttributeMethodsTests {
}
@Retention(RetentionPolicy.RUNTIME)
static @interface ValueOnly {
@interface ValueOnly {
String value();
}
@Retention(RetentionPolicy.RUNTIME)
static @interface NonValueOnly {
@interface NonValueOnly {
String test();
}
@Retention(RetentionPolicy.RUNTIME)
static @interface ClassValue {
@interface ClassValue {
Class<?> value();
}
@Retention(RetentionPolicy.RUNTIME)
static @interface ClassArrayValue {
@interface ClassArrayValue {
Class<?>[] value();
}
@Retention(RetentionPolicy.RUNTIME)
static @interface DefaultValueAttribute {
@interface DefaultValueAttribute {
String one();