    @Test
    public void parseGeneralMessage() {

        String data = "\\GKV8turbo_generalmessages|KV8turbo_generalmessages|openOV RET|||UTF-8|0.1|2017-04-11T21:53:25+02:00|\uFEFF\r\n" +
                "\\TGENERALMESSAGEUPDATE|GENERALMESSAGEUPDATE|start object\r\n" +
                "\\LDataOwnerCode|MessageCodeDate|MessageCodeNumber|TimingPointDataOwnerCode|TimingPointCode|MessageType|MessageDurationType|MessageStartTime|MessageEndTime|MessageContent|ReasonType|SubReasonType|ReasonContent|EffectType|SubEffectType|EffectContent|MeasureType|SubMeasureType|MeasureContent|AdviceType|SubAdviceType|AdviceContent|MessageTimeStamp\r\n" +
                "RET|2017-04-11|27|ALGEMEEN|31001347|GENERAL|REMOVE|2017-04-11T21:51:08+02:00|\\0|Door defect materieel is er op tram 23 een rit uitgevallen. Houd rekening met een extra reistijd tot 15 min.|0|0|\\0|0|0|\\0|0|6|\\0|0|0|\\0|2017-04-11T21:53:24+02:00\r\n";
        Kv78Packet p = Kv78Parser.parseMessage(data);

        Assert.assertEquals("KV8turbo_generalmessages", p.getType());
        Assert.assertEquals("openOV RET", p.getComment());
        Assert.assertEquals("UTF-8", p.getEncoding());
        Assert.assertEquals("0.1", p.getVersion());
        Assert.assertEquals(ZonedDateTime.parse("2017-04-11T21:53:25+02:00"), p.getGenerated());

        Assert.assertEquals("GENERALMESSAGEUPDATE", p.getTables().get(0).getTableName());
        Assert.assertEquals("start object", p.getTables().get(0).getTableComment());

        Assert.assertEquals(1, p.getTables().get(0).getRecords().size());
        Map<String, String> record = p.getTables().get(0).getRecords().get(0);
        Assert.assertEquals(18, record.size());
        Assert.assertEquals("RET", record.get("DataOwnerCode"));
        Assert.assertEquals("2017-04-11", record.get("MessageCodeDate"));
        Assert.assertEquals("27", record.get("MessageCodeNumber"));
        Assert.assertEquals("ALGEMEEN", record.get("TimingPointDataOwnerCode"));
        Assert.assertEquals("31001347", record.get("TimingPointCode"));
        Assert.assertEquals("GENERAL", record.get("MessageType"));
        Assert.assertEquals("REMOVE", record.get("MessageDurationType"));
        Assert.assertEquals("2017-04-11T21:51:08+02:00", record.get("MessageStartTime"));
        Assert.assertEquals("Door defect materieel is er op tram 23 een rit uitgevallen. Houd rekening met een extra reistijd tot 15 min.", record.get("MessageContent"));
        Assert.assertEquals("0", record.get("ReasonType"));
        Assert.assertEquals("0", record.get("SubReasonType"));
        Assert.assertEquals("0", record.get("EffectType"));
        Assert.assertEquals("0", record.get("SubEffectType"));
        Assert.assertEquals("0", record.get("MeasureType"));
        Assert.assertEquals("6", record.get("SubMeasureType"));
        Assert.assertEquals("0", record.get("AdviceType"));
        Assert.assertEquals("0", record.get("SubAdviceType"));
        Assert.assertEquals("2017-04-11T21:53:24+02:00", record.get("MessageTimeStamp"));


    }