org.aspectj/tests/new/SuperInIntroduction.java
2002-12-16 18:51:06 +00:00

62 lines
2.0 KiB
Java

import org.aspectj.testing.Tester;
public class SuperInIntroduction {
public static void main (String[] args) {
int result = new Sub().getInt();
Tester.check(8==result, "new Sub().getInt() !8==" + result);
ObjectSub sb = new ObjectSub().getClone();
Tester.check(null != sb, "null new ObjectSub().getClone()");
sb = new ObjectSub().getSuperClone();
Tester.check(null != sb, "null new ObjectSub().getSuperClone()");
}
}
class Super {
protected int protectedInt = 1;
protected int protectedIntMethod() { return protectedInt; }
int defaultInt = 1;
int defaultIntMethod() { return defaultInt; }
}
class Sub extends Super { }
class ObjectSub { }
aspect A {
/** @testcase accessing protected method and field of class within code the compiler controls */
public int Sub.getInt() {
int result;
result = super.protectedInt;
result += super.protectedIntMethod();
result += protectedInt;
result += protectedIntMethod();
result += defaultInt;
result += defaultIntMethod();
result += super.defaultInt;
result += super.defaultIntMethod();
return result;
}
/** @testcase accessing protected method of class outside code the compiler controls */
public ObjectSub ObjectSub.getClone() {
try {
Object result = clone();
return (ObjectSub) result;
} catch (CloneNotSupportedException e) {
return this;
}
}
/** @testcase using super to access protected method of class outside code the compiler controls */
public ObjectSub ObjectSub.getSuperClone() {
ObjectSub result = null;
try {
result = (ObjectSub) super.clone();
Tester.check(false, "expecting CloneNotSupportedException");
} catch (CloneNotSupportedException e) {
result = this; // bad programming - ok for testing
}
return result;
}
}