package de.vksi.c4j.systemtest.config; import static de.vksi.c4j.Condition.preCondition; import org.apache.log4j.Level; import org.junit.Rule; import org.junit.Test; import de.vksi.c4j.ContractReference; import de.vksi.c4j.systemtest.TransformerAwareRule; public class StrengtheningPreConditionNotAllowedSystemTest { @Rule public TransformerAwareRule transformerAwareRule = new TransformerAwareRule(); @Test public void testPreConditionUndefined() { new TargetClass().method(0); transformerAwareRule.expectGlobalLog(Level.ERROR, "Found strengthening pre-condition in " + ContractClass.class.getName() + ".method(int)" + " which is already defined from" + " " + SuperClassContract.class.getName() + " - ignoring the pre-condition."); } @ContractReference(ContractClass.class) private static class TargetClass extends SuperClass { } private static class ContractClass extends TargetClass { @Override public void method(int arg) { if (preCondition()) { assert arg > 0; } } } @ContractReference(SuperClassContract.class) private static class SuperClass { public void method(int arg) { } } private static class SuperClassContract extends SuperClass { @Override public void method(int arg) { if (preCondition()) { assert arg > -1; } } } }