package dk.dma.ais.message;
import dk.dma.ais.binary.SixbitException;
import dk.dma.ais.sentence.SentenceException;
import dk.dma.ais.sentence.Vdm;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class AisMessage19Test {
@Test
public void test() throws AisMessageException, SixbitException, SentenceException {
Vdm vdm = new Vdm();
vdm.parse("!AIVDM,1,1,,B,C5N3SRgPEnJGEBT>NhWAwwo862PaLELTBJ:V00000000S0D:R220,0*0B");
// http://fossies.org/linux/gpsd/test/sample.aivdm
// MessageID: 19
// 774 # RepeatIndicator: 0
// 775 # UserID: 367059850
// 776 # Spare: 0
// 777 # SOG: 8.7
// 778 # PositionAccuracy: 0
// 779 # longitude: -88.8103916667
// 780 # latitude: 29.543695
// 781 # COG: 335.9
// 782 # TrueHeading: 511
// 783 # TimeStamp: 46
// 784 # Spare2: 0
// 785 # name: CAPT.J.RIMES
// 786 # shipandcargo: 70
// 787 # dimA: 5
// 788 # dimB: 21
// 789 # dimC: 4
// 790 # dimD: 4
// 791 # fixtype: 1
// 792 # RAIM: False
// 793 # DTE: 0
// 794 # Spare3: 0
AisMessage message = AisMessage.getInstance(vdm);
assertTrue(message instanceof AisMessage19);
assertEquals(19, message.getMsgId());
assertEquals(0, message.getRepeat());
assertEquals(8.7, ((AisMessage19) message).getSog()/10f, 1e-6);
assertEquals(0, ((AisMessage19) message).getPosAcc());
assertEquals(29.543695, ((AisMessage19) message).getPos().getLatitudeDouble(), 1e-6);
assertEquals(-88.810392, ((AisMessage19) message).getPos().getLongitudeDouble(), 1e-6);
assertEquals(335.9, ((AisMessage19) message).getCog()/10f, 1e-3);
assertEquals(511, ((AisMessage19) message).getTrueHeading());
assertEquals(46, ((AisMessage19) message).getUtcSec());
assertEquals("CAPT.J.RIMES@@@@@@@@", ((AisMessage19) message).getName());
assertEquals(70, ((AisMessage19) message).getShipType());
assertEquals(21, ((AisMessage19) message).getDimStern());
assertEquals(5, ((AisMessage19) message).getDimBow());
assertEquals(4, ((AisMessage19) message).getDimPort());
assertEquals(4, ((AisMessage19) message).getDimStarboard());
assertEquals(0, ((AisMessage19) message).getRaim());
assertEquals(0, ((AisMessage19) message).getDte());
// assertEquals(0, ((AisMessage19) message).getSpare1());
// assertEquals(0, ((AisMessage19) message).getSpare2());
// assertEquals(0, ((AisMessage19) message).getSpare3());
}
}