package de.vksi.c4j.systemtest.config.pureregistry; import static de.vksi.c4j.Condition.ignored; import static de.vksi.c4j.Condition.postCondition; import org.junit.Rule; import org.junit.Test; import de.vksi.c4j.ContractReference; import de.vksi.c4j.Target; import de.vksi.c4j.systemtest.TransformerAwareRule; public class PureInheritedFromConfigSystemTest { @Rule public TransformerAwareRule transformerAware = new TransformerAwareRule(); @Test public void pureInheritedFromConfig() throws Exception { new TargetClass().equals(null); } @ContractReference(ContractClass.class) private static class TargetClass { } private static class ContractClass extends TargetClass { @Target private TargetClass target; @Override public boolean equals(Object obj) { if (postCondition()) { // equals @Pure-ness should be inherited from Object, defined in the Pure Registry assert target.equals(target) : "reflexive"; } return (Boolean) ignored(); } } }