public void GetCharacterTest()
        {
            CharacterDataCache.ReplaceAlgorithm rep = (x, y) => x.AccessTimes < y.AccessTimes;
            ICharacterDataSource ds = new CharacterDataCache(2, rep);

            Character c1 = ds.GetCharacter("Stark, Ned");
            Character c2 = ds.GetCharacter("Lannister, Tyrion");

            Assert.IsNotNull(c1,"Ned Stark encontrado");
            Assert.IsNotNull(c1, "Tyrion Lannister encontrado");

            ds.GetCharacter("Lannister, Tyrion");
            Assert.AreEqual(ds.CreatedCharacters, 2, "Dos objetos obtenidos del json, ya que Tyrion Lannister está en caché");

            //Intentamos obtener otro personaje, al estar la cache llena debería de borrar el menos usado (Ned Stark)
            ds.GetCharacter("Stark, Roob");
            Assert.AreEqual(ds.CreatedCharacters, 3, "Se ha creado el nuevo personaje, Roob Stark");
            ds.GetCharacter("Stark, Ned");
            Assert.AreEqual(ds.CreatedCharacters, 4, "Se ha creado el personaje Ned Stark porque fue reemplazado de la caché");
        }
        public void GetCharacterTest()
        {
            CharacterDataCache.ReplaceAlgorithm rep = (x, y) => x.LastAccess.CompareTo(y.LastAccess) > 0;
            ICharacterDataSource ds = new CharacterDataCache(2, rep);

            Character c1 = ds.GetCharacter("Stark, Ned");
            System.Threading.Thread.Sleep(100);
            Character c2 = ds.GetCharacter("Lannister, Tyrion");

            Assert.IsNotNull(c1,"Ned Stark encontrado");
            Assert.IsNotNull(c1, "Tyrion Lannister encontrado");

            ds.GetCharacter("Lannister, Tyrion");
            Assert.AreEqual(ds.CreatedCharacters, 2, "Dos objetos obtenidos del json, ya que Tyrion Lannister está en caché");

            //Intentamos obtener otro personaje
            //Al estar la cache llena debería de borrar el último personaje que fue accedido (Tyrion Lannister)
            ds.GetCharacter("Stark, Roob");
            Assert.AreEqual(ds.CreatedCharacters, 3, "Se ha creado el nuevo personaje, Roob Stark");
            ds.GetCharacter("Lannister, Tyrion");
            Assert.AreEqual(ds.CreatedCharacters, 4, "Se ha creado el personaje Ned Stark porque fue reemplazado de la caché");
        }
 public void CharacterDataCacheLFUTest()
 {
     CharacterDataCache.ReplaceAlgorithm rep = (x, y) => x.AccessTimes < y.AccessTimes;
     ICharacterDataSource ds = new CharacterDataCache(2, rep);
     Assert.IsNotNull(ds);
 }
 public void CharacterDataCacheMRUTest()
 {
     CharacterDataCache.ReplaceAlgorithm rep = (x, y) => x.LastAccess.CompareTo(y.LastAccess) > 0;
     ICharacterDataSource ds = new CharacterDataCache(2, rep);
     Assert.IsNotNull(ds);
 }