public void EncodeThenDecode_ReturnsOriginalString() { const string expected = "Test map string to encode"; var bytes = _service.EncodeMapString(expected); var actual = _service.DecodeMapString(bytes); Assert.AreEqual(expected, actual); }
private byte[] EncodeMapName(IMapFileProperties mapEntity) { //need to pad the map name with 0 bytes so that the 'flippy' is the correct state based on the length //0 bytes are converted to 255 bytes before being written to the file var padding = Enumerable.Repeat((byte)0, 24 - mapEntity.Name.Length).ToArray(); var nameToEncode = $"{mapEntity.Name}{Encoding.ASCII.GetString(padding)}"; var encodedName = _mapStringEncoderService.EncodeMapString(nameToEncode); var formattedName = encodedName.Select(x => x == 0 ? (byte)255 : x).ToArray(); return(formattedName); }
public byte[] SerializeToByteArray(SignMapEntity mapEntity) { var retBytes = new List <byte>(SignMapEntity.DATA_SIZE + mapEntity.Title.Length + mapEntity.Message.Length); retBytes.AddRange(numberEncoderService.EncodeNumber(mapEntity.X, 1)); retBytes.AddRange(numberEncoderService.EncodeNumber(mapEntity.Y, 1)); retBytes.AddRange(numberEncoderService.EncodeNumber(mapEntity.Title.Length + mapEntity.Message.Length + 1, 2)); var fileMsg = new byte[mapEntity.Message.Length + mapEntity.Title.Length]; var rawTitle = mapStringEncoderService.EncodeMapString(mapEntity.Title); Array.Copy(rawTitle, fileMsg, rawTitle.Length); var rawMessage = mapStringEncoderService.EncodeMapString(mapEntity.Message); Array.Copy(rawMessage, 0, fileMsg, rawTitle.Length, rawMessage.Length); retBytes.AddRange(fileMsg); retBytes.AddRange(numberEncoderService.EncodeNumber(rawTitle.Length, 1)); return(retBytes.ToArray()); }