public void TestReducirAngulos() { Lista <Angulo> angulos = new Lista <Angulo>(Factoria.CrearAngulos()); #region SumaGradosAngulos var sumaGrados = angulos.Reducir((float acumulado, Angulo angulo) => acumulado + angulo.Grados); var expectedSumaGrados = (float)GetArrayIndices(0, 360).Aggregate((acumulado, val) => acumulado + val); Assert.AreEqual(expectedSumaGrados, sumaGrados, "El método Reducir() no funciona correctamente."); #endregion #region SenoMaximoAngulos var senoMaximo = angulos.Reducir((double senoMax, Angulo angulo) => Math.Max(senoMax, angulo.Seno())); var expectedSenoMaximo = 1.0; Assert.AreEqual(expectedSenoMaximo, senoMaximo, "El método Reducir() no funciona correctamente."); #endregion }
public void TestListaSet() { lista = new Lista <int>(0, 1, 2); lista.Set(0, 9); Assert.AreEqual(3, lista.NumeroElementos, "Hacer un Set() incrementa el número de elementos."); Assert.AreEqual("[9, 1, 2]", lista.ToString(), "Hacer un Set() no modifica correctamente la lista."); lista.Set(1, 8); Assert.AreEqual(3, lista.NumeroElementos, "Hacer un Set() incrementa el número de elementos."); Assert.AreEqual("[9, 8, 2]", lista.ToString(), "Hacer un Set() no modifica correctamente la lista."); lista.Set(2, 7); Assert.AreEqual(3, lista.NumeroElementos, "Hacer un Set() incrementa el número de elementos."); Assert.AreEqual("[9, 8, 7]", lista.ToString(), "Hacer un Set() no modifica correctamente la lista."); }
public void TestForEachAngulos() { Lista <Angulo> angulos = new Lista <Angulo>(Factoria.CrearAngulos()); Lista <Angulo> copiaAngulos = new Lista <Angulo>(angulos); // Lista donde se van a añadir los elementos de angulos usando el ForEach Lista <Angulo> listaAngulosForEach = new Lista <Angulo>(); angulos.ForEach(listaAngulosForEach.AddLast); // Comprobamos que los elementos son los esperados Assert.AreEqual(angulos.NumeroElementos, listaAngulosForEach.Count(), "El método ForEach() no itera por todos los elementos del IEnumerable."); // Se utiliza el método Equals() definido en la clase Lista para comparar que las 2 listas son iguales Assert.AreEqual(angulos, listaAngulosForEach, "Tras hacer angulos.ForEach(lista.AddLast) angulos y lista no son iguales."); // Comprobamos que no se modifica la lista original Assert.AreEqual(copiaAngulos, angulos, "El método ForEach() modifica el IEnumerable original."); }
public void TestListaConstructorCopia() { Lista <int> listaOtro = new Lista <int>(1, 2, 3); lista = new Lista <int>(listaOtro); Assert.AreEqual(listaOtro.NumeroElementos, lista.NumeroElementos, "La lista creada con el constructor de copia tiene el mismo número de elementos que la lista original."); Assert.AreEqual(listaOtro.ToString(), lista.ToString(), "La lista creada con el constructor de copia tiene los mismos elementos que la lista original."); // Comprobamos que las dos listas son totalmente independientes (modificar una no modifica la otra) listaOtro.AddLast(4); lista.RemoveFirst(); Assert.AreEqual(4, listaOtro.NumeroElementos, "La lista creada con el constructor de copia no es independiente de la lista original."); Assert.AreEqual("[1, 2, 3, 4]", listaOtro.ToString(), "La lista creada con el constructor de copia no es independiente de la lista original."); Assert.AreEqual(2, lista.NumeroElementos, "La lista creada con el constructor de copia no es independiente de la lista original."); Assert.AreEqual("[2, 3]", lista.ToString(), "La lista creada con el constructor de copia no es independiente de la lista original."); }
public void TestListaRemoveAt() { lista = new Lista <int>(1, 2, 3, 4); lista.RemoveAt(1); Assert.AreEqual(3, lista.NumeroElementos, "Borrar un elemento del medio de una lista de 4 elementos no decrementa el número de elementos a 3."); Assert.AreEqual("[1, 3, 4]", lista.ToString(), "La operación de borrar el elemento en la posición 1 no lo borra correctamente"); // Probamos a eliminar la posición 0 lista.RemoveAt(0); Assert.AreEqual(2, lista.NumeroElementos, "Borrar usando RemoveAt() el elemento en la posición 0 de una lista no decrementa el número de elementos en 1."); Assert.AreEqual("[3, 4]", lista.ToString(), "Borrar usando RemoveAt() el elemento en la posición 0 de una lista no elimina el primer elemento."); // Probamos a eliminar la última posición lista.RemoveAt(lista.NumeroElementos - 1); Assert.AreEqual(1, lista.NumeroElementos, "Borrar usando RemoveAt() el elemento en la última posición de una lista no decrementa el número de elementos en 1."); Assert.AreEqual("[3]", lista.ToString(), "Borrar usando RemoveAt() el elemento en la última posición de una lista no elimina el último elemento."); }
/// <summary> /// Método auxiliar que comprueba si Filtrar() devuelve la colección esperada. /// </summary> private void AssertFiltrar <T>(Lista <T> elementos, Predicate <T> predicate, int[] expectedIndicesElementos) { Lista <T> copiaElementos = new Lista <T>(elementos); var elementosFiltrados = elementos.Filtrar(predicate); // Comprobamos que el numero de elementos de la colección filtrada es el esperado Assert.AreEqual(expectedIndicesElementos.Length, elementosFiltrados.Count(), "El método Filtrar() no retorna un IEnumerable con el número de elementos esperado."); // Comprobamos que los elementos filtrados son las esperados int i = 0; foreach (var elementoFiltrado in elementosFiltrados) { var elementoEsperado = elementos.Get(expectedIndicesElementos[i++]); Assert.AreEqual(elementoEsperado, elementoFiltrado, "El método Filtrar() no retorna los elementos esperados"); } // Comprobamos que no se modifica la lista original Assert.AreEqual(copiaElementos, elementos, "El método Filtrar() modifica el IEnumerable original."); }
public void TestBuscarPersonas() { Lista <Persona> personas = new Lista <Persona>(Factoria.CrearPersonas()); #region BusquedaPersonasNombre /* Búsqueda de personas por nombre */ // Buscamos la primera persona cuyo nombre sea María AssertBuscar(personas, persona => persona.Nombre == "María", personas.Get(0), messageElementInCollection); // Buscamos la primera persona cuyo nombre sea Juan AssertBuscar(personas, persona => persona.Nombre == "Juan", personas.Get(1), messageElementInCollection); // Buscamos la primera persona cuyo nombre sea Miguel AssertBuscar(personas, persona => persona.Nombre == "Miguel", personas.Get(5), messageElementInCollection); // Buscamos una persona que no está en la lista y comprobamos que devuelve default(Persona) = null AssertBuscar(personas, persona => persona.Nombre == "Ricardo", null, messageElementNotInCollection); #endregion #region BusquedaPersonasLetraDni /* Búsqueda de personas cuyo nif termina en una letra dada */ // Buscamos la primera persona cuyo nif termine en la letra A AssertBuscar(personas, persona => persona.Nif[persona.Nif.Length - 1] == 'A', personas.Get(0), messageElementInCollection); // Buscamos la primera persona cuyo nif termine en la letra F AssertBuscar(personas, persona => persona.Nif[persona.Nif.Length - 1] == 'F', personas.Get(1), messageElementInCollection); // Buscamos la primera persona cuyo nif termine en la letra T AssertBuscar(personas, persona => persona.Nif[persona.Nif.Length - 1] == 'T', personas.Get(5), messageElementInCollection); // Buscamos una persona que no está en la lista y comprobamos que devuelve default(Persona) = null AssertBuscar(personas, persona => persona.Nif[persona.Nif.Length - 1] == 'X', null, messageElementNotInCollection); #endregion }
public void TestListaSetThrowsException03() { lista = new Lista <int>(1); lista.Set(1, 9); }
public void TestListaSetThrowsException01() { lista = new Lista <int>(); lista.Set(0, 9); }
public void TestListaGetThrowsException02() { lista = new Lista <int>(1); lista.Get(-1); }
public void TestListaGetThrowsException01() { lista = new Lista <int>(); lista.Get(0); }
public void TestListaRemoveLastThrowsException() { lista = new Lista <int>(); lista.RemoveLast(); }
public void TestListaRemoveAtThrowsException03() { lista = new Lista <int>(1); lista.RemoveAt(1); }
public void TestListaAddThrowsException() { lista = new Lista <int>(); // Como no hay elementos en la lista, la posición 0 realmente no existe todavía lista.Add(0, 2); }
public void CleanTests() { lista = null; }
public Enumerador(Lista <T> lista) { this._lista = lista; _currentNode = lista.centinela; }