package de.vksi.c4j.systemtest.old;
import static de.vksi.c4j.Condition.old;
import static de.vksi.c4j.Condition.postCondition;
import org.junit.Rule;
import org.junit.Test;
import de.vksi.c4j.ContractReference;
import de.vksi.c4j.Pure;
import de.vksi.c4j.Target;
import de.vksi.c4j.systemtest.TransformerAwareRule;
public class OldWithMultipleContractsSystemTest {
@Rule
public TransformerAwareRule transformerAware = new TransformerAwareRule();
@Test
public void testOldWithMultipleContracts() {
new DummyClass().method();
}
@ContractReference(DummyContract.class)
private static class DummyClass extends SuperClass {
@Override
public void method() {
}
@Pure
public int getOne() {
return 1;
}
}
private static class DummyContract extends DummyClass {
@Target
private DummyClass target;
@Override
public void method() {
if (postCondition()) {
assert old(target.getOne()) == 1;
}
}
}
@SuppressWarnings("unused")
@ContractReference(SuperContract.class)
private static class SuperClass {
public void method() {
}
@Pure
public int getTwo() {
return 2;
}
}
private static class SuperContract extends SuperClass {
@Target
private SuperClass target;
@Override
public void method() {
if (postCondition()) {
assert old(target.getTwo()) == 2;
}
}
}
}