package com.opensymphony.xwork2.util; import com.opensymphony.xwork2.util.annotation.Dummy2Class; import com.opensymphony.xwork2.util.annotation.DummyClass; import com.opensymphony.xwork2.util.annotation.DummyClassExt; import com.opensymphony.xwork2.util.annotation.MyAnnotation; import com.opensymphony.xwork2.util.annotation.MyAnnotation2; import junit.framework.TestCase; import java.lang.reflect.AnnotatedElement; import java.util.Collection; /** * @author Dan Oxlade, dan d0t oxlade at gmail d0t c0m */ public class AnnotationUtilsTest extends TestCase { @SuppressWarnings("unchecked") public void testIsAnnotatedByWithoutAnnotationArgsReturnsFalse() throws Exception { assertFalse(AnnotationUtils.isAnnotatedBy(DummyClass.class)); assertFalse(AnnotationUtils.isAnnotatedBy(DummyClass.class.getMethod("methodWithAnnotation"))); } @SuppressWarnings("unchecked") public void testIsAnnotatedByWithSingleAnnotationArgMatchingReturnsTrue() throws Exception { assertTrue(AnnotationUtils.isAnnotatedBy(DummyClass.class.getMethod("methodWithAnnotation"), MyAnnotation.class)); } @SuppressWarnings("unchecked") public void testIsAnnotatedByWithMultiAnnotationArgMatchingReturnsTrue() throws Exception { assertFalse(AnnotationUtils.isAnnotatedBy(DummyClass.class.getMethod("methodWithAnnotation"), Deprecated.class)); assertTrue(AnnotationUtils.isAnnotatedBy(DummyClass.class.getMethod("methodWithAnnotation"), MyAnnotation.class, Deprecated.class)); assertTrue(AnnotationUtils.isAnnotatedBy(DummyClass.class.getMethod("methodWithAnnotation"), Deprecated.class, MyAnnotation.class)); } @SuppressWarnings("unchecked") public void testGetAnnotedMethodsWithoutAnnotationArgs() throws Exception { Collection<? extends AnnotatedElement> ans = AnnotationUtils.getAnnotatedMethods(DummyClass.class); assertTrue(ans.size() == 1); assertEquals(ans.iterator().next(), DummyClass.class.getMethod("methodWithAnnotation")); } @SuppressWarnings("unchecked") public void testGetAnnotatedMethodsWithAnnotationArgs() throws Exception { Collection<? extends AnnotatedElement> ans = AnnotationUtils.getAnnotatedMethods(DummyClass.class, Deprecated.class); assertTrue(ans.isEmpty()); ans = AnnotationUtils.getAnnotatedMethods(DummyClass.class, Deprecated.class, MyAnnotation.class); assertEquals(1, ans.size()); ans = AnnotationUtils.getAnnotatedMethods(DummyClass.class, MyAnnotation.class); assertEquals(1, ans.size()); ans = AnnotationUtils.getAnnotatedMethods(DummyClass.class, MyAnnotation.class, MyAnnotation2.class); assertEquals(1, ans.size()); ans = AnnotationUtils.getAnnotatedMethods(DummyClassExt.class, MyAnnotation.class, MyAnnotation2.class); assertEquals(2, ans.size()); } public void testFindAnnotationOnClass() { MyAnnotation a1 = AnnotationUtils.findAnnotation(DummyClass.class, MyAnnotation.class); assertNotNull(a1); assertEquals("class-test", a1.value()); } public void testFindAnnotationOnPackage() { MyAnnotation ns = AnnotationUtils.findAnnotation(Dummy2Class.class, MyAnnotation.class); assertNotNull(ns); assertEquals("package-test", ns.value()); } }