public void PriceFormula_CalculateProductTotalCost_Should_Return_CorrectValue_When_DecimalPricePartsAreGiven(decimal basePrice, decimal vatRate, decimal priceModifier) { var priceFormulaCalculation = new PriceFormula(); var calculatedCost = priceFormulaCalculation.CalculateProductTotalCost(basePrice, vatRate, priceModifier); var expectedCost = PriceFormula(basePrice, vatRate, priceModifier); Assert.AreEqual(expectedCost, calculatedCost); }
private PriceCalculator GetPriceCalculator(PriceFormula priceFormula) { switch (priceFormula) { case PriceFormula.Close: return DataUtilities.PriceUtilities.Close; case PriceFormula.High: return DataUtilities.PriceUtilities.High; case PriceFormula.Low: return DataUtilities.PriceUtilities.Low; case PriceFormula.Open: return DataUtilities.PriceUtilities.Open; case PriceFormula.TypicalPrice: return DataUtilities.PriceUtilities.TypicalPrice; case PriceFormula.MedianPrice: return DataUtilities.PriceUtilities.MedianPrice; case PriceFormula.WeightedPrice: return DataUtilities.PriceUtilities.WeightedPrice; default: throw new NotSupportedException(); } }
public IList<double> AddMovingAverageCalculator(MovingAverageType type, int period, PriceFormula formula) { IMovingAverageCalculator ma; switch (type) { case MovingAverageType.Simple : ma = new SimpleMACalculator(); break; case MovingAverageType.Exponential: ma = new ExponentialMACalculator(); break; default: throw new NotImplementedException(); } int id = _dataCollection.AddMovingAverageCollection(); _movingAverageCalculators.Add(id, new KeyValuePair<PriceCalculator, IMovingAverageCalculator>(GetPriceCalculator(formula), ma)); IList<double> values = _dataCollection.GetMovingAverageCollection(id); System.Diagnostics.Debug.Assert(values != null); if (values == null) throw new InvalidOperationException(); ma.Initialize(period); return values; }
public MovingAverageObject() { Period = 1; PriceType = PriceFormula.Close; }
public MovingAverageDefinition(MovingAverageType type, int period, PriceFormula formula) { MovingAverageType = type; Period = period; Formula = formula; }