public void DifferentMarginTest() { var request = new Request(); request.ProductHierarchy = new List<Relation>(this.hierarchy); request.GeographyHierarchy = new List<Relation>(this.hierarchy); request.SalesComponentHierarchy = new List<Relation>(this.hierarchy); request.PeriodHierarchy = new List<Relation>(); request.Sales = new List<ConcreteFact>(); request.Sales.AddRange(makeDuetos(4, 7, 4, 7, 4, 7, 1, 10, 100)); //including facts for each period request.Margins = Enumerable.Range(1, 10).SelectMany(r => { var facts = new List<NullableFact>(); facts.Add(new NullableFact() { TimeId = (short)r, ProductId = 2, Value = 0.15f }); facts.Add(new NullableFact() { TimeId = (short)r, ProductId = 3, Value = 0.25f }); return facts; }).ToList(); request.Spend = new List<NullableFact>() { new NullableFact() { ProductId = 1, GeographyId = 1, Value = 100 } }; // no adjustments request.Adjustments = null; var calculator = new CalculatorService(); var result = calculator.CalculateRoi(request); Assert.AreEqual(1, result.Count); Assert.AreEqual(128f, result.Single().Value, 0.0001); }
public void IntegratedCalculateRoi_BasicTest() { var request = new Request(); request.ProductHierarchy = new List<Relation>(this.hierarchy); request.GeographyHierarchy = new List<Relation>(this.hierarchy); request.SalesComponentHierarchy = new List<Relation>(); request.PeriodHierarchy = new List<Relation>(); request.Sales = new List<ConcreteFact>(); request.Sales.AddRange(makeDuetos(2, 2, 2, 2, 1, 1, 1, 10, 100)); request.Margins = Enumerable.Range(1, 10).Select(r => new NullableFact() { Value = 0.15f, TimeId = (short)r }).ToList(); request.Spend = new List<NullableFact>() { new NullableFact() { ProductId = 1, GeographyId = 1, Value = 100 } }; // no adjustments request.Adjustments = null; var calculator = new CalculatorService(); var result = calculator.CalculateRoi(request); Assert.AreEqual(1, result.Count); Assert.AreEqual(1.5f, result.Single().Value, 0.0001); }
public void DifferentMarginTest_WithDiscreteGaps() { var request = new Request(); request.ProductHierarchy = new List<Relation>(this.hierarchy); request.GeographyHierarchy = new List<Relation>(this.hierarchy); request.SalesComponentHierarchy = new List<Relation>(this.hierarchy); request.PeriodHierarchy = new List<Relation>(); request.Sales = new List<ConcreteFact>(); request.Sales.AddRange(makeDuetos(4, 7, 4, 7, 4, 7, 1, 10, 1)); // no product 7 in geog 7 // will exclude for all 4 sales components x 10 weeks (40 leaf) request.Sales.RemoveAll(d => d.ProductId == 7 && d.GeographyId == 7); // causal 6 not run in geogs 4,5 // will exclude for all 4 products x 10 weeks in both geogs (80 leaf) request.Sales.RemoveAll(d => d.SalesComponentId == 6 && (d.GeographyId == 4 || d.GeographyId == 5)); //including facts for each period request.Margins = Enumerable.Range(1, 10).SelectMany(r => { var facts = new List<NullableFact>(); facts.Add(new NullableFact() { TimeId = (short)r, ProductId = 2, Value = 0.15f }); facts.Add(new NullableFact() { TimeId = (short)r, ProductId = 3, Value = 0.25f }); return facts; }).ToList(); request.Spend = new List<NullableFact>() { new NullableFact() { ProductId = 1, GeographyId = 1, Value = 100 } }; // no adjustments request.Adjustments = null; var calculator = new CalculatorService(); var result = calculator.CalculateRoi(request); Assert.AreEqual(1, result.Count); Assert.AreEqual(1.02f, result.Single().Value, 0.0001); }
public void IntegratedTest() { var request = new Request(); request.ProductHierarchy = new List<Relation>(this.hierarchy); request.GeographyHierarchy = new List<Relation>(this.hierarchy); request.SalesComponentHierarchy = new List<Relation>(); request.PeriodHierarchy = new List<Relation>(); request.Sales = new List<ConcreteFact>(); request.Sales.AddRange(makeDuetos(4, 7, 4, 7, 4, 7, 1, 10, 100)); request.Margins = new List<NullableFact>() { new NullableFact() { Value = 0.15f } }; request.Spend = new List<NullableFact>() { new NullableFact() { ProductId = 1, GeographyId = 1, Value = 100 } }; var calculator = new CalculatorService(); var adjustments = new List<NullableFact>(); for (short g = 4; g <= 7; g++) for (short s = 4; s <= 7; s++) { adjustments.Add(new NullableFact() { GeographyId = g, SalesComponentId = s, Value = 1.5f }); } request.Adjustments = new List<Adjustment>() { new Adjustment() { AdjustmentType = AdjustmentType.Adjustment, Facts = adjustments } }; var result = calculator.CalculateRoi(request); // Missing assert Assert.Fail(); }