package de.vksi.c4j.systemtest.staticmethods;
import static de.vksi.c4j.Condition.preCondition;
import org.junit.Rule;
import org.junit.Test;
import de.vksi.c4j.ContractReference;
import de.vksi.c4j.error.UsageError;
import de.vksi.c4j.systemtest.TransformerAwareRule;
public class UnmatchedStaticMethodSystemTest {
@Rule
public TransformerAwareRule transformerAwareRule = new TransformerAwareRule();
@Test(expected = UsageError.class)
public void testUnmatchedStaticMethod() {
new UnmatchedStaticMethodTargetClass().method(1);
}
@Test
public void testUnmatchedPrivateStaticMethod() {
new UnmatchedPrivateStaticMethodTargetClass().method(1);
}
@ContractReference(UnmatchedStaticMethodContractClass.class)
private static class UnmatchedStaticMethodTargetClass {
public void method(int arg) {
}
}
@SuppressWarnings("unused")
private static class UnmatchedStaticMethodContractClass extends UnmatchedStaticMethodTargetClass {
@Override
public void method(int arg) {
if (preCondition()) {
assert arg > 0;
}
}
public static void unmatchedStaticMethod() {
}
}
@ContractReference(UnmatchedPrivateStaticMethodContractClass.class)
private static class UnmatchedPrivateStaticMethodTargetClass {
public void method(int arg) {
}
}
private static class UnmatchedPrivateStaticMethodContractClass extends UnmatchedPrivateStaticMethodTargetClass {
@Override
public void method(int arg) {
if (preCondition()) {
assert arg > 0;
}
}
@SuppressWarnings("unused")
private static void unmatchedStaticMethod() {
}
}
}