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()); } }
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()); } }