package org.openlca.core.math;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class NumberGeneratorTest {
@Test
public void testDiscrete() {
NumberGenerator genDiscrete = NumberGenerator.normal(5, 0);
for (int i = 0; i < 100; i++)
assertEquals(5.0, genDiscrete.next(), 1e-16);
}
@Test
public void testNormal() {
NumberGenerator gen = NumberGenerator.normal(5, 1);
for (int i = 0; i < 100; i++)
assertInInterval(gen.next(), -100, 100);
}
@Test
public void testLogNormal() {
NumberGenerator gen = NumberGenerator.logNormal(5, 1.1);
for (int i = 0; i < 100; i++)
assertInInterval(gen.next(), 0, 100);
gen = NumberGenerator.logNormal(5, 1);
for (int i = 0; i < 100; i++)
assertEquals(5.0, gen.next(), 1e-5);
}
@Test
public void testUniform() {
NumberGenerator gen = NumberGenerator.uniform(1, 5);
for (int i = 0; i < 100; i++)
assertInInterval(gen.next(), 1, 5);
}
@Test
public void testTriangular() {
NumberGenerator gen = NumberGenerator.triangular(1, 4, 5);
for (int i = 0; i < 100; i++)
assertInInterval(gen.next(), 1, 5);
NumberGenerator genDiscrete = NumberGenerator.triangular(5, 5, 5);
for (int i = 0; i < 100; i++)
assertEquals(5.0, genDiscrete.next(), 1e-16);
}
private void assertInInterval(double val, double lower, double upper) {
assertTrue(val >= lower);
assertTrue(val <= upper);
}
}