예제 #1
0
        /// <summary>
        /// Cambia el Campo de Parámetros de Ruta.
        /// </summary>
        /// <param name="elCampoParámetrosDeRutaNuevo">El Campo de Parámetros de Ruta nuevo.</param>
        /// <param name="laRazón">La razón del cambio.</param>
        /// <returns>Una variable lógica que indica si se cambió el campo.</returns>
        public bool CambiaCampoParámetrosDeRuta(CampoParámetrosDeRuta elCampoParámetrosDeRutaNuevo, string laRazón)
        {
            // Solo cambia el campo si es diferente.
            if (elCampoParámetrosDeRutaNuevo == CampoParámetrosDeRuta)
            {
                return(false);
            }

            // Si no tiene Campo de Parámetros de Ruta entonces añadimos
            // un Campo de Parámetros de Ruta con el nuevo Límite de Velocidad y
            // una Clase de Ruta estándar.
            if (!miTieneCampoParámetrosDeRutaEnCampos)
            {
                // Añade el campo.
                AñadeCampo(elCampoParámetrosDeRutaNuevo, laRazón);
                CampoParámetrosDeRuta = elCampoParámetrosDeRutaNuevo;
                miTieneCampoParámetrosDeRutaEnCampos = true;
            }
            else
            {
                // Cambia el campo.
                CambiaCampo(elCampoParámetrosDeRutaNuevo, CampoParámetrosDeRuta, laRazón);
                CampoParámetrosDeRuta = elCampoParámetrosDeRutaNuevo;
            }

            return(true);
        }
        private int ArreglaSentidos(Vía laVía)
        {
            int númeroDeProblemasDetectados = 0;

            string indicadorDeDirección = null;

            if (laVía.CampoIndicadorDeDirección != null)
            {
                indicadorDeDirección = laVía.CampoIndicadorDeDirección.Texto;
            }
            bool unSoloSentido = laVía.CampoParámetrosDeRuta.OtrosParámetros[CampoParámetrosDeRuta.IndiceUnSoloSentido];

            if ((indicadorDeDirección == null) && unSoloSentido)
            {
                CampoGenérico campoIndicadorDeDirecciónDeUnSoloSentido = new CampoGenérico(Vía.IdentificadorIndicadorDeDirección, "1");
                laVía.CambiaCampoIndicadorDeDirección(
                    campoIndicadorDeDirecciónDeUnSoloSentido,
                    "M107: La vía no tiene Indicador de Dirección pero es de un solo sentido. Añadido el Indicadorde Dirrección con valor '1'.");
                ++númeroDeProblemasDetectados;
            }
            else if ((indicadorDeDirección == "1") && !unSoloSentido)
            {
                CampoParámetrosDeRuta campoParámetrosDeRuta = laVía.CampoParámetrosDeRuta;
                bool[] otrosParámetrosNuevos = (bool[])campoParámetrosDeRuta.OtrosParámetros.Clone();
                otrosParámetrosNuevos[CampoParámetrosDeRuta.IndiceUnSoloSentido] = true;
                CampoParámetrosDeRuta campoParámetrosDeRutaNuevo = new CampoParámetrosDeRuta(
                    campoParámetrosDeRuta.LímiteDeVelocidad,
                    campoParámetrosDeRuta.ClaseDeRuta,
                    otrosParámetrosNuevos);
                laVía.CambiaCampoParámetrosDeRuta(
                    campoParámetrosDeRutaNuevo,
                    "M106: La vía tiene el Indicador de Dirección igual a '1' pero no es de un solo sentido. Cambiada a un solo sentido.");
                ++númeroDeProblemasDetectados;
            }
            else if ((indicadorDeDirección == "0") && unSoloSentido)
            {
                CampoGenérico campoIndicadorDeDirecciónDeUnSoloSentido = new CampoGenérico(Vía.IdentificadorIndicadorDeDirección, "1");
                laVía.CambiaCampoIndicadorDeDirección(
                    campoIndicadorDeDirecciónDeUnSoloSentido,
                    "M107: La vía tiene el Indicador de Dirección igual a '0' pero es de un solo sentido. Cambiado el Indicador de Dirección a valor '1'.");
                ++númeroDeProblemasDetectados;
            }

            return(númeroDeProblemasDetectados);
        }
        public void PruebaToString()
        {
            #region Caso 1: Indices en rango válido.
            {
                // Preparación.
                CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(
                    new LímiteDeVelocidad(3),
                    new ClaseDeRuta(1),
                    new bool[] { true, false, false, true, false, false, true, false, false, true });
                string resultadoEsperado = "3,1,1,0,0,1,0,0,1,0,0,1";

                // Llama al constructor en prueba.
                string resultado = objectoEnPrueba.ToString();

                // Prueba resultado.
                Assert.That(resultado, Is.EqualTo(resultadoEsperado), "Resultado");
            }
            #endregion
        }
예제 #4
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="elManejadorDeMapa">El manejador del mapa.</param>
        /// <param name="elNúmero">El número de la <see cref="Polilínea"/>.</param>
        /// <param name="laClase">La clase de la <see cref="Polilínea"/>.</param>
        /// <param name="losCampos">Los campos de la <see cref="Polilínea"/>.</param>
        public Vía(
            ManejadorDeMapa elManejadorDeMapa,
            int elNúmero,
            string laClase,
            IList <Campo> losCampos)
            : base(elManejadorDeMapa,
                   elNúmero,
                   laClase,
                   losCampos)
        {
            CampoParámetrosDeRuta     = miCampoParámetrosDeRutaPorDefecto;
            CampoIndicadorDeDirección = null;

            // Busca los campos específicos de las vías.
            foreach (Campo campo in losCampos)
            {
                CampoParámetrosDeRuta campoParámetrosDeRuta = campo as CampoParámetrosDeRuta;
                CampoNombre           campoNombre;
                CampoGenérico         campoGenérico;
                if (campoParámetrosDeRuta != null)
                {
                    CampoParámetrosDeRuta = campoParámetrosDeRuta;
                    miTieneCampoParámetrosDeRutaEnCampos = true;
                }
                else if ((campoNombre = campo as CampoNombre) != null)
                {
                    if (campoNombre.Número == 2)
                    {
                        miCampoNombreSecundario = campoNombre;
                    }
                }
                else if ((campoGenérico = campo as CampoGenérico) != null)
                {
                    if (campoGenérico.Identificador == IdentificadorIndicadorDeDirección)
                    {
                        CampoIndicadorDeDirección = campoGenérico;
                    }
                }
            }

            CreaNodos();
        }
예제 #5
0
        private void EnMenúEstandarizarLímiteDeVelocidadYClaseDeRuta(object elObjecto, EventArgs losArgumentos)
        {
            // Retornamos si no hay Vías seleccionadas.
            int númeroDeVíasSeleccionadas = Lista.SelectedIndices.Count;

            if (númeroDeVíasSeleccionadas == 0)
            {
                return;
            }

            // Pregunta si se quiere Estandarizar el Límite de Velocidad y la Clase de Ruta.
            DialogResult respuesta = MessageBox.Show(
                string.Format("Está seguro que quiere Estandarizar el Límite de Velocidad y la Clase de Ruta en las {0} Vías seleccionadas?", númeroDeVíasSeleccionadas),
                "Estandarizar Límite de Velocidad y Clase de Ruta",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Warning);

            // Estandarizar el Límite de Velocidad y la Clase de Ruta si el usuario dice que si.
            if (respuesta == DialogResult.Yes)
            {
                // Cambia las vías.
                ManejadorDeVías.SuspendeEventos();
                IList <Vía> vías = ObtieneElementosSeleccionados <Vía>();
                foreach (Vía vía in vías)
                {
                    Tipo?tipo = vía.Tipo;
                    if (tipo != null)
                    {
                        CampoParámetrosDeRuta campo = new CampoParámetrosDeRuta(
                            RestriccionesDeParámetrosDeRuta.LímitesDeVelocidad[(Tipo)tipo],
                            RestriccionesDeParámetrosDeRuta.ClasesDeRuta[(Tipo)tipo],
                            vía.CampoParámetrosDeRuta.OtrosParámetros);
                        vía.CambiaCampoParámetrosDeRuta(campo, "Cambiado a Límite de Velocidad y Clase de Ruta Estándar");
                    }
                }
                ManejadorDeVías.RestableceEventos();

                // Notifica la edición.
                EnvíaEventoEditó();
            }
        }
예제 #6
0
        public void PruebaConstructor()
        {
            // Preparación.
            int                   número           = 12;
            ManejadorDeMapa       manejadorDeMapa  = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
            string                clase            = "clase";
            string                nombre           = "Nombre";
            string                tipo             = "0xc";
            string                descripción      = "Roundabout";
            CampoParámetrosDeRuta parámetrosDeRuta = new CampoParámetrosDeRuta(
                new LímiteDeVelocidad(2),
                new ClaseDeRuta(3),
                new bool[10]);
            List <Campo> campos = new List <Campo> {
                new CampoNombre(nombre),
                new CampoComentario(";Comentario"),
                new CampoTipo(tipo),
                parámetrosDeRuta
            };

            // Llama al constructor.
            Vía objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);

            // Prueba Propiedades.
            Assert.That(campos, Is.EqualTo(objectoEnPrueba.Campos), "Campos");
            Assert.That(clase, Is.EqualTo(objectoEnPrueba.Clase), "Clase");
            Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
            Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
            Assert.That(objectoEnPrueba.FuéModificado, Is.False, "FuéModificado");
            Assert.That(nombre, Is.EqualTo(objectoEnPrueba.Nombre), "Nombre");
            Assert.That(número, Is.EqualTo(objectoEnPrueba.Número), "Número");
            Assert.That(objectoEnPrueba.Original, Is.Null, "Original");
            Assert.That(string.Empty, Is.EqualTo(objectoEnPrueba.RazónParaEliminación), "RazónParaEliminación");
            Assert.That(new Tipo(tipo), Is.EqualTo(objectoEnPrueba.Tipo), "Tipo");
            Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(parámetrosDeRuta), "CampoParámetrosDeRuta");
        }
예제 #7
0
        public void PruebaCambiaCampoParámetrosDeRuta()
        {
            #region Caso 1: Vía con Campo de Parámetros de Ruta.
            {
                #region Preparación.
                int             número          = 12;
                ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
                string          clase           = "clase";
                string          nombre          = "Nombre";
                string          tipo            = "0xc";
                string          descripción     = "Roundabout";

                CampoParámetrosDeRuta campoParámetrosDeRuta = new CampoParámetrosDeRuta(
                    new LímiteDeVelocidad(2),
                    new ClaseDeRuta(3),
                    new bool[] { true, false, false, true, true, false, true, true, false, false });

                List <Campo> campos = new List <Campo> {
                    new CampoNombre(nombre),
                    new CampoComentario(";Comentario"),
                    new CampoTipo(tipo),
                    campoParámetrosDeRuta
                };

                // Crea el objeto en prueba.
                Vía             objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);
                ElementoDelMapa víaOriginal     = (ElementoDelMapa)objectoEnPrueba.Clone();

                // Nuevos valores.
                CampoParámetrosDeRuta nuevoCampoParámetrosDeRuta = new CampoParámetrosDeRuta(
                    new LímiteDeVelocidad(5),
                    campoParámetrosDeRuta.ClaseDeRuta,
                    campoParámetrosDeRuta.OtrosParámetros);
                Assert.That(nuevoCampoParámetrosDeRuta, Is.Not.EqualTo(campoParámetrosDeRuta), "El nuevo campo de parámetros de ruta debe ser distinto");
                #endregion

                // Llama al método a probar.
                objectoEnPrueba.CambiaCampoParámetrosDeRuta(nuevoCampoParámetrosDeRuta, "Razón");

                // Prueba Propiedades.
                Assert.That(objectoEnPrueba.Campos, Is.EqualTo(campos), "Campos");
                Assert.That(objectoEnPrueba.Clase, Is.EqualTo(clase), "Clase");
                Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
                Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
                Assert.That(objectoEnPrueba.FuéModificado, Is.True, "FuéModificado");
                Assert.That(objectoEnPrueba.Nombre, Is.EqualTo(nombre), "Nombre");
                Assert.That(objectoEnPrueba.Número, Is.EqualTo(número), "Número");
                PruebaElementoDesconocido.AseguraElementoEsEquivalente(víaOriginal, objectoEnPrueba.Original, "Original");
                Assert.That(objectoEnPrueba.RazónParaEliminación, Is.EqualTo(string.Empty), "RazónParaEliminación");
                Assert.That(objectoEnPrueba.Tipo, Is.EqualTo(new Tipo(tipo)), "Tipo");
                Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(nuevoCampoParámetrosDeRuta), "CampoParámetrosDeRuta");
            }
            #endregion

            #region Caso 2: Vía sin Campo de Parámetros de Ruta.
            {
                #region Preparación.
                int             número          = 12;
                ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
                string          clase           = "clase";
                string          nombre          = "Nombre";
                string          tipo            = "0xc";
                string          descripción     = "Roundabout";
                List <Campo>    campos          = new List <Campo> {
                    new CampoNombre(nombre),
                    new CampoComentario(";Comentario"),
                    new CampoTipo(tipo)
                };

                // Crea el objeto en prueba.
                Vía             objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);
                ElementoDelMapa víaOriginal     = (ElementoDelMapa)objectoEnPrueba.Clone();

                // Nuevos valores.
                CampoParámetrosDeRuta nuevoCampoParámetrosDeRuta = new CampoParámetrosDeRuta(
                    new LímiteDeVelocidad(4),
                    new ClaseDeRuta(1),
                    new bool[10]);
                #endregion

                // Llama al método a probar.
                objectoEnPrueba.CambiaCampoParámetrosDeRuta(nuevoCampoParámetrosDeRuta, "Razón");

                // Prueba Propiedades.
                Assert.That(objectoEnPrueba.Campos, Is.EqualTo(campos), "Campos");
                Assert.That(objectoEnPrueba.Clase, Is.EqualTo(clase), "Clase");
                Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
                Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
                Assert.That(objectoEnPrueba.FuéModificado, Is.True, "FuéModificado");
                Assert.That(objectoEnPrueba.Nombre, Is.EqualTo(nombre), "Nombre");
                Assert.That(objectoEnPrueba.Número, Is.EqualTo(número), "Número");
                PruebaElementoDesconocido.AseguraElementoEsEquivalente(víaOriginal, objectoEnPrueba.Original, "Original");
                Assert.That(objectoEnPrueba.RazónParaEliminación, Is.EqualTo(string.Empty), "RazónParaEliminación");
                Assert.That(objectoEnPrueba.Tipo, Is.EqualTo(new Tipo(tipo)), "Tipo");
                Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(nuevoCampoParámetrosDeRuta), "CampoParámetrosDeRuta");
            }
            #endregion

            #region Caso 3: Vía con el Mismo Campo de Parámetros de Ruta.
            {
                #region Preparación.
                int             número          = 12;
                ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
                string          clase           = "clase";
                string          nombre          = "Nombre";
                string          tipo            = "0xc";
                string          descripción     = "Roundabout";

                CampoParámetrosDeRuta campoParámetrosDeRuta = new CampoParámetrosDeRuta(
                    new LímiteDeVelocidad(2),
                    new ClaseDeRuta(3),
                    new bool[] { true, false, false, true, true, false, true, true, false, false });

                List <Campo> campos = new List <Campo> {
                    new CampoNombre(nombre),
                    new CampoComentario(";Comentario"),
                    new CampoTipo(tipo),
                    campoParámetrosDeRuta
                };

                // Crea el objeto en prueba.
                Vía objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);
                #endregion

                // Llama al método a probar.
                objectoEnPrueba.CambiaCampoParámetrosDeRuta(campoParámetrosDeRuta, "Razón");

                // Prueba Propiedades.
                Assert.That(objectoEnPrueba.Campos, Is.EqualTo(campos), "Campos");
                Assert.That(objectoEnPrueba.Clase, Is.EqualTo(clase), "Clase");
                Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
                Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
                Assert.That(objectoEnPrueba.FuéModificado, Is.False, "FuéModificado");
                Assert.That(objectoEnPrueba.Nombre, Is.EqualTo(nombre), "Nombre");
                Assert.That(objectoEnPrueba.Número, Is.EqualTo(número), "Número");
                Assert.That(objectoEnPrueba.Original, Is.Null, "Original");
                Assert.That(objectoEnPrueba.RazónParaEliminación, Is.EqualTo(string.Empty), "RazónParaEliminación");
                Assert.That(objectoEnPrueba.Tipo, Is.EqualTo(new Tipo(tipo)), "Tipo");
                Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(campoParámetrosDeRuta), "CampoParámetrosDeRuta");
            }
            #endregion
        }
        public void PruebaConstructorConString()
        {
            #region Caso 1: Indice en rango válido.
            {
                // Preparación.
                LímiteDeVelocidad límiteDeVelocidad        = new LímiteDeVelocidad(2);
                ClaseDeRuta       claseDeRuta              = new ClaseDeRuta(3);
                string            parámetrosDeRuta         = "2,3,0,1,0,0,0,0,0,0,0,1";
                bool[]            otrosParámetrosEsperados = new bool[] { false, true, false, false, false, false, false, false, false, true };

                // Llama al constructor en prueba.
                CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(parámetrosDeRuta);

                // Prueba Propiedades.
                Assert.That(objectoEnPrueba.Identificador, Is.EqualTo(CampoParámetrosDeRuta.IdentificadorDeParámetrosDeRuta), "Identificador");
                Assert.That(objectoEnPrueba.ClaseDeRuta, Is.EqualTo(claseDeRuta), "ClaseDeRuta");
                Assert.That(objectoEnPrueba.LímiteDeVelocidad, Is.EqualTo(límiteDeVelocidad), "LímiteDeVelocidad");
                Assert.That(objectoEnPrueba.OtrosParámetros, Is.EqualTo(otrosParámetrosEsperados), "OtrosParámetros");
            }
            #endregion

            #region Caso 2: Parametros de Tuta con muy pocos elementos.
            {
                // Preparación.
                string            parametrosDeRutaInválidos = "2";
                bool              lanzóExcepción            = false;
                ArgumentException excepciónEsperada         = new ArgumentException(
                    "Los parámetros de rutas deben tener 12 elementos separados por coma, pero es: 2");

                // Llama al constructor en prueba.
                try
                {
                    CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(parametrosDeRutaInválidos);
                }
                catch (Exception e)
                {
                    // Prueba las propiedades de la excepción.
                    Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
                    Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

                    lanzóExcepción = true;
                }

                Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
            }
            #endregion

            #region Caso 3: Otros Parámetros con valores diferente de 0 ó 1.
            {
                // Preparación.
                string            parametrosDeRutaInválidos = "2,3,0,5,0,0,0,0,0,0,0,1";
                bool              lanzóExcepción            = false;
                ArgumentException excepciónEsperada         = new ArgumentException(
                    "El números de los parámetros de ruta para el tercer elemento en adelante tiene que ser 0 ó 1:" +
                    " 2,3,0,5,0,0,0,0,0,0,0,1\r\nParameter name: elTextoDeParámetrosDeRuta");

                // Llama al constructor en prueba.
                try
                {
                    CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(parametrosDeRutaInválidos);
                }
                catch (Exception e)
                {
                    // Prueba las propiedades de la excepción.
                    Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
                    Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

                    lanzóExcepción = true;
                }

                Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
            }
            #endregion
        }
        public void PruebaConstructorConLímiteDeVelocidadClaseDeRutaBoolArray()
        {
            #region Caso 1: Caso normal.
            {
                // Preparación.
                LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad(2);
                ClaseDeRuta       claseDeRuta       = new ClaseDeRuta(3);
                bool[]            otrosParámetros   = new bool[] { true, false, true, false, false, false, true, true, false, true };

                // Llama al constructor en prueba.
                CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(límiteDeVelocidad, claseDeRuta, otrosParámetros);

                // Prueba Propiedades.
                Assert.That(objectoEnPrueba.Identificador, Is.EqualTo(CampoParámetrosDeRuta.IdentificadorDeParámetrosDeRuta), "Identificador");
                Assert.That(objectoEnPrueba.ClaseDeRuta, Is.EqualTo(claseDeRuta), "ClaseDeRuta");
                Assert.That(objectoEnPrueba.LímiteDeVelocidad, Is.EqualTo(límiteDeVelocidad), "LímiteDeVelocidad");
                Assert.That(objectoEnPrueba.OtrosParámetros, Is.EqualTo(otrosParámetros), "OtrosParámetros");
            }
            #endregion

            #region Caso 2: Muy pocos elementos en Otros Parámetros.
            {
                // Preparación.
                LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad(2);
                ClaseDeRuta       claseDeRuta       = new ClaseDeRuta(3);
                bool[]            otrosParámetros   = new bool[] { true, true, false, false, false, true, true, false, true };
                bool lanzóExcepción = false;
                ArgumentException excepciónEsperada = new ArgumentException(
                    "El números de Otrós Parámetros debe ser 10 pero es 9\r\nParameter name: losOtrosParámetros");

                // Llama al constructor en prueba.
                try
                {
                    CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(límiteDeVelocidad, claseDeRuta, otrosParámetros);
                }
                catch (Exception e)
                {
                    // Prueba las propiedades de la excepción.
                    Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
                    Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

                    lanzóExcepción = true;
                }

                Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
            }
            #endregion

            #region Caso 3: Muchos elementos en Otros Parámetros.
            {
                // Preparación.
                LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad(2);
                ClaseDeRuta       claseDeRuta       = new ClaseDeRuta(3);
                bool[]            otrosParámetros   = new bool[] { true, true, false, true, false, false, false, true, true, false, true };
                bool lanzóExcepción = false;
                ArgumentException excepciónEsperada = new ArgumentException(
                    "El números de Otrós Parámetros debe ser 10 pero es 11\r\nParameter name: losOtrosParámetros");

                // Llama al constructor en prueba.
                try
                {
                    CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(límiteDeVelocidad, claseDeRuta, otrosParámetros);
                }
                catch (Exception e)
                {
                    // Prueba las propiedades de la excepción.
                    Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
                    Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

                    lanzóExcepción = true;
                }

                Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
            }
            #endregion
        }
예제 #10
0
        /// <summary>
        /// Cambia el Campo de Parámetros de Ruta.
        /// </summary>
        /// <param name="elCampoParámetrosDeRutaNuevo">El Campo de Parámetros de Ruta nuevo.</param>
        /// <param name="laRazón">La razón del cambio.</param>
        /// <returns>Una variable lógica que indica si se cambió el campo.</returns>
        public bool CambiaCampoParámetrosDeRuta(CampoParámetrosDeRuta elCampoParámetrosDeRutaNuevo, string laRazón)
        {
            // Solo cambia el campo si es diferente.
              if (elCampoParámetrosDeRutaNuevo == CampoParámetrosDeRuta)
              {
            return false;
              }

              // Si no tiene Campo de Parámetros de Ruta entonces añadimos
              // un Campo de Parámetros de Ruta con el nuevo Límite de Velocidad y
              // una Clase de Ruta estándar.
              if (!miTieneCampoParámetrosDeRutaEnCampos)
              {
            // Añade el campo.
            AñadeCampo(elCampoParámetrosDeRutaNuevo, laRazón);
            CampoParámetrosDeRuta = elCampoParámetrosDeRutaNuevo;
            miTieneCampoParámetrosDeRutaEnCampos = true;
              }
              else
              {
            // Cambia el campo.
            CambiaCampo(elCampoParámetrosDeRutaNuevo, CampoParámetrosDeRuta, laRazón);
            CampoParámetrosDeRuta = elCampoParámetrosDeRutaNuevo;
              }

              return true;
        }
예제 #11
0
        public void PruebaCambiaCampoParámetrosDeRuta()
        {
            #region Caso 1: Vía con Campo de Parámetros de Ruta.
              {
            #region Preparación.
            int número = 12;
            ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
            string clase = "clase";
            string nombre = "Nombre";
            string tipo = "0xc";
            string descripción = "Roundabout";

            CampoParámetrosDeRuta campoParámetrosDeRuta = new CampoParámetrosDeRuta(
              new LímiteDeVelocidad(2),
              new ClaseDeRuta(3),
              new bool[] { true, false, false, true, true, false, true, true, false, false });

            List<Campo> campos = new List<Campo> {
              new CampoNombre (nombre),
              new CampoComentario (";Comentario"),
              new CampoTipo (tipo),
              campoParámetrosDeRuta
            };

            // Crea el objeto en prueba.
            Vía objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);
            ElementoDelMapa víaOriginal = (ElementoDelMapa)objectoEnPrueba.Clone();

            // Nuevos valores.
            CampoParámetrosDeRuta nuevoCampoParámetrosDeRuta = new CampoParámetrosDeRuta(
              new LímiteDeVelocidad(5),
              campoParámetrosDeRuta.ClaseDeRuta,
              campoParámetrosDeRuta.OtrosParámetros);
            Assert.That(nuevoCampoParámetrosDeRuta, Is.Not.EqualTo(campoParámetrosDeRuta), "El nuevo campo de parámetros de ruta debe ser distinto");
            #endregion

            // Llama al método a probar.
            objectoEnPrueba.CambiaCampoParámetrosDeRuta(nuevoCampoParámetrosDeRuta, "Razón");

            // Prueba Propiedades.
            Assert.That(objectoEnPrueba.Campos, Is.EqualTo(campos), "Campos");
            Assert.That(objectoEnPrueba.Clase, Is.EqualTo(clase), "Clase");
            Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
            Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
            Assert.That(objectoEnPrueba.FuéModificado, Is.True, "FuéModificado");
            Assert.That(objectoEnPrueba.Nombre, Is.EqualTo(nombre), "Nombre");
            Assert.That(objectoEnPrueba.Número, Is.EqualTo(número), "Número");
            PruebaElementoDesconocido.AseguraElementoEsEquivalente(víaOriginal, objectoEnPrueba.Original, "Original");
            Assert.That(objectoEnPrueba.RazónParaEliminación, Is.EqualTo(string.Empty), "RazónParaEliminación");
            Assert.That(objectoEnPrueba.Tipo, Is.EqualTo(new Tipo(tipo)), "Tipo");
            Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(nuevoCampoParámetrosDeRuta), "CampoParámetrosDeRuta");
              }
              #endregion

              #region Caso 2: Vía sin Campo de Parámetros de Ruta.
              {
            #region Preparación.
            int número = 12;
            ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
            string clase = "clase";
            string nombre = "Nombre";
            string tipo = "0xc";
            string descripción = "Roundabout";
            List<Campo> campos = new List<Campo> {
              new CampoNombre (nombre),
              new CampoComentario (";Comentario"),
              new CampoTipo (tipo)
            };

            // Crea el objeto en prueba.
            Vía objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);
            ElementoDelMapa víaOriginal = (ElementoDelMapa)objectoEnPrueba.Clone();

            // Nuevos valores.
            CampoParámetrosDeRuta nuevoCampoParámetrosDeRuta = new CampoParámetrosDeRuta(
              new LímiteDeVelocidad (4),
              new ClaseDeRuta (1),
              new bool[10]);
            #endregion

            // Llama al método a probar.
            objectoEnPrueba.CambiaCampoParámetrosDeRuta(nuevoCampoParámetrosDeRuta, "Razón");

            // Prueba Propiedades.
            Assert.That(objectoEnPrueba.Campos, Is.EqualTo(campos), "Campos");
            Assert.That(objectoEnPrueba.Clase, Is.EqualTo(clase), "Clase");
            Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
            Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
            Assert.That(objectoEnPrueba.FuéModificado, Is.True, "FuéModificado");
            Assert.That(objectoEnPrueba.Nombre, Is.EqualTo(nombre), "Nombre");
            Assert.That(objectoEnPrueba.Número, Is.EqualTo(número), "Número");
            PruebaElementoDesconocido.AseguraElementoEsEquivalente(víaOriginal, objectoEnPrueba.Original, "Original");
            Assert.That(objectoEnPrueba.RazónParaEliminación, Is.EqualTo(string.Empty), "RazónParaEliminación");
            Assert.That(objectoEnPrueba.Tipo, Is.EqualTo(new Tipo(tipo)), "Tipo");
            Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(nuevoCampoParámetrosDeRuta), "CampoParámetrosDeRuta");
              }
              #endregion

              #region Caso 3: Vía con el Mismo Campo de Parámetros de Ruta.
              {
            #region Preparación.
            int número = 12;
            ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
            string clase = "clase";
            string nombre = "Nombre";
            string tipo = "0xc";
            string descripción = "Roundabout";

            CampoParámetrosDeRuta campoParámetrosDeRuta = new CampoParámetrosDeRuta(
              new LímiteDeVelocidad(2),
              new ClaseDeRuta(3),
              new bool[] { true, false, false, true, true, false, true, true, false, false });

            List<Campo> campos = new List<Campo> {
              new CampoNombre (nombre),
              new CampoComentario (";Comentario"),
              new CampoTipo (tipo),
              campoParámetrosDeRuta
            };

            // Crea el objeto en prueba.
            Vía objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);
            #endregion

            // Llama al método a probar.
            objectoEnPrueba.CambiaCampoParámetrosDeRuta(campoParámetrosDeRuta, "Razón");

            // Prueba Propiedades.
            Assert.That(objectoEnPrueba.Campos, Is.EqualTo(campos), "Campos");
            Assert.That(objectoEnPrueba.Clase, Is.EqualTo(clase), "Clase");
            Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
            Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
            Assert.That(objectoEnPrueba.FuéModificado, Is.False, "FuéModificado");
            Assert.That(objectoEnPrueba.Nombre, Is.EqualTo(nombre), "Nombre");
            Assert.That(objectoEnPrueba.Número, Is.EqualTo(número), "Número");
            Assert.That(objectoEnPrueba.Original, Is.Null, "Original");
            Assert.That(objectoEnPrueba.RazónParaEliminación, Is.EqualTo(string.Empty), "RazónParaEliminación");
            Assert.That(objectoEnPrueba.Tipo, Is.EqualTo(new Tipo(tipo)), "Tipo");
            Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(campoParámetrosDeRuta), "CampoParámetrosDeRuta");
              }
              #endregion
        }
예제 #12
0
        public void PruebaConstructor()
        {
            // Preparación.
              int número = 12;
              ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(new EscuchadorDeEstatusPorOmisión());
              string clase = "clase";
              string nombre = "Nombre";
              string tipo = "0xc";
              string descripción = "Roundabout";
              CampoParámetrosDeRuta parámetrosDeRuta = new CampoParámetrosDeRuta(
            new LímiteDeVelocidad(2),
            new ClaseDeRuta(3),
            new bool[10]);
              List<Campo> campos = new List<Campo> {
            new CampoNombre (nombre),
            new CampoComentario (";Comentario"),
            new CampoTipo (tipo),
            parámetrosDeRuta
              };

              // Llama al constructor.
              Vía objectoEnPrueba = new Vía(manejadorDeMapa, número, clase, campos);

              // Prueba Propiedades.
              Assert.That(campos, Is.EqualTo(objectoEnPrueba.Campos), "Campos");
              Assert.That(clase, Is.EqualTo(objectoEnPrueba.Clase), "Clase");
              Assert.That(descripción, Is.EqualTo(objectoEnPrueba.Descripción), "Descripción");
              Assert.That(objectoEnPrueba.FuéEliminado, Is.False, "FuéEliminado");
              Assert.That(objectoEnPrueba.FuéModificado, Is.False, "FuéModificado");
              Assert.That(nombre, Is.EqualTo(objectoEnPrueba.Nombre), "Nombre");
              Assert.That(número, Is.EqualTo(objectoEnPrueba.Número), "Número");
              Assert.That(objectoEnPrueba.Original, Is.Null, "Original");
              Assert.That(string.Empty, Is.EqualTo(objectoEnPrueba.RazónParaEliminación), "RazónParaEliminación");
              Assert.That(new Tipo(tipo), Is.EqualTo(objectoEnPrueba.Tipo), "Tipo");
              Assert.That(objectoEnPrueba.CampoParámetrosDeRuta, Is.EqualTo(parámetrosDeRuta), "CampoParámetrosDeRuta");
        }
        public void PruebaConstructorConLímiteDeVelocidadClaseDeRutaBoolArray()
        {
            #region Caso 1: Caso normal.
              {
            // Preparación.
            LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad(2);
            ClaseDeRuta claseDeRuta = new ClaseDeRuta(3);
            bool[] otrosParámetros = new bool[] { true, false, true, false, false, false, true, true, false, true };

            // Llama al constructor en prueba.
            CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(límiteDeVelocidad, claseDeRuta, otrosParámetros);

            // Prueba Propiedades.
            Assert.That(objectoEnPrueba.Identificador, Is.EqualTo(CampoParámetrosDeRuta.IdentificadorDeParámetrosDeRuta), "Identificador");
            Assert.That(objectoEnPrueba.ClaseDeRuta, Is.EqualTo(claseDeRuta), "ClaseDeRuta");
            Assert.That(objectoEnPrueba.LímiteDeVelocidad, Is.EqualTo(límiteDeVelocidad), "LímiteDeVelocidad");
            Assert.That(objectoEnPrueba.OtrosParámetros, Is.EqualTo(otrosParámetros), "OtrosParámetros");
              }
              #endregion

              #region Caso 2: Muy pocos elementos en Otros Parámetros.
              {
            // Preparación.
            LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad(2);
            ClaseDeRuta claseDeRuta = new ClaseDeRuta(3);
            bool[] otrosParámetros = new bool[] { true, true, false, false, false, true, true, false, true };
            bool lanzóExcepción = false;
            ArgumentException excepciónEsperada = new ArgumentException(
              "El números de Otrós Parámetros debe ser 10 pero es 9\r\nParameter name: losOtrosParámetros");

            // Llama al constructor en prueba.
            try
            {
              CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(límiteDeVelocidad, claseDeRuta, otrosParámetros);
            }
            catch (Exception e)
            {
              // Prueba las propiedades de la excepción.
              Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
              Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

              lanzóExcepción = true;
            }

            Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
              }
              #endregion

              #region Caso 3: Muchos elementos en Otros Parámetros.
              {
            // Preparación.
            LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad(2);
            ClaseDeRuta claseDeRuta = new ClaseDeRuta(3);
            bool[] otrosParámetros = new bool[] { true, true, false, true, false, false, false, true, true, false, true };
            bool lanzóExcepción = false;
            ArgumentException excepciónEsperada = new ArgumentException(
              "El números de Otrós Parámetros debe ser 10 pero es 11\r\nParameter name: losOtrosParámetros");

            // Llama al constructor en prueba.
            try
            {
              CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(límiteDeVelocidad, claseDeRuta, otrosParámetros);
            }
            catch (Exception e)
            {
              // Prueba las propiedades de la excepción.
              Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
              Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

              lanzóExcepción = true;
            }

            Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
              }
              #endregion
        }
        public void PruebaToString()
        {
            #region Caso 1: Indices en rango válido.
              {
            // Preparación.
            CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(
              new LímiteDeVelocidad (3),
              new ClaseDeRuta (1),
              new bool[] { true, false, false, true, false, false, true, false, false, true });
            string resultadoEsperado = "3,1,1,0,0,1,0,0,1,0,0,1";

            // Llama al constructor en prueba.
            string resultado = objectoEnPrueba.ToString();

            // Prueba resultado.
            Assert.That(resultado, Is.EqualTo(resultadoEsperado), "Resultado");
              }
              #endregion
        }
        public void PruebaConstructorConString()
        {
            #region Caso 1: Indice en rango válido.
              {
            // Preparación.
            LímiteDeVelocidad límiteDeVelocidad = new LímiteDeVelocidad (2);
            ClaseDeRuta claseDeRuta = new ClaseDeRuta (3);
            string parámetrosDeRuta = "2,3,0,1,0,0,0,0,0,0,0,1";
            bool[] otrosParámetrosEsperados = new bool[] { false, true, false, false, false, false, false, false, false, true };

            // Llama al constructor en prueba.
            CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(parámetrosDeRuta);

            // Prueba Propiedades.
            Assert.That(objectoEnPrueba.Identificador, Is.EqualTo(CampoParámetrosDeRuta.IdentificadorDeParámetrosDeRuta), "Identificador");
            Assert.That(objectoEnPrueba.ClaseDeRuta, Is.EqualTo(claseDeRuta), "ClaseDeRuta");
            Assert.That(objectoEnPrueba.LímiteDeVelocidad, Is.EqualTo(límiteDeVelocidad), "LímiteDeVelocidad");
            Assert.That(objectoEnPrueba.OtrosParámetros, Is.EqualTo(otrosParámetrosEsperados), "OtrosParámetros");
              }
              #endregion

              #region Caso 2: Parametros de Tuta con muy pocos elementos.
              {
            // Preparación.
            string parametrosDeRutaInválidos = "2";
            bool lanzóExcepción = false;
            ArgumentException excepciónEsperada = new ArgumentException(
              "Los parámetros de rutas deben tener 12 elementos separados por coma, pero es: 2");

            // Llama al constructor en prueba.
            try
            {
              CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(parametrosDeRutaInválidos);
            }
            catch (Exception e)
            {
              // Prueba las propiedades de la excepción.
              Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
              Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

              lanzóExcepción = true;
            }

            Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
              }
              #endregion

              #region Caso 3: Otros Parámetros con valores diferente de 0 ó 1.
              {
            // Preparación.
            string parametrosDeRutaInválidos = "2,3,0,5,0,0,0,0,0,0,0,1";
            bool lanzóExcepción = false;
            ArgumentException excepciónEsperada = new ArgumentException(
              "El números de los parámetros de ruta para el tercer elemento en adelante tiene que ser 0 ó 1:" +
              " 2,3,0,5,0,0,0,0,0,0,0,1\r\nParameter name: elTextoDeParámetrosDeRuta");

            // Llama al constructor en prueba.
            try
            {
              CampoParámetrosDeRuta objectoEnPrueba = new CampoParámetrosDeRuta(parametrosDeRutaInválidos);
            }
            catch (Exception e)
            {
              // Prueba las propiedades de la excepción.
              Assert.That(e.GetType(), Is.EqualTo(excepciónEsperada.GetType()), "Tipo de Excepción");
              Assert.That(e.Message, Is.EqualTo(excepciónEsperada.Message), "Excepción.Message");

              lanzóExcepción = true;
            }

            Assert.That(lanzóExcepción, Is.True, "No se lanzó la excepción.");
              }
              #endregion
        }
        private void EnMenúEstandarizarLímiteDeVelocidadYClaseDeRuta(object elObjecto, EventArgs losArgumentos)
        {
            // Retornamos si no hay Vías seleccionadas.
              int númeroDeVíasSeleccionadas = Lista.SelectedIndices.Count;
              if (númeroDeVíasSeleccionadas == 0)
              {
            return;
              }

              // Pregunta si se quiere Estandarizar el Límite de Velocidad y la Clase de Ruta.
              DialogResult respuesta = MessageBox.Show(
            string.Format("Está seguro que quiere Estandarizar el Límite de Velocidad y la Clase de Ruta en las {0} Vías seleccionadas?", númeroDeVíasSeleccionadas),
            "Estandarizar Límite de Velocidad y Clase de Ruta",
            MessageBoxButtons.YesNo,
            MessageBoxIcon.Warning);

              // Estandarizar el Límite de Velocidad y la Clase de Ruta si el usuario dice que si.
              if (respuesta == DialogResult.Yes)
              {
            // Cambia las vías.
            ManejadorDeVías.SuspendeEventos();
            IList<Vía> vías = ObtieneElementosSeleccionados<Vía>();
            foreach (Vía vía in vías)
            {
              Tipo? tipo = vía.Tipo;
              if (tipo != null)
              {
            CampoParámetrosDeRuta campo = new CampoParámetrosDeRuta(
              RestriccionesDeParámetrosDeRuta.LímitesDeVelocidad[(Tipo)tipo],
              RestriccionesDeParámetrosDeRuta.ClasesDeRuta[(Tipo)tipo],
              vía.CampoParámetrosDeRuta.OtrosParámetros);
            vía.CambiaCampoParámetrosDeRuta(campo, "Cambiado a Límite de Velocidad y Clase de Ruta Estándar");
              }
            }
            ManejadorDeVías.RestableceEventos();

            // Notifica la edición.
            EnvíaEventoEditó();
              }
        }