package de.vksi.c4j.systemtest.precondition; import static de.vksi.c4j.Condition.preCondition; import org.junit.Rule; import org.junit.Test; import de.vksi.c4j.ConstructorContract; import de.vksi.c4j.ContractReference; import de.vksi.c4j.systemtest.TransformerAwareRule; public class PreConditionInConstructorSystemTest { @Rule public TransformerAwareRule transformerAware = new TransformerAwareRule(); @Test public void testPreCondition() { new DummyClass(3); } @Test(expected = AssertionError.class) public void testPreConditionFails() { new DummyClass(0); } @ContractReference(DummyContract.class) private static class DummyClass { public DummyClass(int arg) { } } @SuppressWarnings("unused") private static class DummyContract extends DummyClass { public DummyContract() { super(0); } @ConstructorContract public void constructor(int arg) { if (preCondition()) { assert arg > 0; } } } }