public void ReturnsCopiesAndNotOriginalSugarsWhichRemainUnchanged()
 {
     var replacementItems = GetReplacementItems("12:00 | 12:00 100 12:40 110");
     var sugar = replacementItems[0].Pattern.After.First();
     var date = sugar.DateTime;
     var sut = new SugarCollector();
     var actual = sut.CollectByHour(AddMeal("12:00"), replacementItems);
     Assert.AreNotSame(sugar, actual.Values.First().First().Collected);
     Assert.AreEqual(date, sugar.DateTime);
 }
 public void ReturnsSugarsGrouppedByHours(string[] expectedKeyHourAndSugars, string meal,
     params string[] replacementMealsAndSugars)
 {
     var replacementItems = GetReplacementItems(replacementMealsAndSugars);
     var sut = new SugarCollector();
     var actual = sut.CollectByHour(AddMeal(meal), replacementItems);
     AssertExpectedSugarsEqualActual(expectedKeyHourAndSugars, actual);
 }
 public void HandlesSugarsOnDifferentDateThanMeal()
 {
     var replacementItems = GetReplacementItems("23:00 | 02:00 100");
     var sugar = replacementItems[0].Pattern.After.Single();
     sugar.DateTime = sugar.DateTime.AddDays(1);
     var sut = new SugarCollector();
     var meal = AddMeal("22:15");
     var actual = sut.CollectByHour(meal, replacementItems).Values.First();
     Assert.AreEqual(meal.DateTime.AddHours(3), actual.Single().Collected.DateTime);
 }
 public void ReturnsReplacementItems()
 {
     var replacementItems = GetReplacementItems("12:00 | 12:00 100 12:10 120", "12:00 | 12:20 120 12:30 110");
     var sut = new SugarCollector();
     var actual = sut.CollectByHour(AddMeal("12:00"), replacementItems).Values.First();
     Assert.AreEqual(100, actual.First().Collected.BloodSugar);
     Assert.AreEqual(110, actual.Last().Collected.BloodSugar);
     Assert.AreSame(replacementItems[0], actual.First().Source);
     Assert.AreSame(replacementItems[1], actual.Last().Source);
 }