package singlepackage; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import de.vksi.c4j.Pure; import de.vksi.c4j.systemtest.TransformerAwareRule; public class PureSystemTest { @Rule public TransformerAwareRule transformerAware = new TransformerAwareRule(); private TargetClass target; @Before public void before() { target = new TargetClass(); } @Test public void testPureMethod() { target.pureMethod(); } @Test(expected = AssertionError.class) public void testPureMethodWritingField() { target.unpureMethodWritingField(); } @SuppressWarnings("unused") private static class TargetClass { protected String field = "sample"; @Pure public void pureMethod() { } @Pure public void unpureMethodWritingField() { field = "illegal"; } } }