private static void UpdateQualityOfBackstagePassesItem(ItemForSell itemToUpdate) { if (itemToUpdate.Type != ItemForSellType.BackstagePasses) { throw new ArgumentException("The function: UpdateQualityOfBackstagePassesItem can only accept ItemForSell from type: BackstagePasses"); } if (itemToUpdate.SellIn <= 0) { itemToUpdate.Quality = 0; return; } itemToUpdate.Quality++; if (itemToUpdate.SellIn <= 10) { itemToUpdate.Quality++; } if (itemToUpdate.SellIn <= 5) { itemToUpdate.Quality++; } itemToUpdate.Quality = Math.Min(itemToUpdate.Quality, 50); }
private static void UpdateQualityOfConjuredItem(ItemForSell itemToUpdate) { if (itemToUpdate.Type != ItemForSellType.Conjured) { throw new ArgumentException("The function: UpdateQualityOfConjuredItem can only accept ItemForSell from type: Conjured"); } UpdateQualityByValue(itemToUpdate, 2); }
private static void UpdateQualityOfNormalItem(ItemForSell itemToUpdate) { if (itemToUpdate.Type != ItemForSellType.Normal) { throw new ArgumentException("The function: UpdateQualityOfNormalItem can only accept ItemForSell from type: Normal"); } UpdateQualityByValue(itemToUpdate, 1); }
public async Task UpdateBackstagePassesItemWhenSellInPassedTest_UpdateItem_QualityEqualsZero(int sellIn, int quality) { var backstagePassesItem = new ItemForSell { SellIn = sellIn, Quality = quality, Type = ItemForSellType.BackstagePasses }; await _inventoryUpdater.Update(backstagePassesItem); Assert.Equal(0, backstagePassesItem.Quality); }
public async Task UpdateLegendaryItemTest_UpdateItem_QualityRemainTheSame(int sellIn, int quality) { var item = new ItemForSell { SellIn = sellIn, Quality = quality, Type = ItemForSellType.Legendary }; await _inventoryUpdater.Update(item); Assert.Equal(quality, item.Quality); }
private static void UpdateQualityOfAgedBrieItem(ItemForSell itemToUpdate) { if (itemToUpdate.Type != ItemForSellType.AgedBrie) { throw new ArgumentException("The function: UpdateQualityOfAgedBrieItem can only accept ItemForSell from type: AgedBrie"); } itemToUpdate.Quality++; itemToUpdate.Quality = Math.Min(itemToUpdate.Quality, 50); }
public Task Update(ItemForSell itemToUpdate) { if (!_updateQualityActions.TryGetValue(itemToUpdate.Type, out var action)) { throw new ArgumentException($"The item with the name: {itemToUpdate.Name} and the type: {itemToUpdate.Type} is invalid"); } action.Invoke(itemToUpdate); UpdateSellIn(itemToUpdate); return(Task.CompletedTask); }
public async Task UpdateBackstagePassesItemWhenSellInLowTest_UpdateItem_QualityIncreaseByThree(int sellIn, int quality) { var backstagePassesItem = new ItemForSell { SellIn = sellIn, Quality = quality, Type = ItemForSellType.BackstagePasses }; await _inventoryUpdater.Update(backstagePassesItem); var expQuality = Math.Min(quality + 3, 50); Assert.Equal(expQuality, backstagePassesItem.Quality); }
public async Task UpdateAgedBrieItem_UpdateItem_QualityIncreaseByOne(int sellIn, int quality) { var item = new ItemForSell { SellIn = sellIn, Quality = quality, Type = ItemForSellType.AgedBrie }; await _inventoryUpdater.Update(item); var expQuality = Math.Min(quality + 1, 50); Assert.Equal(expQuality, item.Quality); }
public async Task UpdateNormalItemSellInPassedTest_UpdateNormalItem_QualityDecreaseByTwo(int sellIn, int quality) { var item = new ItemForSell { SellIn = sellIn, Quality = quality, Type = ItemForSellType.Normal }; await _inventoryUpdater.Update(item); var expQuality = Math.Max(quality - 2, 0); var expSellIn = Math.Max(sellIn - 1, 0); Assert.Equal(expQuality, item.Quality); Assert.Equal(expSellIn, item.SellIn); }