/// <summary> /// Runs the algorithm /// </summary> /// <param name="item">The item to be maintained</param> /// <param name="qualityMaintainer">The item to be maintained</param> public void Run(IInventoryItem item, IQualityMaintenance qualityMaintainer) { if (qualityMaintainer.Quality > _threshold) { qualityMaintainer.Quality = _threshold; } }
/// <summary> /// Runs the algorithm /// </summary> /// <param name="item">The item to be maintained</param> /// <param name="qualityMaintainer">The item to be maintained</param> public void Run(IInventoryItem item, IQualityMaintenance qualityMaintainer) { if (qualityMaintainer.Quality < 0) { qualityMaintainer.Quality = 0; } }
/// <summary> /// Runs the algorithm /// </summary> /// <param name="item">The item to be maintained</param> /// <param name="qualityMaintainer">The item to be maintained</param> public void Run(IInventoryItem item, IQualityMaintenance qualityMaintainer) { if (qualityMaintainer.Quality > 0) { // I am not happy with the use of a static class here because it can hamper unit testing. This should // ideally be injected qualityMaintainer.Quality -= QualityAssessor.CalculateDeteriorationRate(item); } }
/// <summary> /// Runs the algorithm /// </summary> /// <param name="item">The item to be maintained</param> /// <param name="qualityMaintainer">The item to be maintained</param> public void Run(IInventoryItem item, IQualityMaintenance qualityMaintainer) { var daysRemaining = item.SellIn; if (daysRemaining > FirstThreshold) { qualityMaintainer.Quality += FirstQualityIncrease; } else if (daysRemaining >= SecondThreshold && daysRemaining <= FirstThreshold) { qualityMaintainer.Quality += SecondQualityIncrease; } else if (daysRemaining >= 0 && daysRemaining < SecondThreshold) { qualityMaintainer.Quality += ThirdQualityIncrease; } else { qualityMaintainer.Quality = 0; } }
public void Run(IInventoryItem item, IQualityMaintenance qualityMaintainer) { qualityMaintainer.Quality--; }
/// <summary> /// Runs the algorithm /// </summary> /// <param name="item">The item to be maintained</param> /// <param name="qualityMaintainer">The object to be maintained</param> public void Run(IInventoryItem item, IQualityMaintenance qualityMaintainer) { // We don't do anything, because the value needs to remain stable. }