aboutsummaryrefslogtreecommitdiffstats
path: root/guava-testlib/test/com/google/common/collect/testing/features/FeatureEnumTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava-testlib/test/com/google/common/collect/testing/features/FeatureEnumTest.java')
-rw-r--r--guava-testlib/test/com/google/common/collect/testing/features/FeatureEnumTest.java108
1 files changed, 0 insertions, 108 deletions
diff --git a/guava-testlib/test/com/google/common/collect/testing/features/FeatureEnumTest.java b/guava-testlib/test/com/google/common/collect/testing/features/FeatureEnumTest.java
deleted file mode 100644
index 394dcd4..0000000
--- a/guava-testlib/test/com/google/common/collect/testing/features/FeatureEnumTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2008 The Guava Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.common.collect.testing.features;
-
-import junit.framework.TestCase;
-
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.Method;
-
-/**
- * Since annotations have some reusability issues that force copy and paste
- * all over the place, it's worth having a test to ensure that all our Feature
- * enums have their annotations correctly set up.
- *
- * @author George van den Driessche
- */
-public class FeatureEnumTest extends TestCase {
- private static void assertGoodTesterAnnotation(
- Class<? extends Annotation> annotationClass) {
- assertNotNull(
- String.format("%s must be annotated with @TesterAnnotation.",
- annotationClass),
- annotationClass.getAnnotation(TesterAnnotation.class));
- final Retention retentionPolicy =
- annotationClass.getAnnotation(Retention.class);
- assertNotNull(
- String.format("%s must have a @Retention annotation.", annotationClass),
- retentionPolicy);
- assertEquals(
- String.format("%s must have RUNTIME RetentionPolicy.", annotationClass),
- RetentionPolicy.RUNTIME, retentionPolicy.value());
- assertNotNull(
- String.format("%s must be inherited.", annotationClass),
- annotationClass.getAnnotation(Inherited.class));
-
- for (String propertyName : new String[]{"value", "absent"}) {
- Method method = null;
- try {
- method = annotationClass.getMethod(propertyName);
- } catch (NoSuchMethodException e) {
- fail(String.format("%s must have a property named '%s'.",
- annotationClass, propertyName));
- }
- final Class<?> returnType = method.getReturnType();
- assertTrue(String.format("%s.%s() must return an array.",
- annotationClass, propertyName),
- returnType.isArray());
- assertSame(String.format("%s.%s() must return an array of %s.",
- annotationClass, propertyName, annotationClass.getDeclaringClass()),
- annotationClass.getDeclaringClass(), returnType.getComponentType());
- }
- }
-
- // This is public so that tests for Feature enums we haven't yet imagined
- // can reuse it.
- public static <E extends Enum<?> & Feature<?>> void assertGoodFeatureEnum(
- Class<E> featureEnumClass) {
- final Class<?>[] classes = featureEnumClass.getDeclaredClasses();
- for (Class<?> containedClass : classes) {
- if (containedClass.getSimpleName().equals("Require")) {
- if (containedClass.isAnnotation()) {
- assertGoodTesterAnnotation(asAnnotation(containedClass));
- } else {
- fail(String.format("Feature enum %s contains a class named " +
- "'Require' but it is not an annotation.", featureEnumClass));
- }
- return;
- }
- }
- fail(String.format("Feature enum %s should contain an " +
- "annotation named 'Require'.", featureEnumClass));
- }
-
- @SuppressWarnings("unchecked")
- private static Class<? extends Annotation> asAnnotation(Class<?> clazz) {
- if (clazz.isAnnotation()) {
- return (Class<? extends Annotation>) clazz;
- } else {
- throw new IllegalArgumentException(
- String.format("%s is not an annotation.", clazz));
- }
- }
-
- public void testFeatureEnums() throws Exception {
- assertGoodFeatureEnum(CollectionFeature.class);
- assertGoodFeatureEnum(ListFeature.class);
- assertGoodFeatureEnum(SetFeature.class);
- assertGoodFeatureEnum(CollectionSize.class);
- assertGoodFeatureEnum(MapFeature.class);
- }
-}