예제 #1
0
        public void Com5Passos()
        {
            var primeiroPasso = new Passo(1, "PassoA");
            var segundoPasso  = new Passo(2, "PassoB");
            var terceiroPasso = new Passo(3, "PassoC");
            var quartoPasso   = new Passo(4, "PassoD");
            var quintoPasso   = new Passo(5, "PassoE");

            //Passo1
            primeiroPasso.AdicionarProximoPasso(segundoPasso);
            //Passo2
            segundoPasso.AdicionarPassoAnterior(primeiroPasso);
            segundoPasso.AdicionarProximoPasso(terceiroPasso);
            //Passo3
            terceiroPasso.AdicionarPassoAnterior(segundoPasso);
            terceiroPasso.AdicionarProximoPasso(quartoPasso);
            //Passo4
            quartoPasso.AdicionarPassoAnterior(terceiroPasso);
            quartoPasso.AdicionarProximoPasso(quintoPasso);
            //Passo5
            quintoPasso.AdicionarPassoAnterior(terceiroPasso);

            var fluxo = new WorkFlow();

            fluxo.AdicionarPasso(new List <Passo> {
                primeiroPasso
            });
            fluxo.AdicionarPasso(new List <Passo> {
                segundoPasso
            });
            fluxo.AdicionarPasso(new List <Passo> {
                terceiroPasso
            });
            fluxo.AdicionarPasso(new List <Passo> {
                quartoPasso
            });
            fluxo.AdicionarPasso(new List <Passo> {
                quintoPasso
            });
            //Aprovar P1
            Assert.AreEqual(fluxo.PassoAtual.Descricao, primeiroPasso.Descricao);
            fluxo.AprovarPassoAtual(primeiroPasso);
            //Aprovar P2
            Assert.AreEqual(fluxo.PassoAtual.Descricao, segundoPasso.Descricao);
            fluxo.AprovarPassoAtual(segundoPasso);
            //Aprovar P3
            Assert.AreEqual(fluxo.PassoAtual.Descricao, terceiroPasso.Descricao);
            fluxo.AprovarPassoAtual(terceiroPasso);
            //Aprovar P4
            Assert.AreEqual(fluxo.PassoAtual.Descricao, quartoPasso.Descricao);
            fluxo.AprovarPassoAtual(quartoPasso);
            //Aprovar P5
            Assert.AreEqual(fluxo.PassoAtual.Descricao, quintoPasso.Descricao);
            fluxo.AprovarPassoAtual(quintoPasso);
            Assert.IsTrue(fluxo.Concluido);
        }
예제 #2
0
        public void TestMethod1()
        {
            var primeiroPasso = new Passo(1, "PassoA");
            var segundoPasso  = new Passo(2, "PassoB");
            var terceiroPasso = new Passo(3, "PassoC");

            //A
            primeiroPasso.AdicionarProximoPasso(segundoPasso);
            //B
            segundoPasso.AdicionarPassoAnterior(primeiroPasso);
            segundoPasso.AdicionarProximoPasso(terceiroPasso);
            //C
            terceiroPasso.AdicionarPassoAnterior(segundoPasso);

            var fluxo = new WorkFlow();

            fluxo.AdicionarPasso(new List <Passo> {
                primeiroPasso
            });
            fluxo.AdicionarPasso(new List <Passo> {
                segundoPasso
            });
            fluxo.AdicionarPasso(new List <Passo> {
                terceiroPasso
            });

            Assert.AreEqual(fluxo.PassoAtual.Descricao, primeiroPasso.Descricao);
            Assert.AreEqual(fluxo.PassoAtual.Aprovado, false);

            fluxo.AprovarPassoAtual();

            Assert.AreEqual(fluxo.PassoAtual.Descricao, segundoPasso.Descricao);
            Assert.AreEqual(fluxo.PassoAtual.Aprovado, false);
        }
예제 #3
0
        public void PassosComPassoSuperiorMuitoMaisDemoradoQueOsDemais()
        {
            #region ProximosPassos

            passoA.AdicionarProximoPasso(new List <Passo> {
                passoB, passoC, passoD
            });
            passoB.AdicionarProximoPasso(new List <Passo> {
                passoE
            });
            passoC.AdicionarProximoPasso(new List <Passo> {
                passoH
            });
            passoD.AdicionarProximoPasso(new List <Passo> {
                passoI
            });
            passoE.AdicionarProximoPasso(new List <Passo> {
                passoF
            });
            passoF.AdicionarProximoPasso(new List <Passo> {
                passoG, passoH
            });
            passoG.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });
            passoH.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });
            passoI.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });

            #endregion

            #region PassosAnteriores

            passoB.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });
            passoC.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });
            passoD.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });

            passoE.AdicionarPassoAnterior(new List <Passo> {
                passoB, passoC, passoD
            });
            passoF.AdicionarPassoAnterior(new List <Passo> {
                passoC, passoD
            });
            passoG.AdicionarPassoAnterior(new List <Passo> {
                passoB, passoD
            });

            passoH.AdicionarPassoAnterior(new List <Passo> {
                passoE, passoG
            });
            passoI.AdicionarPassoAnterior(new List <Passo> {
                passoE, passoF, passoG
            });

            passoJ.AdicionarPassoAnterior(new List <Passo> {
                passoH, passoI
            });

            #endregion

            var fluxo = new WorkFlow();
            fluxo.AdicionarPasso(new List <Passo> {
                passoA
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoB, passoC, passoD
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoE, passoF, passoG
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoH, passoI
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoJ
            });

            //Aprovar P1
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoA.Descricao);
            fluxo.AprovarPassoAtual(passoA);
            fluxo.AprovarPassoAtual(passoC);
            fluxo.AprovarPassoAtual(passoB);
            //Aprovar P2
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoD.Descricao);
            //fluxo.AprovarPassoAtual(passoB);
            ////Aprovar P3
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoC.Descricao);
            //fluxo.AprovarPassoAtual(passoC);
            ////Aprovar P4
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoD.Descricao);
            //fluxo.AprovarPassoAtual(passoD);
            ////Aprovar P5
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoE.Descricao);
            //fluxo.AprovarPassoAtual(passoE);
            ////Aprovar P6
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoF.Descricao);
            //fluxo.AprovarPassoAtual(passoF);
            ////Aprovar P6
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoG.Descricao);
            //fluxo.AprovarPassoAtual(passoG);
            ////Aprovar P6
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoH.Descricao);
            //fluxo.AprovarPassoAtual(passoH);
            ////Aprovar P6
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoI.Descricao);
            //fluxo.AprovarPassoAtual(passoI);
            ////Aprovar P6
            //Assert.AreEqual(fluxo.PassoAtual.Descricao, passoJ.Descricao);
            //fluxo.AprovarPassoAtual(passoJ);

            //Assert.IsTrue(fluxo.Concluido);
        }
예제 #4
0
        public void PassosCruzadosAprovacaoAleatoria()
        {
            #region ProximosPassos

            passoA.AdicionarProximoPasso(new List <Passo> {
                passoB, passoC, passoD
            });
            passoB.AdicionarProximoPasso(new List <Passo> {
                passoE, passoG
            });
            passoC.AdicionarProximoPasso(new List <Passo> {
                passoE, passoF
            });
            passoD.AdicionarProximoPasso(new List <Passo> {
                passoE, passoF, passoG
            });
            passoE.AdicionarProximoPasso(new List <Passo> {
                passoH, passoI
            });
            passoF.AdicionarProximoPasso(new List <Passo> {
                passoI
            });
            passoG.AdicionarProximoPasso(new List <Passo> {
                passoH, passoI
            });
            passoH.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });
            passoI.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });

            #endregion

            #region PassosAnteriores

            passoB.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });
            passoC.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });
            passoD.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });

            passoE.AdicionarPassoAnterior(new List <Passo> {
                passoB, passoC, passoD
            });
            passoF.AdicionarPassoAnterior(new List <Passo> {
                passoC, passoD
            });
            passoG.AdicionarPassoAnterior(new List <Passo> {
                passoB, passoD
            });

            passoH.AdicionarPassoAnterior(new List <Passo> {
                passoE, passoG
            });
            passoI.AdicionarPassoAnterior(new List <Passo> {
                passoE, passoF, passoG
            });

            passoJ.AdicionarPassoAnterior(new List <Passo> {
                passoH, passoI
            });

            #endregion

            var fluxo = new WorkFlow();
            fluxo.AdicionarPasso(new List <Passo> {
                passoA
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoB, passoC, passoD
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoE, passoF, passoG
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoH, passoI
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoJ
            });

            //Aprovar P1
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoA.Descricao);
            fluxo.AprovarPassoAtual(passoA);
            fluxo.AprovarPassoAtual(passoC);
            fluxo.AprovarPassoAtual(passoB);
            //Aprovar P2
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoD.Descricao);
        }
예제 #5
0
        public void PassosCruzados()
        {
            passoA.AdicionarProximoPasso(new List <Passo> {
                passoB, passoC, passoD
            });
            passoB.AdicionarProximoPasso(new List <Passo> {
                passoE, passoG
            });
            passoC.AdicionarProximoPasso(new List <Passo> {
                passoE, passoF
            });
            passoD.AdicionarProximoPasso(new List <Passo> {
                passoE, passoF, passoG
            });
            passoE.AdicionarProximoPasso(new List <Passo> {
                passoH, passoI
            });
            passoF.AdicionarProximoPasso(new List <Passo> {
                passoI
            });
            passoG.AdicionarProximoPasso(new List <Passo> {
                passoH, passoI
            });
            passoH.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });
            passoI.AdicionarProximoPasso(new List <Passo> {
                passoJ
            });

            passoB.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });
            passoC.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });
            passoD.AdicionarPassoAnterior(new List <Passo> {
                passoB
            });

            passoE.AdicionarPassoAnterior(new List <Passo> {
                passoB, passoC, passoD
            });
            passoF.AdicionarPassoAnterior(new List <Passo> {
                passoC, passoD
            });
            passoG.AdicionarPassoAnterior(new List <Passo> {
                passoB, passoD
            });

            passoH.AdicionarPassoAnterior(new List <Passo> {
                passoE, passoG
            });
            passoI.AdicionarPassoAnterior(new List <Passo> {
                passoE, passoF, passoG
            });

            passoJ.AdicionarPassoAnterior(new List <Passo> {
                passoH, passoI
            });

            var fluxo = new WorkFlow();

            fluxo.AdicionarPasso(new List <Passo> {
                passoA
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoB, passoC, passoD
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoE, passoF, passoG
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoH, passoI
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoJ
            });

            //Aprovar P1
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoA.Descricao);
            fluxo.AprovarPassoAtual(passoA);
            //Aprovar P2
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoB.Descricao);
            fluxo.AprovarPassoAtual(passoB);
            //Aprovar P3
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoC.Descricao);
            fluxo.AprovarPassoAtual(passoC);
            //Aprovar P4
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoD.Descricao);
            fluxo.AprovarPassoAtual(passoD);
            //Aprovar P5
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoE.Descricao);
            fluxo.AprovarPassoAtual(passoE);
            //Aprovar P6
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoF.Descricao);
            fluxo.AprovarPassoAtual(passoF);
            //Aprovar P6
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoG.Descricao);
            fluxo.AprovarPassoAtual(passoG);
            //Aprovar P6
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoH.Descricao);
            fluxo.AprovarPassoAtual(passoH);
            //Aprovar P6
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoI.Descricao);
            fluxo.AprovarPassoAtual(passoI);
            //Aprovar P6
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoJ.Descricao);
            fluxo.AprovarPassoAtual(passoJ);

            Assert.IsTrue(fluxo.Concluido);
        }
예제 #6
0
        public void Com5PassosTriplo()
        {
            var passoA = new Passo(1, "PassoA");
            var passoB = new Passo(2, "PassoB");
            var passoC = new Passo(3, "PassoC");
            var passoD = new Passo(4, "PassoD");
            var passoE = new Passo(5, "PassoE");
            var passoF = new Passo(6, "PassoF");

            //PassoA
            passoA.AdicionarProximoPasso(passoB);
            passoA.AdicionarProximoPasso(passoC);
            //PassoB
            passoB.AdicionarProximoPasso(passoD);
            passoB.AdicionarProximoPasso(passoE);
            //PassoC
            passoC.AdicionarProximoPasso(passoE);
            //PassoD
            passoD.AdicionarProximoPasso(passoF);
            //PassoE
            passoE.AdicionarProximoPasso(passoF);
            //PassoB
            passoB.AdicionarPassoAnterior(passoA);
            //PassoC
            passoC.AdicionarPassoAnterior(passoA);
            //PassoD
            passoD.AdicionarPassoAnterior(passoB);
            //PassoE
            passoE.AdicionarPassoAnterior(passoB);
            passoE.AdicionarPassoAnterior(passoD);
            //Passo F
            passoE.AdicionarPassoAnterior(passoB);
            passoE.AdicionarPassoAnterior(passoD);

            var fluxo = new WorkFlow();

            fluxo.AdicionarPasso(new List <Passo> {
                passoA
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoB, passoC
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoD, passoE
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoF
            });

            //Aprovar P1
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoA.Descricao);
            fluxo.AprovarPassoAtual(passoA);
            //Aprovar P2
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoB.Descricao);
            fluxo.AprovarPassoAtual(passoB);
            //Aprovar P3
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoC.Descricao);
            fluxo.AprovarPassoAtual(passoC);
            //Aprovar P4
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoD.Descricao);
            fluxo.AprovarPassoAtual(passoD);
            //Aprovar P5
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoE.Descricao);
            fluxo.AprovarPassoAtual(passoE);
            //Aprovar P6
            Assert.AreEqual(fluxo.PassoAtual.Descricao, passoF.Descricao);
            fluxo.AprovarPassoAtual(passoF);

            Assert.IsTrue(fluxo.Concluido);
        }
예제 #7
0
        public void CriarCadastroFornecedor()
        {
            Solicitante usuarioSistema = new Solicitante("Bruno Alves", "*****@*****.**");

            Fornecedor barracaDoZe = new FornecedorBuilder()
                                     .ComContato(new Contato("Zé", "*****@*****.**"))
                                     .ComDocumento("12.234.567-0")
                                     .ComNome("José Araújo de Lima")
                                     .NaCategoria(new Categoria("Alimentícios"))
                                     .NaDataAtual()
                                     .Constroi();

            Solicitacao solicitacaoCadastro = new Solicitacao(usuarioSistema, barracaDoZe, "Inclusão de Fornecedor");

            //fluxo Solicitação Costumizada
            var passoA = new Passo(1, "PassoA");
            var passoB = new Passo(2, "PassoB");
            var passoC = new Passo(3, "PassoC");
            var passoD = new Passo(4, "PassoD");

            passoA.AdicionarProximoPasso(new List <Passo> {
                passoB, passoC
            });
            passoB.AdicionarProximoPasso(new List <Passo> {
                passoD
            });
            passoC.AdicionarProximoPasso(new List <Passo> {
                passoD
            });

            passoB.AdicionarPassoAnterior(new List <Passo>()
            {
                passoA
            });
            passoC.AdicionarPassoAnterior(new List <Passo>()
            {
                passoA
            });
            passoD.AdicionarPassoAnterior(new List <Passo>()
            {
                passoB, passoC
            });

            var fluxo = new WorkFlow();

            fluxo.AdicionarPasso(new List <Passo> {
                passoA
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoB, passoC
            });
            fluxo.AdicionarPasso(new List <Passo> {
                passoD
            });

            CadastroDeFornecedor cadastro = new CadastroDeFornecedor(barracaDoZe, solicitacaoCadastro, fluxo);

            //Aprovar P1
            Assert.AreEqual(cadastro.Fluxo.PassoAtual.Descricao, passoA.Descricao);
            fluxo.AprovarPassoAtual(passoA);
            //Aprovar P2
            Assert.AreEqual(cadastro.Fluxo.PassoAtual.Descricao, passoB.Descricao);
            fluxo.AprovarPassoAtual(passoB);
            //Aprovar P3
            Assert.AreEqual(cadastro.Fluxo.PassoAtual.Descricao, passoC.Descricao);
            fluxo.AprovarPassoAtual(passoC);
            //Aprovar P4
            Assert.AreEqual(cadastro.Fluxo.PassoAtual.Descricao, passoD.Descricao);
            fluxo.AprovarPassoAtual(passoD);
        }