You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.0 KiB
112 lines
3.0 KiB
package mock.model;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import shared.model.Bearing;
|
|
import shared.model.Wind;
|
|
|
|
import static org.junit.Assert.*;
|
|
|
|
|
|
public class RandomWindGeneratorTest {
|
|
|
|
|
|
private RandomWindGenerator randomWindGenerator;
|
|
|
|
private Bearing windBaselineBearing;
|
|
private Bearing windBearingLowerBound;
|
|
private Bearing windBearingUpperBound;
|
|
private double windBaselineSpeed;
|
|
private double windSpeedLowerBound;
|
|
private double windSpeedUpperBound;
|
|
|
|
private double speedKnotsEpsilon;
|
|
private double bearingDegreeEpsilon;
|
|
|
|
|
|
@Before
|
|
public void setUp() throws Exception {
|
|
|
|
|
|
//Bounds.
|
|
this.windBaselineBearing = Bearing.fromDegrees(88.3);
|
|
this.windBearingLowerBound = Bearing.fromDegrees(66.5);
|
|
this.windBearingUpperBound = Bearing.fromDegrees(248.6);
|
|
this.windBaselineSpeed = 13;
|
|
this.windSpeedLowerBound = 7;
|
|
this.windSpeedUpperBound = 20;
|
|
|
|
this.randomWindGenerator = new RandomWindGenerator(
|
|
windBaselineBearing,
|
|
windBearingLowerBound,
|
|
windBearingUpperBound,
|
|
windBaselineSpeed,
|
|
windSpeedLowerBound,
|
|
windSpeedUpperBound );
|
|
|
|
this.bearingDegreeEpsilon = 0.001;
|
|
this.speedKnotsEpsilon = 0.001;
|
|
}
|
|
|
|
|
|
/**
|
|
* Tests if the baseline wind generated it accurate.
|
|
*/
|
|
@Test
|
|
public void generateBaselineWindTest() {
|
|
|
|
Wind wind = randomWindGenerator.generateBaselineWind();
|
|
|
|
assertEquals(windBaselineSpeed, wind.getWindSpeed(), speedKnotsEpsilon);
|
|
assertEquals(windBaselineBearing.degrees(), wind.getWindDirection().degrees(), bearingDegreeEpsilon);
|
|
|
|
}
|
|
|
|
/**
|
|
* Tests if the random wind generated is inside the bounds.
|
|
*/
|
|
@Test
|
|
public void generateRandomWindTest() {
|
|
|
|
int randomWindCount = 1000;
|
|
|
|
for (int i = 0; i < randomWindCount; i++) {
|
|
|
|
Wind wind = randomWindGenerator.generateRandomWind();
|
|
|
|
assertTrue(wind.getWindSpeed() >= windSpeedLowerBound);
|
|
assertTrue(wind.getWindSpeed() <= windSpeedUpperBound);
|
|
|
|
assertTrue(wind.getWindDirection().degrees() >= windBearingLowerBound.degrees());
|
|
assertTrue(wind.getWindDirection().degrees() <= windBearingUpperBound.degrees());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Tests if the next wind generated is inside the bounds.
|
|
*/
|
|
@Test
|
|
public void generateNextWindTest() {
|
|
|
|
Wind wind = randomWindGenerator.generateBaselineWind();
|
|
|
|
int randomWindCount = 1000;
|
|
|
|
for (int i = 0; i < randomWindCount; i++) {
|
|
|
|
wind = randomWindGenerator.generateNextWind(wind);
|
|
|
|
assertTrue(wind.getWindSpeed() >= windSpeedLowerBound);
|
|
assertTrue(wind.getWindSpeed() <= windSpeedUpperBound);
|
|
|
|
assertTrue(wind.getWindDirection().degrees() >= windBearingLowerBound.degrees());
|
|
assertTrue(wind.getWindDirection().degrees() <= windBearingUpperBound.degrees());
|
|
|
|
}
|
|
|
|
}
|
|
}
|