public void TestDifferentValues() { ITaxSettings settings = new DictionaryTaxSettings("{\"10000\":\"0.1\",\"20000\":\"0.2\",\"1000000\":\"0.3\"}"); ITaxCalculation calc = new ProgressiveTaxCalculation(); var value1 = calc.Calculate(20000, settings); var value2 = calc.Calculate(25000, settings); Assert.AreEqual(value1, 3000, "Calculation error"); Assert.AreEqual(value2, 4500, "Calculation error"); }
public (ITaxCalculation calculator, ITaxSettings settings) GetCalculator(string postalCode) { var map = _context.CalculatorMappings.FirstOrDefault(m => m.PostalCode == postalCode); if (map == null) { throw new CalculationException("Unknown postal code, please first add that postal code"); } var objectType = Type.GetType(map.ClassName); ITaxCalculation obj = (ITaxCalculation)Activator.CreateInstance(objectType); var settings = new DictionaryTaxSettings(map.Settings); return(calculator : obj, settings : settings); }