public void CharacterProxyTest() { ICharacterDataSource ds = new CharacterDataWithoutCache(); Character c1 = new CharacterProxy(ds); c1.Name = "Stark, Ned"; Character c2 = ds.GetCharacter("Stark, Ned"); Assert.AreEqual(c1.Description, c2.Description, "Tienen la misma descripcion tanto el proxy como el personaje completo"); Assert.IsTrue(c1.RelatedCharacters.SetEquals(c2.RelatedCharacters), "Tienen los mismos personajes relacionados tanto el proxy como el personaje completo"); }
/// <summary> /// Crea la colección de personajes relacionados para el personaje que se pasa como parámetro, /// utilizando para ello la colección de tokens con nombres de personajes que se pasa como /// parámetro /// </summary> /// <param name="character"> /// El objeto Character al que se le deben añadir los personajes relacionados /// </param> /// <param name="relatedCharacterTokens"> /// El conjunto de tokens Json que representan nombres de personajes relacionados /// </param> /// <pre>(character != null) && (relatedCharacterTokens != null)</pre> /// <post></post> private void FillRelatedCharacters(FullCharacter character, IEnumerable<JToken> relatedCharacterTokens) { // Procesamos cada token dentro de la colección // Se puede hacer con foreach por es un IEnumerable foreach (JToken token in relatedCharacterTokens) { // Extraemos el nombre del personaje relacionado que estamos procesando string relatedName = token.SelectToken("name").Value<String>(); // Obtenemos el objeto personaje utilizando esta misma capa de acceso a datos // El personaje vendrá del pool, si haya había sido creado, o de la fuente de datos, // si no hubiese sido creado antes. Character relatedCharacter = new CharacterProxy(dataSource); relatedCharacter.Name = relatedName; // Añadimos el personaje relacionado a la colección de personajes relacionados del // objeto personaje recibido como parámetro character.RelatedCharacters.Add(relatedCharacter); } // foreach }