public ISOMensaje Parse(GrupoMensaje grupoMensaje, byte[] data) { ISOMensaje isoData = new ISOMensaje(); if (data.Length > 0) { int index = 0; var valoresSelector = new List<string>(); foreach (var campoMaestro in grupoMensaje.CamposMaestro) { byte[] campoData = new byte[campoMaestro.LongitudTotal]; Array.Copy(data, index, campoData, 0, campoMaestro.LongitudTotal); isoData.Campos.Add(campoData); index += campoMaestro.LongitudTotal; if (campoMaestro.Selector) valoresSelector.Add(byteConverter.Convert(campoData)); } var mensaje = grupoMensaje.MensajePorSelector(valoresSelector); if (mensaje == null) throw new Exception("No se encontró ningun mensaje que concuerde con los selectores enviados"); foreach (var campo in mensaje.Campos) { byte[] campoData = new byte[campo.LongitudTotal]; Array.Copy(data, index, campoData, 0, campo.LongitudTotal); isoData.Campos.Add(campoData); index += campo.LongitudTotal; } } return isoData; }
public void RetornaMensajePorSelector() { GrupoMensaje grupoMensaje = new GrupoMensaje(); grupoMensaje.Mensajes = new[] { new Mensaje { Campos = new[] { new Campo { Selector = true, SelectorRequest = "123" } } } }; var mensaje = grupoMensaje.MensajePorSelector(new[] { "123" }); Assert.AreEqual(mensaje, grupoMensaje.Mensajes[0]); }
public void RetornaNullSinoEncuentraSelectorDadoVariosValores() { GrupoMensaje grupoMensaje = new GrupoMensaje(); grupoMensaje.Mensajes = new[] { new Mensaje { Campos = new[] { new Campo { Selector = true, SelectorRequest = "123" } } } }; var mensaje = grupoMensaje.MensajePorSelector(new[] { "123", "456" }); Assert.IsNull(mensaje); }
public void RetornaMensajePorSelectorCuandoElGrupoTieneVariosMensajes() { GrupoMensaje grupoMensaje = new GrupoMensaje(); grupoMensaje.Mensajes = new[] { new Mensaje { Campos = new[] { new Campo { Selector = true,SelectorRequest = "426"}, new Campo { Selector = true, SelectorRequest = "123" } } }, new Mensaje { Campos = new[] { new Campo { Selector = true,SelectorRequest = "456"}, new Campo { Selector = true, SelectorRequest = "123" } } } }; var mensaje = grupoMensaje.MensajePorSelector(new[] { "123", "456" }); Assert.AreEqual(mensaje, grupoMensaje.Mensajes[1]); }
public void RetornaNullSiNoEncuentraUnMensajePorSelector() { GrupoMensaje grupoMensaje = new GrupoMensaje(); grupoMensaje.Mensajes = new[] { new Mensaje { Campos = new[] { new Campo { Selector = false } } } }; var mensaje = grupoMensaje.MensajePorSelector(new[] { "123" }); Assert.AreEqual(mensaje, null); }