Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * 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
  * 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.
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.

George van den Driessche
 public class FeatureEnumTest extends TestCase {
   private static void assertGoodTesterAnnotation(
       Class<? extends AnnotationannotationClass) {
         String.format("%s must be annotated with @TesterAnnotation.",
     final Retention retentionPolicy =
         String.format("%s must have a @Retention annotation."annotationClass),
         String.format("%s must have RUNTIME RetentionPolicy."annotationClass),
         String.format("%s must be inherited."annotationClass),
     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'.",
       final Class<?> returnType = method.getReturnType();
       assertTrue(String.format("%s.%s() must return an array.",
       assertSame(String.format("%s.%s() must return an array of %s.",
           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()) {
         } else {
           fail(String.format("Feature enum %s contains a class named " +
               "'Require' but it is not an annotation."featureEnumClass));
     fail(String.format("Feature enum %s should contain an " +
         "annotation named 'Require'."featureEnumClass));
   private static Class<? extends AnnotationasAnnotation(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 {
New to GrepCode? Check out our FAQ X