public void ReCarregarDados()
        {
            var p = ProdutoContainer.GetInstance();

            Assert.AreEqual(9, p.ObterTodos().Count);

            int qtdCargas = p.CargasRealizadas;

            p.ReCarregarDados();
            Assert.AreEqual(qtdCargas + 1, p.CargasRealizadas);

            p.ReCarregarDados();
            Assert.AreEqual(qtdCargas + 2, p.CargasRealizadas);
        }
        public void UnicaInstancia()
        {
            var p1 = ProdutoContainer.GetInstance();
            var p2 = ProdutoContainer.GetInstance();

            Assert.IsNotNull(p1);
            Assert.IsNotNull(p2);
            Assert.AreEqual(p1, p2);
            Assert.IsTrue(p1 == p2);

            var c1 = CategoriaContainer.GetInstance();
            var c2 = CategoriaContainer.GetInstance();

            Assert.IsNotNull(c1);
            Assert.IsNotNull(c2);
            Assert.AreEqual(c1, c2);
            Assert.IsTrue(c1 == c2);
        }
        public void Renovar()
        {
            var p = ProdutoContainer.GetInstance();

            Assert.IsNotNull(p);
            Assert.AreEqual(9, p.ObterTodos().Count);

            int qtdCargas = p.CargasRealizadas;

            Thread.Sleep(2000);

            Assert.AreEqual(9, p.ObterTodos().Count);
            Assert.AreEqual(qtdCargas + 1, p.CargasRealizadas);

            Thread.Sleep(2010);

            Assert.AreEqual(9, p.ObterTodos().Count);
            Assert.AreEqual(qtdCargas + 2, p.CargasRealizadas);
        }
        public void DiferentesContainersComMesmoTipoDeDado()
        {
            var p1 = ProdutoContainer.GetInstance();
            var p2 = ProdutoContainer.GetInstance();

            Assert.AreEqual(9, p2.ObterTodos().Count);

            //Tipos diferentes de container podem armazenar o mesmo tipo de dado sem que um interfira no outro.
            var p21 = ProdutoContainerPersonalizado.GetInstance();
            var p22 = ProdutoContainerPersonalizado.GetInstance();

            Assert.AreEqual(3, p22.ObterTodos().Count);
            Assert.AreEqual(9, p2.ObterTodos().Count);

            Assert.AreEqual(p1, p2);
            Assert.IsTrue(p1 == p2);

            Assert.AreEqual(p21, p22);
            Assert.IsTrue(p21 == p22);
        }
        public void Basico()
        {
            var p = ProdutoContainer.GetInstance();

            Assert.IsNotNull(p);

            Assert.AreEqual(1, p.ObterUm(1).Id);
            Assert.AreEqual(2, p.ObterUm(2).Id);
            Assert.AreEqual(3, p.ObterUm(3).Id);
            Assert.AreEqual(4, p.ObterUm(4).Id);
            Assert.AreEqual(5, p.ObterUm(5).Id);
            Assert.AreEqual(6, p.ObterUm(6).Id);
            Assert.AreEqual(7, p.ObterUm(7).Id);
            Assert.AreEqual(8, p.ObterUm(8).Id);
            Assert.AreEqual(9, p.ObterUm(9).Id);

            Assert.IsNull(p.ObterUm(10));

            Assert.AreEqual(9, p.ObterTodos().Count);



            var c = CategoriaContainer.GetInstance();


            Assert.IsNotNull(c);

            Assert.AreEqual(1, c.ObterTodos().First(x => x.Id == 1).Id);
            Assert.AreEqual(2, c.ObterTodos().First(x => x.Id == 2).Id);
            Assert.AreEqual(3, c.ObterTodos().First(x => x.Id == 3).Id);
            Assert.AreEqual(4, c.ObterTodos().First(x => x.Id == 4).Id);
            Assert.AreEqual(5, c.ObterTodos().First(x => x.Id == 5).Id);
            Assert.AreEqual(6, c.ObterTodos().First(x => x.Id == 6).Id);
            Assert.AreEqual(7, c.ObterTodos().First(x => x.Id == 7).Id);
            Assert.AreEqual(8, c.ObterTodos().First(x => x.Id == 8).Id);
            Assert.AreEqual(9, c.ObterTodos().First(x => x.Id == 9).Id);

            Assert.IsNull(c.ObterTodos().FirstOrDefault(x => x.Id == 10));

            Assert.AreEqual(9, c.ObterTodos().Count);
        }
 public static ContainerIndexado <int, ProdutoVO> GetInstance()
 {
     return(instanciaUnica ?? (instanciaUnica = new ProdutoContainer()));
 }