Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }