public void Init()
 {
     _messageBroker = new MessageBrokerService();
     _subscriber    = Substitute.For <IMockSubscriber>();
     _messageType1  = new MessageType1();
     _messageType2  = new MessageType2();
 }
        internal IMessage ParsePayload(string payload)
        {
            var bitVector = ConvertPayload(payload);

            try
            {
                switch (payload.First())
                {
                case '1':
                    var msg1 = new MessageType1(bitVector);
                    msg1.Distance = _distanceCalculator.Calc(_observationPoint.Longitude, _observationPoint.Latitude, msg1.Longitude, msg1.Latitude);
                    return(msg1);

                case '3':
                    var msg3 = new MessageType3(bitVector);
                    msg3.Distance = _distanceCalculator.Calc(msg3.Longitude, msg3.Latitude, _observationPoint.Longitude, _observationPoint.Latitude);
                    return(msg3);

                case '4':
                    var msg4 = new MessageType4(bitVector);
                    msg4.Distance = _distanceCalculator.Calc(msg4.Longitude, msg4.Latitude, _observationPoint.Longitude, _observationPoint.Latitude);
                    return(msg4);

                case '5':
                    return(new MessageType5(bitVector));

                default:
                    return(new MessageTypeNotImplemented(payload));
                }
            }
            catch (Exception ex)
            {
                return(new MessageParsingError($"Payload: {payload}, {ex.Message}", ex.StackTrace));
            }
        }