Compare commits
2 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
|
|
959bd7dd66 | ||
|
|
0938645cd0 |
@@ -29,8 +29,8 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
// The test classes are compiled with these:
|
||||
implementation("com.r35157.libs:random-api:0.0.0")
|
||||
implementation("com.r35157.libs:random-impl-ref:0.0.0")
|
||||
implementation("com.r35157.libs:random-api:0.1-dev")
|
||||
implementation("com.r35157.libs:random-impl-ref:0.1-dev")
|
||||
implementation("org.jetbrains:annotations:26.0.1")
|
||||
|
||||
// The JUnit platform will not be included in the JAR file but are needed for running the tests:
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
package com.r35157.libs.random.tests;
|
||||
|
||||
import com.r35157.libs.random.SomeInterface;
|
||||
import com.r35157.libs.random.impl.ref.SomeImpl;
|
||||
import org.junit.jupiter.api.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
@DisplayName("Happy Initialization Tests")
|
||||
public class HappyInitializationTests {
|
||||
|
||||
@BeforeAll
|
||||
public static void beforeAll() {
|
||||
System.out.println("==== Before All");
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void beforeEach() {
|
||||
System.out.println("---- Before Each");
|
||||
}
|
||||
|
||||
@DisplayName("Just a basic test")
|
||||
@Test
|
||||
void someBasicTest() {
|
||||
// Arrange
|
||||
String a = "abc";
|
||||
String b = "def";
|
||||
String expected = "abcdef";
|
||||
SomeInterface sut = new SomeImpl();
|
||||
|
||||
// Act
|
||||
String actual = sut.concat(a, b);
|
||||
|
||||
// Assert
|
||||
assertTrue(actual.equals(expected));
|
||||
}
|
||||
|
||||
@Disabled("Test disabled")
|
||||
@Test
|
||||
void dummyTest2() {
|
||||
assertTrue(false);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
public void afterEach() {
|
||||
System.out.println("**** After Each");
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
public static void afterAll() {
|
||||
System.out.println("==== After All");
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.r35157.libs.random.tests;
|
||||
|
||||
import com.r35157.libs.random.SomeInterface;
|
||||
import com.r35157.libs.random.impl.ref.SomeImpl;
|
||||
import org.junit.jupiter.api.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@DisplayName("Sad Initialization Tests")
|
||||
public class SadInitializationTests {
|
||||
|
||||
@BeforeAll
|
||||
public static void beforeAll() {
|
||||
System.out.println("==== Before All");
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void beforeEach() {
|
||||
System.out.println("---- Before Each");
|
||||
}
|
||||
|
||||
@DisplayName("Just another basic test")
|
||||
@Test
|
||||
void anotherBasicTest() {
|
||||
|
||||
// Arrange + act
|
||||
SomeInterface sut = new SomeImpl();
|
||||
String expectedErrorMsg = "/ by zero";
|
||||
|
||||
ArithmeticException thrown = assertThrows(
|
||||
ArithmeticException.class,
|
||||
sut::divideByZero,
|
||||
"Expected an exception to be thrown while dividing by zero, but it didn't"
|
||||
);
|
||||
String actualErrorMsg = thrown.getMessage();
|
||||
|
||||
// Assert
|
||||
assertEquals(expectedErrorMsg, actualErrorMsg);
|
||||
}
|
||||
|
||||
@Disabled("Test disabled")
|
||||
@Test
|
||||
void dummyTest2() {
|
||||
assertTrue(false);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
public void afterEach() {
|
||||
System.out.println("**** After Each");
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
public static void afterAll() {
|
||||
System.out.println("==== After All");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.r35157.libs.random.tests.happy;
|
||||
|
||||
import com.r35157.libs.random.RandomValueGeneratorInt;
|
||||
import com.r35157.libs.random.impl.ref.RandomValueGeneratorIntImpl;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@DisplayName("Happy Random Ints Tests")
|
||||
public class CorrectRandomIntsTests {
|
||||
|
||||
@DisplayName("Extreme narrow band works - always only one value possible")
|
||||
@Test
|
||||
void testThatEqualMinMaxBoundsWorks() {
|
||||
// Arrange
|
||||
int minBound = 7;
|
||||
int maxBound = 7;
|
||||
int expected = 7;
|
||||
RandomValueGeneratorInt sut = new RandomValueGeneratorIntImpl();
|
||||
|
||||
// Act
|
||||
int actual = sut.getSomeInt(minBound, maxBound);
|
||||
|
||||
// Assert
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@DisplayName("Produces different values over multiple calls")
|
||||
@Test
|
||||
void producesDifferentValuesOverMultipleCalls() {
|
||||
// Arrange
|
||||
int iterations = 5;
|
||||
RandomValueGeneratorInt sut = new RandomValueGeneratorIntImpl();
|
||||
Set<Integer> seen = new HashSet<>();
|
||||
|
||||
// Act
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
seen.add(sut.getSomeInt());
|
||||
}
|
||||
|
||||
// Arrange
|
||||
assertTrue(seen.size() > 1, "Int generator returned the same value every time");
|
||||
}
|
||||
|
||||
@DisplayName("Will never throw")
|
||||
@Test
|
||||
void noArgsMethodNeverThrows() {
|
||||
// Arrange
|
||||
int iterations = 10_000;
|
||||
RandomValueGeneratorIntImpl sut = new RandomValueGeneratorIntImpl();
|
||||
|
||||
// Act + Assert
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
assertDoesNotThrow(() -> sut.getSomeInt());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void returnsBothPositiveAndNegative() {
|
||||
// Arrange
|
||||
int iterations = 1_000_000;
|
||||
boolean seenPos = false, seenNeg = false;
|
||||
RandomValueGeneratorIntImpl sut = new RandomValueGeneratorIntImpl();
|
||||
|
||||
// Act
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
int v = sut.getSomeInt();
|
||||
if (v > 0) seenPos = true;
|
||||
if (v < 0) seenNeg = true;
|
||||
if (seenPos && seenNeg) break;
|
||||
}
|
||||
|
||||
// Assert
|
||||
assertTrue(seenPos, "Never saw positive number");
|
||||
assertTrue(seenNeg, "Never saw negative number");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.r35157.libs.random.tests.sad;
|
||||
|
||||
import com.r35157.libs.random.RandomValueGeneratorInt;
|
||||
import com.r35157.libs.random.impl.ref.RandomValueGeneratorIntImpl;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
@DisplayName("Sad Random Ints Tests")
|
||||
public class IncorrectRandomIntsTests {
|
||||
|
||||
@DisplayName("RandomInts.getSomeInts()")
|
||||
@Test
|
||||
void testThatMinBoundIsGreaterThanMaxBoundThrows() {
|
||||
// Arrange
|
||||
int minBound = 10;
|
||||
int maxBound = 5;
|
||||
String expectedErrorMsg = String.format("'minInclusive' (%d) must be less than or equal to 'maxInclusive' (%d)",
|
||||
minBound, maxBound);
|
||||
RandomValueGeneratorInt sut = new RandomValueGeneratorIntImpl();
|
||||
|
||||
// Act
|
||||
IllegalArgumentException thrown = assertThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> sut.getSomeInt(minBound, maxBound)
|
||||
);
|
||||
|
||||
// Assert
|
||||
String actualErrorMsg = thrown.getMessage();
|
||||
assertEquals(expectedErrorMsg, actualErrorMsg);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user