ミラー元
https://github.com/eclipse-aspectj/aspectj.git
前回の同期 2024-09-03 17:56:34 +02:00
91 行
4.5 KiB
Java
91 行
4.5 KiB
Java
|
|
import org.aspectj.testing.Tester;
|
|
|
|
/** @testcase PR#657 PUREJAVA assert statement in advice coverage [requires 1.4] */
|
|
public class AssertInAdvice {
|
|
public static void main(String[] args) {
|
|
AssertInAdvice.class.getClassLoader().setClassAssertionStatus("Test", true);
|
|
AssertInAdvice.class.getClassLoader().setClassAssertionStatus("AssertInAdvice", false);
|
|
|
|
boolean expectAssert = false;
|
|
boolean gotit = false;
|
|
do {
|
|
Test.throwAssert = expectAssert;
|
|
gotit = false;
|
|
// 6 cases - separate join point for advice below
|
|
// call
|
|
try { call1(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "call1"+expectAssert); gotit = false;
|
|
try { call2(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "call2"+expectAssert); gotit = false;
|
|
try { call3(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "call3"+expectAssert); gotit = false;
|
|
try { call4(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "call4"+expectAssert); gotit = false;
|
|
try { call5(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "call5"+expectAssert); gotit = false;
|
|
try { call6(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "call6"+expectAssert); gotit = false;
|
|
// execution
|
|
try { execution1(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "execution1"+expectAssert); gotit = false;
|
|
try { execution2(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "execution2"+expectAssert); gotit = false;
|
|
try { execution3(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "execution3"+expectAssert); gotit = false;
|
|
try { execution4(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "execution4"+expectAssert); gotit = false;
|
|
try { execution5(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "execution5"+expectAssert); gotit = false;
|
|
try { execution6(); } catch (AssertionError e) { gotit = true; }
|
|
Tester.check(gotit == expectAssert, "execution6"+expectAssert);
|
|
|
|
// run for false, true
|
|
if (expectAssert) break;
|
|
expectAssert = true;
|
|
} while (true);
|
|
}
|
|
public static void call1() {}
|
|
public static void call2() {}
|
|
public static void call3() {}
|
|
public static void call4() {}
|
|
public static void call5() {}
|
|
public static void call6() {}
|
|
public static void execution1() {}
|
|
public static void execution2() {}
|
|
public static void execution3() {}
|
|
public static void execution4() {}
|
|
public static void execution5() {}
|
|
public static void execution6() {}
|
|
}
|
|
|
|
aspect Test {
|
|
// todo: convert to 1.3 test?
|
|
public static boolean throwAssert;
|
|
public static boolean throwAssert() { return throwAssert; }
|
|
public static final AssertionError EXPECTED = new AssertionError("expected");
|
|
public static void testAssert() {
|
|
//if (throwAssert) throw EXPECTED;
|
|
assert !throwAssert() ;
|
|
}
|
|
// call
|
|
after() returning : call(void AssertInAdvice.call1() ) {
|
|
assert !throwAssert();
|
|
}
|
|
after() : call(void AssertInAdvice.call2() ) {
|
|
assert !throwAssert();
|
|
}
|
|
before() : call(void AssertInAdvice.call3() ) { testAssert(); }
|
|
void around() : call(void AssertInAdvice.call4() ) { testAssert(); }
|
|
void around() : call(void AssertInAdvice.call5() ) { proceed(); testAssert(); }
|
|
void around() : call(void AssertInAdvice.call6() ) { testAssert(); proceed(); }
|
|
|
|
// execution
|
|
after() returning : execution(void AssertInAdvice.execution1() ) { testAssert(); }
|
|
after() : execution(void AssertInAdvice.execution2() ) { testAssert(); }
|
|
before() : execution(void AssertInAdvice.execution3() ) { testAssert(); }
|
|
void around() : execution(void AssertInAdvice.execution4() ) { testAssert(); }
|
|
void around() : execution(void AssertInAdvice.execution5() ) { proceed(); testAssert(); }
|
|
void around() : execution(void AssertInAdvice.execution6() ) { testAssert(); proceed(); }
|
|
}
|