/**************************************************************************************
* Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. *
* http://aspectwerkz.codehaus.org *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the LGPL license *
* a copy of which has been included with this distribution in the license.txt file. *
**************************************************************************************/
package test.annotation;
import junit.framework.TestCase;
import java.lang.reflect.Method;
import java.io.Serializable;
import org.codehaus.backport175.reader.Annotations;
/**
* @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a>
*/
public class AnnotationTest extends TestCase {
private static String s_logString = "";
/**
* @AnnotationPrivateField
*/
private int privateField;
/**
* @AnnotationProtectedField
*/
protected int protectedField;
/**
* @AnnotationPublicField
*/
public int publicField;
/**
* @AnnotationPackagePrivateField
*/
int packagePrivateField;
public AnnotationTest() {
}
public AnnotationTest(String name) {
super(name);
}
public void testPrivateMethod() {
s_logString = "";
privateMethod();
assertEquals("call execution invocation execution call ", s_logString);
}
public void testProtectedMethod() {
s_logString = "";
protectedMethod();
assertEquals("call execution invocation execution call ", s_logString);
}
public void testPackagePrivateMethod() {
s_logString = "";
packagePrivateMethod();
assertEquals("call execution invocation execution call ", s_logString);
}
public void testPublicMethod() {
s_logString = "";
publicMethod();
assertEquals("call execution execution2 invocation execution2 execution call ", s_logString);
}
public void testSetPublicField() {
s_logString = "";
publicField = 0;
assertEquals("set set ", s_logString);
}
public void testSetPrivateField() {
s_logString = "";
privateField = 0;
assertEquals("set set ", s_logString);
}
public void testSetProtectedField() {
s_logString = "";
protectedField = 0;
assertEquals("set set ", s_logString);
}
public void testSetPackagePrivateField() {
s_logString = "";
packagePrivateField = 0;
assertEquals("set set ", s_logString);
}
public void testGetPublicField() {
s_logString = "";
int i = publicField;
assertEquals("get get ", s_logString);
}
public void testGetPrivateField() {
s_logString = "";
int i = privateField;
assertEquals("get get ", s_logString);
}
public void testGetProtectedField() {
s_logString = "";
int i = protectedField;
assertEquals("get get ", s_logString);
}
public void testGetPackagePrivateField() {
s_logString = "";
int i = packagePrivateField;
assertEquals("get get ", s_logString);
}
public void testBootstrapCLClassAnnotation() throws Throwable {
Method concat = String.class.getMethod("concat", new Class[]{String.class});
try {
Annotations.getAnnotation(Serializable.class, String.class);
Annotations.getAnnotation(Serializable.class, concat);
} catch (Throwable t) {
fail(t.toString());
}
}
//-------
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public static junit.framework.Test suite() {
return new junit.framework.TestSuite(AnnotationTest.class);
}
// ==== methods to test ====
public static void log(final String wasHere) {
s_logString += wasHere;
}
/**
* @AnnotationPrivateMethod
*/
private void privateMethod() {
log("invocation ");
}
/**
* @AnnotationProtectedMethod
*/
protected void protectedMethod() {
log("invocation ");
}
/**
* @AnnotationPublicMethod
* @AnnotationPublicMethod2
*/
public void publicMethod() {
log("invocation ");
}
/**
* @AnnotationPackagePrivateMethod
*/
void packagePrivateMethod() {
log("invocation ");
}
}