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");
        }
Example #2
0
        /// <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
        }