public void ItShouldNameOutputWithConceptTitleWhenNoName() { var concept = new Concept <int>("({0} * {1}) + ({2} * {3})") { Title = "Concept" }; var filter = new Filter <int, bool>("{0} > {1}"); filter.SetParameters(new List <IMonthlyParameter <int> > { SetDictionary("0", 10), SetDictionary("1", 1) }); concept.AddFilter(filter); var january = SetDictionary("0", 2); january.Value[Month.January] = 3; concept.SetParameters(new List <IMonthlyParameter <int> > { january, SetDictionary("1", 3), SetDictionary("2", 2), SetDictionary("3", 5) }); concept.Run(); Assert.AreEqual(16, concept.Output1.Value[Month.May]); Assert.AreEqual(19, concept.Output1.Value[Month.January]); Assert.AreEqual("Concept", concept.Output1.Name); }
public void BonoCashTest() { var bonoCash = new Global <decimal> { Name = "bonoCash", Value = new Dictionary <Month, decimal> { { Month.October, 0 }, { Month.November, 0 }, { Month.December, .1M }, { Month.January, 0 }, { Month.February, 0 }, { Month.March, 0 }, { Month.April, 0 }, { Month.May, 0 }, { Month.June, 0 }, { Month.July, 0 }, { Month.August, 0 }, { Month.September, 0 }, } }; var concept = new Concept <decimal>("{SueldoAnual} * {bonoCash}"); concept.SetParameters(new List <IMonthlyParameter <decimal> > { SetDictionary("SueldoAnual", 13000M), bonoCash }); concept.Run(); Assert.AreEqual(0M, concept.Output1.Value[Month.October]); Assert.AreEqual(1300M, concept.Output1.Value[Month.December]); Assert.AreEqual(0, concept.Output1.Value[Month.September]); Assert.AreEqual(1300M, concept.Output1.Total); }
public void ItShouldCreateOperationFromConcept() { var concept = new Concept <int>("({0} * {1}) + ({2} * {3})"); var filter = new Filter <int, bool>("{0} > {1}"); filter.SetParameters(new List <IMonthlyParameter <int> > { SetDictionary("0", 10), SetDictionary("1", 1) }); concept.AddFilter(filter); var january = SetDictionary("0", 2); january.Value[Month.January] = 3; concept.SetParameters(new List <IMonthlyParameter <int> > { january, SetDictionary("1", 3), SetDictionary("2", 2), SetDictionary("3", 5) }); var output = SetDictionary("output", 25); concept.AddOutputParameter1(output); concept.Run(); Assert.AreEqual(16, concept.Output1.Value[Month.May]); Assert.AreEqual(16, output.Value[Month.August]); Assert.AreEqual(19, concept.Output1.Value[Month.January]); Assert.AreEqual(19, output.Value[Month.January]); }
public void ItShouldReplaceOutputValue() { var filter = new Filter <int, bool>("{0} > {1}"); filter.SetParameters(new List <IMonthlyParameter <int> > { SetDictionary("0", 10), SetDictionary("1", 1) }); var concept = new Concept <int>(); concept.AddFilter(filter); const string text = "({0} * {1}) + ({2} * {3})"; var operation = new RuleTree <int, int>(text); operation.SetParameters( new List <IMonthlyParameter <int> > { SetDictionary("0", 2), SetDictionary("1", 3), SetDictionary("2", 2), SetDictionary("3", 5) }); concept.AddOperation(operation); var output = SetDictionary("output", 25); concept.AddOutputParameter1(output); concept.Run(); Assert.AreEqual(16, concept.Output1.Value[Month.May]); Assert.AreEqual(16, output.Value[Month.August]); }
private Concept <decimal> GetAndRunSueldoMensualSindicalizado() { var aumSindicato = new Global <decimal> { Name = "aumSindicato", Value = new Dictionary <Month, decimal> { { Month.October, .14M }, { Month.November, .14M }, { Month.December, .14M }, { Month.January, .20M }, { Month.February, .20M }, { Month.March, .24M }, { Month.April, .24M }, { Month.May, .24M }, { Month.June, .24M }, { Month.July, .24M }, { Month.August, .24M }, { Month.September, .24M }, } }; var concept = new Concept <decimal>("({SueldoAnual} / 13) * ({aumSindicato} + 1)") { Title = "SueldoMensualSindicalizado" }; concept.SetParameters(new List <IMonthlyParameter <decimal> > { SetDictionary("SueldoAnual", 13000M), aumSindicato }); concept.Run(); return(concept); }
// 4001 FTE 1 Comisión 11510 Tiene Com.? 603001 N/A N/A Valor Com. N/A Dic / Mar / Jun / Oct 2.000 - - 500 - - 500 - - 500 - - 500 2.000 Como lo cargamos? Tengo que cargarle 4 comisiones? Una para cada Q por ejemplo? public void ConceptoComision() { var comision = new Global <decimal> { Name = "comision", Value = new Dictionary <Month, decimal> { { Month.October, 0 }, { Month.November, 0 }, { Month.December, 500M }, { Month.January, 0 }, { Month.February, 0 }, { Month.March, 500M }, { Month.April, 0 }, { Month.May, 0 }, { Month.June, 500M }, { Month.July, 0 }, { Month.August, 0 }, { Month.September, 500M }, } }; var concept = new Concept <decimal>("{comision} * 1"); concept.SetParameters(new List <IMonthlyParameter <decimal> > { comision }); concept.Run(); Assert.AreEqual(0M, concept.Output1.Value[Month.October]); Assert.AreEqual(500M, concept.Output1.Value[Month.December]); Assert.AreEqual(500M, concept.Output1.Value[Month.September]); Assert.AreEqual(2000M, concept.Output1.Total); }
private Concept <decimal> GetAndRunSueldoMensualConcept() { var merit = new Global <decimal> { Name = "merit", Value = new Dictionary <Month, decimal> { { Month.October, 0 }, { Month.November, 0 }, { Month.December, 0 }, { Month.January, .25M }, { Month.February, .25M }, { Month.March, .25M }, { Month.April, .25M }, { Month.May, .25M }, { Month.June, .25M }, { Month.July, .25M }, { Month.August, .25M }, { Month.September, .25M }, } }; var concept = new Concept <decimal>("({SueldoAnual} / 13) * ({merit} + 1)") { Title = "SueldoMensual" }; concept.SetParameters(new List <IMonthlyParameter <decimal> > { SetDictionary("SueldoAnual", 13000M), merit }); concept.Run(); return(concept); }
public void SpecialBonusConceptTest() { var specialBonus = new Global <decimal> { Name = "specialBonus", Value = new Dictionary <Month, decimal> { { Month.October, 0 }, { Month.November, 0 }, { Month.December, 0 }, { Month.January, 0 }, { Month.February, 0 }, { Month.March, 0 }, { Month.April, 0 }, { Month.May, 0 }, { Month.June, 30000M }, { Month.July, 0 }, { Month.August, 0 }, { Month.September, 0 }, } }; var concept = new Concept <decimal>("{specialBonus} * 1"); concept.SetParameters(new List <IMonthlyParameter <decimal> > { specialBonus }); concept.Run(); Assert.AreEqual(0M, concept.Output1.Value[Month.October]); Assert.AreEqual(0, concept.Output1.Value[Month.December]); Assert.AreEqual(30000M, concept.Output1.Value[Month.June]); Assert.AreEqual(30000M, concept.Output1.Total); }
private Concept <decimal> AddConcepts(Concept <decimal> a, Concept <decimal> b) { var sumarConcept = new Concept <decimal>("{" + a.Output1.Name + "} + {" + b.Output1.Name + "}") { Title = "Add" }; sumarConcept.SetParameters(new List <IMonthlyParameter <decimal> > { a.Output1, b.Output1 }); sumarConcept.Run(); return(sumarConcept); }
public void ItShouldGet16OnComplexOperation() { var filter = new Filter <int, bool>("{0} > {1}"); filter.SetParameters(new List <IMonthlyParameter <int> > { SetDictionary("0", 10), SetDictionary("1", 1) }); var concept = new Concept <int>("({0} * {1}) + ({2} * {3})"); concept.AddFilter(filter); concept.SetParameters( new List <IMonthlyParameter <int> > { SetDictionary("0", 2), SetDictionary("1", 3), SetDictionary("2", 2), SetDictionary("3", 5) }); concept.Run(); Assert.AreEqual(16, concept.Output1.Value[Month.May]); }
public void ItShouldGet15OnOutput() { var filter = new Filter <int, bool>("{0} > {1}") { Parameter1 = SetDictionary("0", 10), Parameter2 = SetDictionary("1", 1) }; var concept = new Concept <int>(); concept.AddFilter(filter); var operation = new Mock <IRule <int, int> >(); operation.Setup(x => x.GetResult()).Returns(SetDictionary("0", 15)); concept.AddOperation(operation.Object); concept.Run(); Assert.AreEqual(15, concept.Output1.Value[Month.March]); }
public void AguinaldoTest() { var sueldoMensual = GetAndRunSueldoMensualConcept(); var sueldoMensualSindicalizado = GetAndRunSueldoMensualSindicalizado(); var sumarConcept = AddConcepts(sueldoMensual, sueldoMensualSindicalizado); var concept = new Concept <decimal>("{Add} / 12"); concept.SetParameters(new List <IMonthlyParameter <decimal> > { sumarConcept.Output1 }); concept.Run(); Assert.AreEqual(178M, Math.Truncate(concept.Output1.Value[Month.October])); Assert.AreEqual(178M, Math.Truncate(concept.Output1.Value[Month.November])); Assert.AreEqual(204M, Math.Truncate(concept.Output1.Value[Month.January])); Assert.AreEqual(207M, Math.Truncate(concept.Output1.Value[Month.September])); Assert.AreEqual(2395M, Math.Truncate(concept.Output1.Total)); }
public void PlusVacacionalTest() { var sueldoMensual = GetAndRunSueldoMensualConcept(); var sueldoMensualSindicalizado = GetAndRunSueldoMensualSindicalizado(); var sumarConcept = AddConcepts(sueldoMensual, sueldoMensualSindicalizado); var iConcept = new Concept <decimal>("( {Add} / 25 ) * ( 14 * 1 )") { Title = "I" }; iConcept.SetParameters(new List <IMonthlyParameter <decimal> > { sumarConcept.Output1 }); iConcept.Run(); var jConcept = new Concept <decimal>("( {Add} / 30 ) * ( 14 * 1 )") { Title = "J" }; jConcept.SetParameters(new List <IMonthlyParameter <decimal> > { sumarConcept.Output1 }); jConcept.Run(); var plusVacional = new Concept <decimal>("{I} - {J}"); plusVacional.SetParameters(new List <IMonthlyParameter <decimal> > { iConcept.Output1, jConcept.Output1 }); plusVacional.Run(); Assert.AreEqual(200M, Math.Round(plusVacional.Output1.Value[Month.October], MidpointRounding.ToEven)); Assert.AreEqual(229M, Math.Round(plusVacional.Output1.Value[Month.January])); Assert.AreEqual(232M, Math.Round(plusVacional.Output1.Value[Month.September])); Assert.AreEqual(2683M, Math.Round(plusVacional.Output1.Total)); }
public void ItShouldAddValueToOutputParameter() { var filter = new Filter <int, bool>("{0} > {1}"); filter.SetParameters(new List <IMonthlyParameter <int> > { SetDictionary("0", 10), SetDictionary("1", 1) }); var concept = new Concept <int>("({0} * {1}) + ({2} * {3})"); concept.AddFilter(filter); concept.SetParameters( new List <IMonthlyParameter <int> > { SetDictionary("0", 2), SetDictionary("1", 3), SetDictionary("2", 2), SetDictionary("3", 5) }); var output = SetDictionary("output", 10); output.IsAccumulator = true; concept.AddOutputParameter1(output); concept.Run(); Assert.AreEqual(26, concept.Output1.Value[Month.June]); Assert.AreEqual(26, output.Value[Month.February]); }