public void TestCalculateYears0() { var data = new StockData { Price = 200, Percentage = 3, Quantity = 17, Years = 0 }; var result = StockCalculator.Calculate(data); Assert.AreEqual(1, result.Count); }
public void TestCalculatePercentage0() { var data = new StockData { Price = 0, Percentage = 3, Quantity = 17, Years = 7 }; var result = StockCalculator.Calculate(data); Assert.AreEqual(data.Years + 1, result.Count); foreach (var value in result) { Assert.AreEqual(result[0], value); } }
public void TestCalculatePriceOrQuantity0() { var data = new StockData { Price = 0, Percentage = 3, Quantity = 17, Years = 7 }; var result = StockCalculator.Calculate(data); CheckValues(data, result); data.Price = 200; data.Quantity = 0; result = StockCalculator.Calculate(data); CheckValues(data, result); }
public void TestCalculateByRegularWay() { var data = new StockData { Price = 200, Percentage = 3, Quantity = 17, Years = 6 }; var result = StockCalculator.Calculate(data); Assert.AreEqual(data.Years + 1, result.Count); Assert.AreEqual(data.Price * data.Quantity, result[0]); for (int i = 1; i < result.Count; i++) { Assert.AreEqual(result[i - 1] + result[i - 1] * (decimal)data.Percentage / 100, result[i]); } }
//TODO: there are missed tests for double convertion to decimal public void TestCalculateByPriceMaxValue() { var data = new StockData { Price = decimal.MaxValue, Percentage = 3, Quantity = 17, Years = 6 }; try { StockCalculator.Calculate(data); Assert.Fail("An exception with OverflowException type is ecpexted."); } catch (Exception e) { Assert.IsInstanceOfType(e, typeof(OverflowException)); } }
public HttpResponseMessage Calculate(StockDetails details) { if (!ModelState.IsValid) { return(Request.CreateErrorResponse(System.Net.HttpStatusCode.BadRequest, ModelState)); } //custom validation for price if (details.Price < 0) { ModelState.AddModelError("Price", string.Format("The value {0} is not valid for the field Price", details.Price)); return(Request.CreateErrorResponse(System.Net.HttpStatusCode.BadRequest, ModelState)); } //Need to encode string before save in repository details.Name = HttpUtility.HtmlEncode(details.Name); var result = StockCalculator.Calculate(new StockData(details)); var repository = new StockHttpApplicationRepository(HttpContext.Current.Application); repository.Add(new StockCalculationResult(details, result)); return(Request.CreateResponse(System.Net.HttpStatusCode.OK, result)); }