public void TestInvertirAngulos() { Lista <Angulo> angulos = new Lista <Angulo>(Factoria.CrearAngulos()); Lista <Angulo> copiaAngulos = new Lista <Angulo>(angulos); var angulosInvertidos = angulos.Invertir(); // Comprobamos que los elementos son los esperados Assert.AreEqual(angulos.NumeroElementos, angulosInvertidos.Count(), "El método Invertir() modifica el numero de elementos del IEnumerable."); int expectedGrados = 360; foreach (var angulo in angulosInvertidos) { Assert.AreEqual(expectedGrados, angulo.Grados, "El método Invertir() no retorna los elementos esperados"); expectedGrados--; } // Comprobamos que no se modifica la lista original Assert.AreEqual(copiaAngulos, angulos, "El método Invertir() modifica el IEnumerable original."); }
public void TestFiltrarAngulos() { Lista <Angulo> angulos = new Lista <Angulo>(Factoria.CrearAngulos()); #region FiltradoAngulosRectos /* Filtrado de ángulos rectos */ // Filtramos los ángulos de 90 grados AssertFiltrar(angulos, angulo => Math.Abs(Math.Abs(angulo.Grados) - 90.0) <= 0.001, new[] { 90 }); #endregion #region FiltradoAngulosCuadrantes /* Filtrado de ángulos de cada cuadrante */ // Filtramos los ángulos del primer cuadrante AssertFiltrar(angulos, angulo => angulo.Cuadrante == 1, GetArrayIndices(0, 90)); // Filtramos los ángulos del segundo cuadrante AssertFiltrar(angulos, angulo => angulo.Cuadrante == 2, GetArrayIndices(91, 180)); // Filtramos los ángulos del tercer cuadrante AssertFiltrar(angulos, angulo => angulo.Cuadrante == 3, GetArrayIndices(181, 270)); // Filtramos los ángulos del cuarto cuadrante AssertFiltrar(angulos, angulo => angulo.Cuadrante == 4, GetArrayIndices(271, 360)); #endregion }
public void TestBuscarAngulos() { Lista <Angulo> angulos = new Lista <Angulo>(Factoria.CrearAngulos()); #region BusquedaAngulosRectos /* Búsqueda de ángulos rectos */ // Buscamos el primer ángulo de 90 grados AssertBuscar(angulos, angulo => Math.Abs(Math.Abs(angulo.Grados) - 90.0) <= 0.001, angulos.Get(90), messageElementInCollection); #endregion #region BusquedaAngulosCuadrantes /* Búsqueda de ángulos en un cuadrante */ // Buscamos el primer ángulo del primer cuadrante AssertBuscar(angulos, angulo => angulo.Cuadrante == 1, angulos.Get(0), messageElementInCollection); // Buscamos el primer ángulo del segundo cuadrante AssertBuscar(angulos, angulo => angulo.Cuadrante == 2, angulos.Get(91), messageElementInCollection); // Buscamos el primer ángulo del tercer cuadrante AssertBuscar(angulos, angulo => angulo.Cuadrante == 3, angulos.Get(181), messageElementInCollection); // Buscamos el primer ángulo del cuarto cuadrante AssertBuscar(angulos, angulo => angulo.Cuadrante == 4, angulos.Get(271), messageElementInCollection); #endregion }
public void TestMapAngulos() { Lista <Angulo> angulos = new Lista <Angulo>(Factoria.CrearAngulos()); Lista <Angulo> copiaAngulos = new Lista <Angulo>(angulos); var cuadrantesAngulos = angulos.Map(angulo => angulo.Cuadrante); // Comprobamos que los elementos son los esperados Assert.AreEqual(angulos.NumeroElementos, cuadrantesAngulos.Count(), "El método Map() modifica el numero de elementos del IEnumerable."); int i = 0; foreach (var cuadrante in cuadrantesAngulos) { int expectedCuadrante; if (i <= 90) { expectedCuadrante = 1; } else if (i <= 180) { expectedCuadrante = 2; } else if (i <= 270) { expectedCuadrante = 3; } else { expectedCuadrante = 4; } Assert.AreEqual(expectedCuadrante, cuadrante, "El método Map() no retorna los elementos esperados"); i++; } // Comprobamos que no se modifica la lista original Assert.AreEqual(copiaAngulos, angulos, "El método Map() modifica el IEnumerable original."); }
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 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."); }