package de.vksi.c4j.systemtest.pure;
import org.junit.Rule;
import org.junit.Test;
import de.vksi.c4j.AllowPureAccess;
import de.vksi.c4j.ContractReference;
import de.vksi.c4j.Pure;
import de.vksi.c4j.systemtest.TransformerAwareRule;
public class AllowPureAccessSystemTest {
@Rule
public TransformerAwareRule transformerAwareRule = new TransformerAwareRule();
@Test
public void testAllowPureAccessFromTargetClass() {
new TargetClass().incrementValue();
}
@Test
public void testAllowPureAccessFromContractClass() {
new TargetClass().incrementValueInContract();
}
@ContractReference(TargetClassContract.class)
private static class TargetClass {
@AllowPureAccess
private int value;
@AllowPureAccess
public static int staticValue;
@Pure
public void incrementValue() {
value++;
}
@Pure
public void incrementValueInContract() {
}
}
private static class TargetClassContract extends TargetClass {
@Override
public void incrementValueInContract() {
TargetClass.staticValue++;
}
}
}