public void RnValidarIntervalosPorSemaforoQuandoUmIntervaloDe8a22AfetarUmIntervaloExistentede10a20Test()
        {
            SemaforoPorIntervalo semaforoPorIntervalo = new SemaforoPorIntervalo(10, 20);

            List <SemaforoPorIntervalo> semaforosImpactadosExistentes = new List <SemaforoPorIntervalo>();
            List <SemaforoPorIntervalo> semaforosImpactadosNovos      = new List <SemaforoPorIntervalo>();

            SemaforoPorIntervalo.VerificarSemaforosImpactados(ref semaforosImpactadosExistentes, ref semaforosImpactadosNovos, ref semaforosImpactadosExistentes, semaforoPorIntervalo, 8, 22);
            SemaforoPorIntervalo semaforo9a10  = semaforosImpactadosExistentes.FirstOrDefault(o => o.inicio == 8 && o.final == 9);
            SemaforoPorIntervalo semaforo21a22 = semaforosImpactadosExistentes.FirstOrDefault(o => o.inicio == 21 && o.final == 22);
            SemaforoPorIntervalo semaforo10a20 = semaforosImpactadosExistentes.FirstOrDefault(o => o.inicio == 10 && o.final == 20);

            Assert.AreEqual(3, semaforosImpactadosExistentes.Count, "Deveria ter 3 semáforos, pois deve criar 3 intervalos diferentes para serem esperarados.");

            Assert.IsNotNull(semaforo9a10, "Deveria ter criado um semáforo.");
            Assert.AreEqual(8, semaforo9a10.inicio, "O semáforo deveria ter como início do intervalo o valor 8.");
            Assert.AreEqual(9, semaforo9a10.final, "O semáforo deveria ter como início do intervalo o valor 10.");

            Assert.IsNotNull(semaforo21a22, "Deveria ter criado um semáforo.");
            Assert.AreEqual(21, semaforo21a22.inicio, "O semáforo deveria ter como início do intervalo o valor 20.");
            Assert.AreEqual(22, semaforo21a22.final, "O semáforo deveria ter como início do intervalo o valor 22.");

            Assert.IsNotNull(semaforo10a20, "Deveria ter criado um semáforo.");
            Assert.AreEqual(10, semaforo10a20.inicio, "O semáforo deveria ter como início do intervalo o valor 10.");
            Assert.AreEqual(20, semaforo10a20.final, "O semáforo deveria ter como início do intervalo o valor 20.");
        }
        public void RnValidarIntervalosPorSemaforoQuandoUmIntervaloDe10a15AfetarUmIntervaloExistenteDe10a20Test()
        {
            SemaforoPorIntervalo semaforoPorIntervalo = new SemaforoPorIntervalo(10, 20);

            List <SemaforoPorIntervalo> semaforosImpactadosExistentes = new List <SemaforoPorIntervalo>();
            List <SemaforoPorIntervalo> semaforosImpactadosNovos      = new List <SemaforoPorIntervalo>();

            SemaforoPorIntervalo.VerificarSemaforosImpactados(ref semaforosImpactadosExistentes, ref semaforosImpactadosNovos, ref semaforosImpactadosExistentes, semaforoPorIntervalo, 10, 15);
            SemaforoPorIntervalo semaforo10a20 = semaforosImpactadosExistentes.FirstOrDefault(o => o.inicio == 10 && o.final == 20);

            Assert.AreEqual(1, semaforosImpactadosExistentes.Count, "Deveria ter 1 semáforo, pois deve reaproveitar o que já existia.");

            Assert.IsNotNull(semaforo10a20, "Deveria ter criado um semáforo.");
            Assert.AreEqual(10, semaforo10a20.inicio, "O semáforo deveria ter como início do intervalo o valor 10.");
            Assert.AreEqual(20, semaforo10a20.final, "O semáforo deveria ter como início do intervalo o valor 20.");
        }
        public void RnValidarIntervalosPorSemaforoQuandoUmIntervaloDe5a8UmDe1a5UmDe6a10AfetarUmIntervaloExistenteDe10a20Test()
        {
            SemaforoPorIntervalo semaforoPorIntervalo10a20 = new SemaforoPorIntervalo(10, 20);
            SemaforoPorIntervalo semaforoPorIntervalo5a8   = new SemaforoPorIntervalo(5, 8);
            SemaforoPorIntervalo semaforoPorIntervalo1a4   = new SemaforoPorIntervalo(1, 4);

            List <SemaforoPorIntervalo> semaforosImpactadosExistentes   = new List <SemaforoPorIntervalo>();
            List <SemaforoPorIntervalo> semaforosImpactadosParaAguardar = new List <SemaforoPorIntervalo>();
            List <SemaforoPorIntervalo> semaforosImpactadosNovos        = new List <SemaforoPorIntervalo>();

            semaforosImpactadosExistentes.Add(semaforoPorIntervalo10a20);
            semaforosImpactadosExistentes.Add(semaforoPorIntervalo5a8);
            semaforosImpactadosExistentes.Add(semaforoPorIntervalo1a4);

            for (int i = 0; i < semaforosImpactadosExistentes.Count; i++)
            {
                SemaforoPorIntervalo.VerificarSemaforosImpactados(ref semaforosImpactadosParaAguardar, ref semaforosImpactadosNovos, ref semaforosImpactadosExistentes, semaforosImpactadosExistentes[i], 6, 10);
            }

            Assert.AreEqual(4, semaforosImpactadosExistentes.Count, "Deveria existir 4 semáforos.");
        }
        public void RnValidarIntervalosPorSemaforoQuandoUmIntervaloDe20a25AfetarUmIntervaloExistenteDe10a20Test()
        {
            SemaforoPorIntervalo semaforoPorIntervalo = new SemaforoPorIntervalo(10, 20);

            List <SemaforoPorIntervalo> semaforosImpactadosParaAguardar = new List <SemaforoPorIntervalo>();
            List <SemaforoPorIntervalo> semaforosImpactadosNovos        = new List <SemaforoPorIntervalo>();

            SemaforoPorIntervalo.VerificarSemaforosImpactados(ref semaforosImpactadosParaAguardar, ref semaforosImpactadosNovos, ref semaforosImpactadosParaAguardar, semaforoPorIntervalo, 20, 25);
            SemaforoPorIntervalo semaforo10a20 = semaforosImpactadosParaAguardar.FirstOrDefault(o => o.inicio == 10 && o.final == 20);
            SemaforoPorIntervalo semaforo20a25 = semaforosImpactadosParaAguardar.FirstOrDefault(o => o.inicio == 21 && o.final == 25);

            Assert.AreEqual(2, semaforosImpactadosParaAguardar.Count, "Deveria ter 2 semáforo, pois deve reaproveitar o que já existia e um novo semáforo com intervalo de 20 a 25.");

            Assert.IsNotNull(semaforo10a20, "Deveria ter criado um semáforo.");
            Assert.AreEqual(10, semaforo10a20.inicio, "O semáforo deveria ter como início do intervalo o valor 10.");
            Assert.AreEqual(20, semaforo10a20.final, "O semáforo deveria ter como início do intervalo o valor 20.");

            Assert.IsNotNull(semaforo20a25, "Deveria ter criado um semáforo.");
            Assert.AreEqual(21, semaforo20a25.inicio, "O semáforo deveria ter como início do intervalo o valor 10.");
            Assert.AreEqual(25, semaforo20a25.final, "O semáforo deveria ter como início do intervalo o valor 20.");
        }