package au.gov.amsa.geo.distance;
import static org.junit.Assert.assertEquals;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import org.junit.Test;
import com.github.davidmoten.grumpy.core.Position;
import au.gov.amsa.geo.model.SegmentOptions;
import au.gov.amsa.risky.format.AisClass;
import au.gov.amsa.risky.format.Fix;
import au.gov.amsa.risky.format.FixImpl;
public class OperatorEffectiveSpeedCheckerTest {
@Test
public void testSpiritOfTasmania() throws ParseException {
SegmentOptions options = SegmentOptions.builder().acceptAnyFixHours(12L).maxSpeedKnots(50)
.build();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Fix a = new FixImpl(1, -39.572643f, 145.38763f, df.parse("2015-01-01T03:36:36").getTime(),
AisClass.A);
Fix b = new FixImpl(1, -40.095074f, 145.71864f, df.parse("2015-01-01T04:52:25").getTime(),
AisClass.A);
System.out.println(
Position.create(a.lat(), a.lon()).getDistanceToKm(Position.create(b.lat(), b.lon()))
/ 1.852 / (75.81666666 / 60) + "knots");
assertEquals(27.605441702145423,
EffectiveSpeedChecker.effectiveSpeedKnots(a, b, options).get(), 0.00001);
}
}