public void ApplyBitterToRecipe() { RecipeFactory myFactory = new RecipeFactory(); IRecipe myRecipe = myFactory.GetRecipe(RecipeTypes.Beer); IngredientFactory myIngredientFactory = new IngredientFactory(); var ingredient = myIngredientFactory.GetIngredient(IngredientType.Fermentable); ingredient.Amount = 10; (ingredient as IFermentable).DiastaticPower = 1.04; myRecipe.Ingredients.Add(ingredient); //adding bitters is just a test for my sanity in querying interfaces and dealing with Covariance //note it will be repeated on the IBU calculation as the fermentable power impacts bitterness ingredient = myIngredientFactory.GetIngredient(IngredientType.BitterSeason); ingredient.Amount = 1.5; (ingredient as IBitter).BitteringFactor = 15; (ingredient as IBitter).BitterCalculationTime = 60; myRecipe.Ingredients.Add(ingredient); myRecipe.BatchVolume = 6.5; myRecipe.TotalEfficiencyPercent = 70; var ibus = myRecipe.GetEstimatedBitterness(); Assert.AreEqual(myRecipe.Bitters.Count, 1); //May need to check formula. BeerSmith usually is a little higher. BeerSmith has been known to tweak their forumulas though. Assert.AreEqual(63.81, Math.Round(ibus, 2)); }