package au.gov.amsa.navigation;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.io.InputStreamReader;
import java.util.List;
import org.junit.Test;
import com.google.common.base.Charsets;
import au.gov.amsa.navigation.ShipStaticData.Info;
import au.gov.amsa.risky.format.AisClass;
public class ShipStaticDataTest {
@Test
public void testParse() {
InputStreamReader isr = new InputStreamReader(
ShipStaticDataTest.class.getResourceAsStream("/ship-data.txt"), Charsets.UTF_8);
List<Info> list = ShipStaticData.fromAndClose(isr).toList().toBlocking().single();
assertEquals(2, list.size());
Info a = list.get(0);
Info b = list.get(1);
// a
assertEquals(636014423, a.mmsi);
assertFalse(a.imo.isPresent());
assertEquals(AisClass.B, a.cls);
assertEquals(81, (int) a.shipType.get());
assertEquals(8.5, a.maxDraftMetres.get(), 0.00001);
assertEquals(202, (int) a.dimensionAMetres.get());
assertEquals(46, (int) a.dimensionBMetres.get());
assertEquals(18, (int) a.dimensionCMetres.get());
assertEquals(22, (int) a.dimensionDMetres.get());
assertEquals(248, (int) a.lengthMetres().get());
assertEquals(40, (int) a.widthMetres().get());
assertFalse(a.name.isPresent());
// b
assertEquals(548777000, b.mmsi);
assertEquals("9363821", b.imo.get());
assertEquals(AisClass.A, b.cls);
assertEquals(89, (int) b.shipType.get());
assertEquals(6.4, b.maxDraftMetres.get(), 0.00001);
assertEquals(120, (int) b.dimensionAMetres.get());
assertEquals(25, (int) b.dimensionBMetres.get());
assertEquals(18, (int) b.dimensionCMetres.get());
assertEquals(6, (int) b.dimensionDMetres.get());
assertEquals(145, (int) b.lengthMetres().get());
assertEquals(24, (int) b.widthMetres().get());
assertEquals("AS ORELIA", b.name.get());
}
}