+ * class Example {
+ * void example(boolean b) {
+ * ...
+ * assert b : "message";
+ * ...
+ * }
+ * }
+ *
+ */
+ @Test
+ public void should_filter_static_initializer() {
+ context.className = "Example";
+ final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION,
+ Opcodes.ACC_STATIC, "
+ * class Example {
+ * static final f;
+ *
+ * static {
+ * f = !Example.class.desiredAssertionStatus();
+ * }
+ * }
+ *
+ */
+ @Test
+ public void should_not_filter_static_initializer_when_field_name_does_not_match() {
+ context.className = "Example";
+ final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION,
+ Opcodes.ACC_STATIC, "
+ * class Example {
+ * void example(boolean b) {
+ * ...
+ * assert b : "message";
+ * ...
+ * }
+ * }
+ *
+ */
+ @Test
+ public void should_filter_assert() {
+ context.className = "Example";
+ final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, 0,
+ "example", "()V", null, null);
+
+ m.visitInsn(Opcodes.NOP);
+ m.visitFieldInsn(Opcodes.GETSTATIC, "Example", "$assertionsDisabled",
+ "Z");
+ final Label label = new Label();
+ m.visitJumpInsn(Opcodes.IFNE, label);
+ final Range range = new Range(m.instructions.getLast(),
+ m.instructions.getLast());
+ m.visitVarInsn(Opcodes.ILOAD, 1);
+ m.visitJumpInsn(Opcodes.IFNE, label);
+ m.visitTypeInsn(Opcodes.NEW, "java/lang/AssertionError");
+ m.visitInsn(Opcodes.DUP);
+ m.visitLdcInsn("message");
+ m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/AssertionError",
+ "assert
statement.
+ */
+final class AssertFilter implements IFilter {
+
+ public void filter(final MethodNode methodNode,
+ final IFilterContext context, final IFilterOutput output) {
+ // TODO
+ }
+
+}