<dependencies>
<dependency>
<groupId>org.contract4j</groupId>
<artifactId>contract4j5</artifactId>
<version>5.3.0</version>
</dependency>
</dependencies>
public class MathUtils {
@Invariant("result > 0")
public static int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
@Requires({"n >= 0", "m > 0"})
@Ensures("result >= n && result <= n + m")
public static int sum(int n, int m) {
return n + m;
}
}
org.contract4j5.EnforcementMode=STRICT
org.contract4j5.verbose.mode=false
org.contract4j5.reporter.interfaces=org.contract4j5.reporter.PrintStreamReporter
org.contract4j5.reporter.fail.fast=true
public class MathUtilsTest {
@Test
public void testFactorial() {
int result = MathUtils.factorial(-1);
assertEquals(1, result);
}
@Test
public void testSum() {
int result = MathUtils.sum(1, 2);
assertEquals(3, result);
}
}