示例#1
0
        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
        }
示例#2
0
        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.");
        }
示例#3
0
        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.");
        }
示例#4
0
        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.");
        }
示例#5
0
        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.");
        }
示例#6
0
        /// <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.");
        }
示例#7
0
        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
        }
示例#8
0
 public void TestListaSetThrowsException03()
 {
     lista = new Lista <int>(1);
     lista.Set(1, 9);
 }
示例#9
0
 public void TestListaSetThrowsException01()
 {
     lista = new Lista <int>();
     lista.Set(0, 9);
 }
示例#10
0
 public void TestListaGetThrowsException02()
 {
     lista = new Lista <int>(1);
     lista.Get(-1);
 }
示例#11
0
 public void TestListaGetThrowsException01()
 {
     lista = new Lista <int>();
     lista.Get(0);
 }
示例#12
0
 public void TestListaRemoveLastThrowsException()
 {
     lista = new Lista <int>();
     lista.RemoveLast();
 }
示例#13
0
 public void TestListaRemoveAtThrowsException03()
 {
     lista = new Lista <int>(1);
     lista.RemoveAt(1);
 }
示例#14
0
 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);
 }
示例#15
0
 public void CleanTests()
 {
     lista = null;
 }
示例#16
0
 public Enumerador(Lista <T> lista)
 {
     this._lista  = lista;
     _currentNode = lista.centinela;
 }