public void CalculatesInsulinTotal(string expectedInsulin, params string[] mealInsulinAndFactor) { AddSomeMoreProductsForUseInTest(); var patterns = new List<Pattern>(); foreach (var item in mealInsulinAndFactor) { var splet = item.Split(';', '*').Select(s => s.Trim()).ToList(); var meal = AddMeal("12:00 " + splet[0]); patterns.Add(new Pattern { Match = meal.Items[0], // In this test we pretend that always the first item is used in pattern From = meal, Insulin = AddInsulin("12:00 " + splet[1]), Factor = float.Parse(splet[2], new CultureInfo("en")), For = new MealItem { ProductId = Guid.NewGuid() } }); } var sut = new ReplacementBuilderImpl(new ReplacementBuilderImpl.InsulinTotal()); var replacement = sut.GetReplacementFor(new Meal(), patterns); var expected = AddInsulin("12:00 " + expectedInsulin); var actual = replacement.InsulinTotal; Assert.AreEqual(expected.NormalBolus, actual.NormalBolus); Assert.AreEqual(expected.SquareWaveBolus, actual.SquareWaveBolus); Assert.AreEqual(expected.SquareWaveBolusHours, actual.SquareWaveBolusHours); }
public void IfCalledWithForEqualToNullThenThrowsException() { var meal = AddMeal("12:00 1 100g"); var patterns = new List<Pattern> { new Pattern { Match = meal.Items[0] } }; var sut = new ReplacementBuilderImpl(); var exception = Assert.Throws<ArgumentException>(() => sut.GetReplacementFor(meal, patterns)); Assert.AreEqual("Pattern.For cannot be null.", exception.Message); }
public void ChoosesPatternsWithMostRightnessPoints() { var meal = AddMeal("12:00 1 100g 2 200g"); var pattern1 = new Pattern { RightnessPoints = 1 }; var pattern2 = new Pattern { RightnessPoints = 10 }; var pattern3 = new Pattern { RightnessPoints = 5 }; var pattern4 = new Pattern { RightnessPoints = 5 }; var patterns = new Pattern[] { pattern1, pattern2, pattern3, pattern4 }; foreach (var pattern in patterns) { pattern.From = meal; pattern.Match = meal.Items[0]; pattern.For = meal.Items[0]; pattern.Insulin = new Insulin(); } pattern4.For = meal.Items[1]; var sut = new ReplacementBuilderImpl(); var replacementItems = sut.GetReplacementFor(meal, patterns).Items; Assert.AreEqual(new Pattern[] { pattern2, pattern4 }, replacementItems.Select(r => r.Pattern)); Assert.AreEqual(new Pattern[] { pattern3, pattern1 }, replacementItems[0].Alternatives); Assert.AreEqual(new Pattern[] { }, replacementItems[1].Alternatives); }
public void ReturnsReplacementsAsCompleteWhenAtLeast95PercentOfEnergyIsReplaced(string found, bool expectedComplete, int factor) { var meal = AddMeal("12:00 1 100g 2 200g 3 50g"); var foundMeal = AddMeal("10:00 " + found); var patterns = new List<Pattern>(); for (int i = 0; i < foundMeal.Items.Count; i++) { var pattern = new Pattern(); pattern.Match = foundMeal.Items[i]; pattern.From = foundMeal; pattern.Factor = factor; pattern.For = meal.Items[i]; pattern.Insulin = new Insulin(); patterns.Add(pattern); } var sut = new ReplacementBuilderImpl(new ReplacementBuilderImpl.IsComplete()); var replacement = sut.GetReplacementFor(meal, patterns); Assert.AreEqual(expectedComplete, replacement.IsComplete); }