60 lines
1.3 KiB
Java
60 lines
1.3 KiB
Java
|
package pr2.enums.eigene.test;
|
||
|
|
||
|
import org.junit.jupiter.api.Test;
|
||
|
import pr2.enums.eigene.Wuerfel;
|
||
|
|
||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||
|
|
||
|
/**
|
||
|
* Test für die Würfel.
|
||
|
*/
|
||
|
public class WuerfelTest {
|
||
|
|
||
|
/**
|
||
|
* Anzahl der Durchläufe (Gesetz der großen Zahl!).
|
||
|
*/
|
||
|
private static final int RUNS = 10000000;
|
||
|
|
||
|
|
||
|
@Test
|
||
|
void testFairnessD4() {
|
||
|
internalTestFairness(new Wuerfel(Wuerfel.D4), 2.5);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
void testFairnessD6() {
|
||
|
internalTestFairness(new Wuerfel(Wuerfel.D6), 3.5);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
void testFairnessD8() {
|
||
|
internalTestFairness(new Wuerfel(Wuerfel.D8), 4.5);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
void testFairnessD10() {
|
||
|
internalTestFairness(new Wuerfel(Wuerfel.D10), 5.5);
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
void testFairnessD12() {
|
||
|
internalTestFairness(new Wuerfel(Wuerfel.D12), 6.5);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Interne Hilfsmethode, um die Fairness zu testen.
|
||
|
*
|
||
|
* @param w der zu testende Wuerfel.
|
||
|
* @param expected Erwartungswert.
|
||
|
*/
|
||
|
private void internalTestFairness(Wuerfel w, double expected) {
|
||
|
long sum = 0;
|
||
|
|
||
|
for (int i = 0; i < RUNS; i++) {
|
||
|
sum += w.roll();
|
||
|
}
|
||
|
double average = (double) sum / (double) RUNS;
|
||
|
assertEquals(expected, average, 0.1);
|
||
|
}
|
||
|
}
|