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; }
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."); }