public void DadoQueOTrabalhadorTeveOsSeguintesEventos(string trabalhador, Table eventosTable)
        {
            var eventos = new List<Evento>();

            foreach (var tableRow in eventosTable.Rows)
            {
                var inicio = Convert.ToDateTime(tableRow["Início"], new DateTimeFormatInfo { ShortDatePattern = "dd/MM/yyyy"});
                var dias = int.Parse(tableRow["Dias"]);
                var tipo = tableRow["Tipo"];

                for (int i = 0; i < dias; i++)
                {
                    var data = inicio.AddDays(i);
                    var evento = new Evento {Data = data, Tipo = tipo, Trabalhador = trabalhador};

                    eventos.Add(evento);
                }
            }

            ScenarioContext.Current.Add("EVENTOS", eventos);
        }
        public void EntaoOTrabalhadorDeveTerOSeguinteCalculoDePosicao(string trabalhador, Table calculoPosicaoTable)
        {
            var eventosEsperados = new List<Evento>();

            foreach (var tableRow in calculoPosicaoTable.Rows)
            {
                var inicio = Convert.ToDateTime(tableRow["Início"],
                    new DateTimeFormatInfo {ShortDatePattern = "dd/MM/yyyy"});
                var dias = int.Parse(tableRow["Dias"]);
                var ocorrencia = tableRow["Ocorrência"];

                for (int i = 0; i < dias; i++)
                {
                    var data = inicio.AddDays(i);
                    var evento = new Evento {Data = data, Ocorrencia = ocorrencia, Trabalhador = trabalhador};

                    eventosEsperados.Add(evento);
                }
            }

            var eventosEncontrados = ScenarioContext.Current.Get<List<Evento>>("EVENTOS_COM_OCORRENCIA").OrderBy(x =>x.Data);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("RESULTADO APÓS EXECUÇÃO DAS REGRAS: ");
            Console.WriteLine();

            foreach (var eventoEncontrado in eventosEncontrados)
            {
                Console.WriteLine(eventoEncontrado.ToString());
            }

            foreach (var eventoEsperado in eventosEsperados)
            {
                var totalEncontrado = eventosEncontrados.Count(
                    x =>
                        x.Trabalhador == eventoEsperado.Trabalhador && x.Data == eventoEsperado.Data &&
                        x.Ocorrencia == eventoEsperado.Ocorrencia);

                totalEncontrado.Should().Be(1, "Deveria ter encontrado um evento '{0}'.", eventoEsperado.ToString());
            }
        }
예제 #3
0
        public static void RegraPosicao()
        {
            // Eventos.
            var ev1 = new Evento {Data = new DateTime(2014, 1, 1), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER"};
            var ev2 = new Evento {Data = new DateTime(2014, 2, 15), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER"};

            var eventosTrabalhoSeguidos = new List<Evento>();

            for (int i = 0; i < 40; i++)
            {
                //eventosTrabalhoSeguidos.Add();
            }

            // Férias.
            var fe1 = new Ferias {Inicio = new DateTime(2014, 2, 1), Termino = new DateTime(2014, 2, 28), Tipo = "GOZADA", Trabalhador = "SHELDON COOPER"};

            // Escalas.
            var escalaTrabalho1 = new Escala { Inicio = new DateTime(2014, 3, 1), Termino = new DateTime(2014, 3, 14), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER"};
            var escalaFolga1 = new Escala { Inicio = new DateTime(2014, 3, 15), Termino = new DateTime(2014, 3, 28), Tipo = "FOLGA", Trabalhador = "SHELDON COOPER" };
            var escalaTrabalho2 = new Escala { Inicio = new DateTime(2014, 3, 29), Termino = new DateTime(2014, 4, 11), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER" };

            Object[] fatos = {
                Bridge.WrapCLR(ev1),
                Bridge.WrapCLR(ev2),
                Bridge.WrapCLR(fe1),
                Bridge.WrapCLR(escalaTrabalho1),
                Bridge.WrapCLR(escalaFolga1),
                Bridge.WrapCLR(escalaTrabalho2)
            };

            var ksession = new RuleRunner().runRules(new string[] { "RegraPosicao.drl" }, fatos);

            var objetos = ksession.getObjects();

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Resultado Final:");
            Console.WriteLine();

            foreach (var objeto in objetos.toArray())
            {
                Console.WriteLine(objeto.toString());
            }
        }