package de.vksi.c4j.systemtest.contractclassmagic; import static de.vksi.c4j.Condition.preCondition; import org.junit.Rule; import org.junit.Test; import de.vksi.c4j.ContractReference; import de.vksi.c4j.systemtest.TransformerAwareRule; public class ContractClassDifferentConstructorsSystemTest { @Rule public TransformerAwareRule transformerAwareRule = new TransformerAwareRule(); @Test public void testMatchingConstructor() { new TargetClass("abc").check(); } @Test public void testNonMatchingConstructor() { new TargetClass(54).check(); } @ContractReference(ContractClass.class) public static class TargetClass { public TargetClass(String arg) { } public TargetClass(Integer arg) { } public void check() { } } public static class ContractClass extends TargetClass { private boolean initialized = true; public ContractClass() { super(""); } @Override public void check() { if (preCondition()) { assert initialized; } } } }