private void EnBotónEliminarPdis(object sender, EventArgs e) { // Suspende notificaciones. ManejadorDeMapa.SuspendeEventos(); // Obtiene la lista de PDIs a eliminar. List <Pdi> pdisAEliminar = new List <Pdi>(); foreach (ListViewItem item in miLista.Items) { if (item.Checked) { pdisAEliminar.Add(((ElementoConEtiqueta)item.Tag).ElementoDelMapa as Pdi); } } // Pregunta si se quiere eliminar los PDIs. string texto = string.Format("Está seguro que quiere borrar los {0} PDIs seleccionados?", pdisAEliminar.Count); DialogResult respuesta = MessageBox.Show( texto, "Eliminar PDIs", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); // Elimina los PDIs si el usuario dice que si. if (respuesta == DialogResult.Yes) { foreach (Pdi pdi in pdisAEliminar) { pdi.Elimina("Manualmente eliminado en la pestaña de 'Posibles Duplicados'"); } // Restablece notificaciones. ManejadorDeMapa.RestableceEventos(); // Busca otra vez los PDIs duplicados tomando en cuenta // los que se acaban de eliminar. miBuscadorDeDuplicados.Procesa(); } else { // Restablece notificaciones. ManejadorDeMapa.RestableceEventos(); } }
public void PruebaProcesa() { #region Preparación. // Crea el objeto a probar. IEscuchadorDeEstatus escuchadorDeEstatus = new EscuchadorDeEstatusPorOmisión(); ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(escuchadorDeEstatus); ManejadorDePdis manejadorDePdis = new ManejadorDePdis(manejadorDeMapa, new List<Pdi>(), escuchadorDeEstatus); BuscadorDeDuplicados objectoDePrueba = new BuscadorDeDuplicados(manejadorDePdis, escuchadorDeEstatus); // Caso de prueba. Caso[] casos = new[] { // Tipo, Nombre , Latitud, Longitud, Indice de Duplicados , Es Eliminado, Descripción. new Caso ("0x2a06", "El PUNTO" , 10.00000, 20.00000, new[] {2,3,6,7,9} , false , "PDI#1"), new Caso ("0x2a06", "El PUNTO" , 10.00000, 20.00000, null , true , "Idéntico: Mismos nombre, tipo, y coordenada de PDI#1 : es eliminado."), new Caso ("0x2a05", "El PUNTO" , 10.00000, 20.00000, null , false , "Mismo tipo principal: Mismo nombre, tipo principal, y coordenada de PDI#1: es duplicado."), new Caso ("0x2a06", "El PUNTO" , 10.00001, 20.00000, null , false , "Cercano: Mismo nombre y tipo de PDI#1, coordenadas cercanas: es duplicado."), new Caso ("0x2a06", "El PUNTO" , 10.00000, 20.02000, null , false , "Lejano: Mismo nombre y tipo de PDI#1, coordenadas lejanas: no es duplicado."), new Caso ("0x2b06", "El PUNTO" , 10.00000, 20.00000, null , false , "Diferente tipo principal: Mismo nombre y coordenada de PDI#1, diferente tipo principal: no es duplicado."), new Caso ("0x2a06", "EP" , 10.00000, 20.00000, null , false , "Siglas de PDI#1, misma coordenada de PDI#1: es duplicado."), new Caso ("0x2a06", "EP" , 10.00000, 20.00000, null , false , "Siglas de PDI#1, coordenadas cercanas: es duplicado."), new Caso ("0x2a06", " EP " , 10.00000, 20.00000, null , false , "Siglas de PDI#1 con espacios en blanco, coordenadas cercanas: no es duplicado."), new Caso ("0x2a06", "El PUMTO" , 10.00000, 20.00000, null , false , "Nombre similar a PDI#1, coordenadas cercanas: es duplicado."), new Caso ("0x2a06", "EOP" , 15.00000, 20.00000, new[] { 11 } , false , "PDI#2"), new Caso ("0x2a06", "EL OTRO PUNTO", 15.00000, 20.00000, null , false , "PDI#2 es las siglas, misma coordenadas: es duplicado."), }; const int númeroDeDuplicadosDetectados = 2; // Crea los elementos. IList<Pdi> elementos = manejadorDePdis.Elementos; const string clase = "POI"; for (int i = 0; i < casos.Length; ++i) { Caso caso = casos[i]; List<Campo> campos = new List<Campo> { new CampoNombre (caso.Nombre), new CampoTipo (caso.Tipo), new CampoCoordenadas ( CampoCoordenadas.IdentificadorDeCoordenadas, 0, new Coordenadas (caso.Latitud, caso.Longitud)) }; Pdi pdi = new Pdi(manejadorDeMapa, i, clase, campos); elementos.Add(pdi); } // Crea los duplicados. Dictionary<Pdi, IList<Pdi>> duplicados = new Dictionary<Pdi, IList<Pdi>>(); for (int i = 0; i < casos.Length; ++i) { Caso caso = casos[i]; if (caso.IndicesDeLosDuplicados != null) { List<Pdi> pdisDuplicados = new List<Pdi>(); foreach (int j in caso.IndicesDeLosDuplicados) { pdisDuplicados.Add(elementos[j]); } Pdi pdi = elementos[i]; duplicados.Add(pdi, pdisDuplicados); } } #endregion // Llama al método bajo prueba. objectoDePrueba.Procesa(); // Prueba propiedades. AseguraDuplicadosSonIguales(duplicados, objectoDePrueba.GruposDeDuplicados, "GruposDeDuplicados"); Assert.AreEqual(elementos.Count, objectoDePrueba.NúmeroDeElementos, "NúmeroDeElementos"); Assert.AreEqual(númeroDeDuplicadosDetectados, objectoDePrueba.NúmeroDeProblemasDetectados, "NúmeroDeProblemasDetectados"); // Prueba que se hayan eliminados los PDIs idénticos. for (int i = 0; i < casos.Length; ++i) { Assert.AreEqual(casos[i].EsEliminado, elementos[i].FuéEliminado, "Elemento[" + i + "].FuéEliminado"); } }
public void PruebaProcesa() { #region Preparación. // Crea el objeto a probar. IEscuchadorDeEstatus escuchadorDeEstatus = new EscuchadorDeEstatusPorOmisión(); ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(escuchadorDeEstatus); ManejadorDePdis manejadorDePdis = new ManejadorDePdis(manejadorDeMapa, new List <Pdi>(), escuchadorDeEstatus); BuscadorDeDuplicados objectoDePrueba = new BuscadorDeDuplicados(manejadorDePdis, escuchadorDeEstatus); // Caso de prueba. Caso[] casos = new[] { // Tipo, Nombre , Latitud, Longitud, Indice de Duplicados , Es Eliminado, Descripción. new Caso("0x2a06", "El PUNTO", 10.00000, 20.00000, new[] { 2, 3, 6, 7, 9 }, false, "PDI#1"), new Caso("0x2a06", "El PUNTO", 10.00000, 20.00000, null, true, "Idéntico: Mismos nombre, tipo, y coordenada de PDI#1 : es eliminado."), new Caso("0x2a05", "El PUNTO", 10.00000, 20.00000, null, false, "Mismo tipo principal: Mismo nombre, tipo principal, y coordenada de PDI#1: es duplicado."), new Caso("0x2a06", "El PUNTO", 10.00001, 20.00000, null, false, "Cercano: Mismo nombre y tipo de PDI#1, coordenadas cercanas: es duplicado."), new Caso("0x2a06", "El PUNTO", 10.00000, 20.02000, null, false, "Lejano: Mismo nombre y tipo de PDI#1, coordenadas lejanas: no es duplicado."), new Caso("0x2b06", "El PUNTO", 10.00000, 20.00000, null, false, "Diferente tipo principal: Mismo nombre y coordenada de PDI#1, diferente tipo principal: no es duplicado."), new Caso("0x2a06", "EP", 10.00000, 20.00000, null, false, "Siglas de PDI#1, misma coordenada de PDI#1: es duplicado."), new Caso("0x2a06", "EP", 10.00000, 20.00000, null, false, "Siglas de PDI#1, coordenadas cercanas: es duplicado."), new Caso("0x2a06", " EP ", 10.00000, 20.00000, null, false, "Siglas de PDI#1 con espacios en blanco, coordenadas cercanas: no es duplicado."), new Caso("0x2a06", "El PUMTO", 10.00000, 20.00000, null, false, "Nombre similar a PDI#1, coordenadas cercanas: es duplicado."), new Caso("0x2a06", "EOP", 15.00000, 20.00000, new[] { 11 }, false, "PDI#2"), new Caso("0x2a06", "EL OTRO PUNTO", 15.00000, 20.00000, null, false, "PDI#2 es las siglas, misma coordenadas: es duplicado."), }; const int númeroDeDuplicadosDetectados = 2; // Crea los elementos. IList <Pdi> elementos = manejadorDePdis.Elementos; const string clase = "POI"; for (int i = 0; i < casos.Length; ++i) { Caso caso = casos[i]; List <Campo> campos = new List <Campo> { new CampoNombre(caso.Nombre), new CampoTipo(caso.Tipo), new CampoCoordenadas( CampoCoordenadas.IdentificadorDeCoordenadas, 0, new Coordenadas(caso.Latitud, caso.Longitud)) }; Pdi pdi = new Pdi(manejadorDeMapa, i, clase, campos); elementos.Add(pdi); } // Crea los duplicados. Dictionary <Pdi, IList <Pdi> > duplicados = new Dictionary <Pdi, IList <Pdi> >(); for (int i = 0; i < casos.Length; ++i) { Caso caso = casos[i]; if (caso.IndicesDeLosDuplicados != null) { List <Pdi> pdisDuplicados = new List <Pdi>(); foreach (int j in caso.IndicesDeLosDuplicados) { pdisDuplicados.Add(elementos[j]); } Pdi pdi = elementos[i]; duplicados.Add(pdi, pdisDuplicados); } } #endregion // Llama al método bajo prueba. objectoDePrueba.Procesa(); // Prueba propiedades. AseguraDuplicadosSonIguales(duplicados, objectoDePrueba.GruposDeDuplicados, "GruposDeDuplicados"); Assert.AreEqual(elementos.Count, objectoDePrueba.NúmeroDeElementos, "NúmeroDeElementos"); Assert.AreEqual(númeroDeDuplicadosDetectados, objectoDePrueba.NúmeroDeProblemasDetectados, "NúmeroDeProblemasDetectados"); // Prueba que se hayan eliminados los PDIs idénticos. for (int i = 0; i < casos.Length; ++i) { Assert.AreEqual(casos[i].EsEliminado, elementos[i].FuéEliminado, "Elemento[" + i + "].FuéEliminado"); } }