@ -1,6 +1,7 @@
package seng302.Model ;
import javafx.scene.paint.Color ;
import org.junit.Assert ;
import org.junit.Ignore ;
import org.junit.Test ;
import seng302.GPSCoordinate ;
@ -111,4 +112,43 @@ public class BoatInRaceTest {
assertEquals ( testBoat . getVelocity ( ) , 20.0 ) ;
}
@Test
public void getWakeAtProperHeading ( ) throws Exception {
BoatInRace boat = new BoatInRace ( "Test" , 1 , Color . ALICEBLUE , "tt" ) ;
// Construct leg of 0 degrees
GPSCoordinate startPoint = new GPSCoordinate ( 0 , 0 ) ;
GPSCoordinate endPoint = new GPSCoordinate ( 50 , 0 ) ;
Leg leg0deg = new Leg ( "Start" , startPoint , endPoint , 0 ) ;
boat . setCurrentLeg ( leg0deg ) ;
boat . setCurrentPosition ( new GPSCoordinate ( 0 , 0 ) ) ;
assertEquals ( 0 , boat . calculateHeading ( ) , 1e-8 ) ;
// Construct leg from wake - heading should be 180 degrees
Leg leg180deg = new Leg ( "Start" , startPoint , boat . getWake ( ) , 0 ) ;
boat . setCurrentLeg ( leg180deg ) ;
assertEquals ( 180 , boat . calculateHeading ( ) , 1e-8 ) ;
}
@Test
public void getWakeProportionalToVelocity ( ) throws Exception {
BoatInRace boat = new BoatInRace ( "Test" , 10 , Color . ALICEBLUE , "tt" ) ;
// Construct leg of 0 degrees at 0 N
GPSCoordinate startPoint = new GPSCoordinate ( 0 , 0 ) ;
GPSCoordinate endPoint = new GPSCoordinate ( 50 , 0 ) ;
Leg leg0deg = new Leg ( "Start" , startPoint , endPoint , 0 ) ;
boat . setCurrentLeg ( leg0deg ) ;
boat . setCurrentPosition ( new GPSCoordinate ( 0 , 0 ) ) ;
// Get latitude of endpoint of wake at 10 kn (longitude is 0)
double endpointAt10Kn = boat . getWake ( ) . getLatitude ( ) ;
// Latitude of endpoint at 20 kn should be twice endpoint at 10 kn
boat . setVelocity ( 20 ) ;
assertEquals ( 2 * endpointAt10Kn , boat . getWake ( ) . getLatitude ( ) , 1e-8 ) ;
}
}