public void testOneLevel_CFLOW_AND_EXECUTION() {
try {
space.registerExpression("* test.ExpressionTest.get(..)", "", "pc1", PointcutType.EXECUTION);
space.registerExpression("* test.ExpressionTest.set(..)", "", "cf1", PointcutType.CFLOW);
Expression root = space.createExpression("pc1 AND cf1");
Expression rootAnonymous = space.createExpression("pc1 AND cflow(* test.ExpressionTest.set(..))");
ClassMetaData classMetaData1 = ReflectionMetaDataMaker.createClassMetaData(ExpressionTest.class);
ClassMetaData classMetaData2 = ReflectionMetaDataMaker.createClassMetaData(ExpressionException.class);
MethodMetaData methodMetaData1 = ReflectionMetaDataMaker.createMethodMetaData(
ExpressionTest.class.getDeclaredMethod("set", new Class[]{})
);
MethodMetaData methodMetaData2 = ReflectionMetaDataMaker.createMethodMetaData(
ExpressionTest.class.getDeclaredMethod("get", new Class[]{})
);
MethodMetaData methodMetaData3 = ReflectionMetaDataMaker.createMethodMetaData(
ExpressionTest.class.getDeclaredMethod("suite", new Class[]{})
);
assertTrue(root.match(classMetaData1));
assertTrue(rootAnonymous.match(classMetaData1));
assertFalse(root.match(classMetaData1, methodMetaData1));
assertFalse(rootAnonymous.match(classMetaData1, methodMetaData1));
assertFalse(root.match(classMetaData2));
assertFalse(rootAnonymous.match(classMetaData2));
assertTrue(root.match(classMetaData1, methodMetaData2));
assertTrue(rootAnonymous.match(classMetaData1, methodMetaData2));
assertFalse(root.match(classMetaData1, methodMetaData3));
assertFalse(rootAnonymous.match(classMetaData1, methodMetaData3));
}
catch (Exception e) {
fail(e.toString());
}
}