public void TestResetAMano()
        {
            lista = new Lista <int>(1, 2, 3);

            // Iteramos hasta el final de la lista
            IEnumerator <int> enumerator = lista.GetEnumerator();

            while (enumerator.MoveNext())
            {
            }

            // Hacemos un reset y comprobamos que al iterar de nuevo por toda la lista los elementos son los correctos
            enumerator.Reset();
            int expected = 1;

            while (enumerator.MoveNext())
            {
                int current = enumerator.Current;
                Assert.AreEqual(expected++, current,
                                "El elemento obtenido con el iterador manualmente no coincide con el esperado, " +
                                "después de hacer un Reset() del iterador.");
            }

            // Nos aseguramos de que se ha ejecutado el bucle las veces necesarias
            Assert.AreEqual(4, expected,
                            "El iterador ejecutado manualmente no ha recorrido todos los elementos de la lista, " +
                            "después de hacer un Reset() del iterador.");
        }
        public void TestMapPersonas()
        {
            Lista <Persona> personas      = new Lista <Persona>(Factoria.CrearPersonas());
            Lista <Persona> copiaPersonas = new Lista <Persona>(personas);

            var apellidosNombres = personas.Map(persona => persona.Apellido1 + ", " + persona.Nombre);

            // Comprobamos que los elementos son los esperados
            Assert.AreEqual(personas.NumeroElementos, apellidosNombres.Count(),
                            "El método Map() modifica el numero de elementos del IEnumerable.");

            var enumerator = personas.GetEnumerator();

            foreach (var apellidosNombre in apellidosNombres)
            {
                enumerator.MoveNext();
                var persona = enumerator.Current;
                Assert.AreEqual(persona.Apellido1 + ", " + persona.Nombre, apellidosNombre,
                                "El método Map() no retorna los elementos esperados");
            }

            // Comprobamos que no se modifica la lista original
            Assert.AreEqual(copiaPersonas, personas,
                            "El método Map() modifica el IEnumerable original.");
        }
        public void TestCurrentAManoThrowsException()
        {
            lista = new Lista <int>(1, 2, 3);

            // Iteramos hasta el final de la lista
            IEnumerator <int> enumerator = lista.GetEnumerator();

            while (enumerator.MoveNext())
            {
            }

            // Comprobamos que lanza una excepción, ya que currentNode es null
            // y Current llama a currentNode.Valor
            int current = enumerator.Current;
        }
Beispiel #4
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (obj == this)
            {
                return(true);
            }

            Lista <T> otra = obj as Lista <T>;

            if (otra == null)
            {
                return(false);
            }

            if (otra.NumeroElementos != NumeroElementos)
            {
                return(false);
            }

            var thisEnumerator = GetEnumerator();
            var otraEnumerator = otra.GetEnumerator();

            while (thisEnumerator.MoveNext() && otraEnumerator.MoveNext())
            {
                if (thisEnumerator.Current == null && otraEnumerator.Current == null)
                {
                    continue;
                }
                if (thisEnumerator.Current == null && otraEnumerator.Current != null)
                {
                    return(false);
                }
                if (!thisEnumerator.Current.Equals(otraEnumerator.Current))
                {
                    return(false);
                }
            }

            return(true);
        }
        public void TestIteradorAMano()
        {
            lista = new Lista <int>(1, 2, 3);

            IEnumerator <int> enumerator = lista.GetEnumerator();
            int expected = 1;

            while (enumerator.MoveNext())
            {
                int current = enumerator.Current;
                Assert.AreEqual(expected++, current,
                                "El elemento obtenido con el iterador manualmente no coincide con el esperado.");
            }

            // Nos aseguramos de que se ha ejecutado el bucle las veces necesarias
            Assert.AreEqual(4, expected,
                            "El iterador ejecutado manualmente no ha recorrido todos los elementos de la lista.");
        }