示例#1
0
        public static IItem GetCustomItem(Item item)
        {
            IItem _item = new StandardItem(item);

            switch (item.Name)
            {
            case "Aged Brie":
                _item = new AgedItem(item);
                break;

            case "Sulfuras, Hand of Ragnaros":
                _item = new LegendaryItem(item);
                break;

            case "Backstage passes to a TAFKAL80ETC concert":
                _item = new PassItem(item);
                break;

            case "Conjured Mana Cake":
                _item = new ConjuredItem(item);
                break;

            default:
                break;
            }

            return(_item);
        }
示例#2
0
        public void ConjuredItemsQualityDecreasesTwiceAsFastWhenNotExpired()
        {
            var conjuredItem = new ConjuredItem {
                Quality = 4, SellIn = 1
            };

            conjuredItem.UpdateQuality();
            Check.That(conjuredItem.Quality).IsEqualTo(2);
        }
示例#3
0
        public void ConjuredItemsQualityCannotDecreaseBelowZero()
        {
            var conjuredItem = new ConjuredItem {
                Quality = 1, SellIn = 0
            };

            conjuredItem.UpdateQuality();
            Check.That(conjuredItem.Quality).IsZero();
        }
        public void QualityDoesNotGoBelowZero()
        {
            var item = new ConjuredItem();
            item.Quality = 0;
            item.SellIn = -1;

            strategy.UpdateQuality(item);

            Assert.AreEqual(0, item.Quality);
        }
        public void QualityDecreasesByTwoWhenSellInIsGreaterThanOrEqualToZero()
        {
            var item = new ConjuredItem();
            item.Quality = 49;
            item.SellIn = 0;

            strategy.UpdateQuality(item);

            Assert.AreEqual(47, item.Quality);
        }
示例#6
0
        public void Age_WhenQualityWouldFallBelowZero_ShouldSetQualityToZero()
        {
            // Arrange
            var item = new ConjuredItem("", -2, 2);

            // Act
            item.Age();
            // Assert
            item.Quality.ShouldBe(0);
        }
示例#7
0
        public void Age_WhenSellInIsPositive_ShouldDecreaseQualityByTwo(int sellIn)
        {
            // Arrange
            var initialQuality = 10;
            var item           = new ConjuredItem("", sellIn, initialQuality);

            // Act
            item.Age();
            // Assert
            item.Quality.ShouldBe(initialQuality - 2);
        }
示例#8
0
        public void QualityDoesNotGoBelowZero()
        {
            var item = new ConjuredItem();

            item.Quality = 0;
            item.SellIn  = -1;

            strategy.UpdateQuality(item);

            Assert.AreEqual(0, item.Quality);
        }
示例#9
0
        public void QualityDecreasesByFourWhenSellInIsGreaterThanOrEqualToZero()
        {
            var item = new ConjuredItem();

            item.Quality = 49;
            item.SellIn  = -1;

            strategy.UpdateQuality(item);

            Assert.AreEqual(45, item.Quality);
        }
        public void QualityOfAConjuredItemIsNeverNegative()
        {
            var cake = new ConjuredItem {
                Name = "Conjured Mana Cake", SellIn = -1, Quality = 0
            };

            updater = new InventoryUpdater(new[] { cake });
            updater.Update();

            Assert.AreEqual(0, cake.Quality);
        }
        public void SellInForConjuredDecreasesByOne()
        {
            var conjured = new ConjuredItem {
                Name = "Conjured Mana Cake", SellIn = 0, Quality = 0
            };

            updater = new InventoryUpdater(new[] { conjured });
            ProcessMany(10);

            Assert.AreEqual(-10, conjured.SellIn);
        }
        public void ConjuredItemsDegradeInQualityTwiceAsFastAsNormalItems()
        {
            var conjuredItem = new ConjuredItem {
                Name = "Conjured Mana Cake", SellIn = 3, Quality = 6
            };

            updater = new InventoryUpdater(new[] { conjuredItem });
            ProcessMany(3);

            Assert.AreEqual(0, conjuredItem.Quality);
        }
示例#13
0
        public void Ctor_WhenCalled_ShouldSetUpPropertiesCorrectly(string name, int sellIn, int quality)
        {
            // Arrange, Act
            var item = new ConjuredItem(name, sellIn, quality);

            // Assert
            item.Name.ShouldBe(name);
            item.SellIn.ShouldBe(sellIn);
            item.Quality.ShouldBe(quality);
            item.DegradationRate.ShouldBe(2);
        }
示例#14
0
        public void Age_WhenSellInIsNegativeOrZero_ShouldDecreaseQualityByFour(int sellIn)
        {
            // Arrange
            var initialQuality = 10;
            var item           = new ConjuredItem("", sellIn, initialQuality);

            // Act
            item.Age();
            // Assert
            item.Quality.ShouldBe(initialQuality - 4);
        }
示例#15
0
        static void Main(string[] args)
        {
            IItem normal = new Item("item1", 40, new DateTime(2018, 09, 02, 0, 0, 0), 33);

            normal.UpdateValues();
            normal.Print();
            IItem conjured = new ConjuredItem("item2", 40, new DateTime(2018, 09, 02, 0, 0, 0), 33);

            conjured.UpdateValues();
            conjured.Print();
        }
示例#16
0
        public void Conjured_Items_Should_Degrade_In_Quality_Four_Times_As_Fast_As_Normal_Items_After_Sell_Date()
        {
            // Arrange
            var conjuredItem = new ConjuredItem("Conjured Mana Cake", 0, 6);

            // Act
            conjuredItem.UpdateQuality();

            // Assert
            Assert.AreEqual(conjuredItem.Quality, 2);
        }
示例#17
0
        public void ConjuredItemUpdateQualityTest()
        {
            var item = new ConjuredItem()
            {
                Quality = 1,
                SellIn  = -1
            };

            item.UpdateQuality();

            Assert.IsTrue(item.Quality == 0 && item.SellIn == -2);
        }
示例#18
0
        public void Conjured_Items_Should_Degrade_In_Quality_Twice_As_Fast_As_Normal_Items()
        {
            // Arrange
            var conjuredItem = new ConjuredItem("Conjured Mana Cake", 3, 6);

            // Act
            conjuredItem.UpdateQuality();

            // Assert
            Assert.AreEqual(conjuredItem.Quality, 4);
            Assert.AreEqual(conjuredItem.SellIn, 2);
        }
        public void ConjuredAfterDayAfterSellIn()
        {
            ConjuredItem item = new ConjuredItem
            {
                SellIn  = 0,
                Quality = 10
            };

            item.AddDay();

            Assert.Equal(-1, item.SellIn);
            Assert.Equal(6, item.Quality);
        }
示例#20
0
        public void CheckConjuredLoseQualityTwiceFast()
        {
            ConjuredItem       conjuredItemAdapter = new ConjuredItem(30, -1);
            List <ItemAdapter> items = new List <ItemAdapter>();

            items.Add(conjuredItemAdapter);
            GildedRose gildedRose = new GildedRose(items);

            gildedRose.UpdateItemProperties();

            ItemAdapter conjuredItemAdapterUpdated = items.First(itemAdapter => itemAdapter.item.Name == "Conjured");

            conjuredItemAdapterUpdated.item.Quality.Should().Be(26);
        }
示例#21
0
        public void CheckConjuredSellInDecrease()
        {
            ConjuredItem       conjuredItemAdapter = new ConjuredItem(30, -1);
            List <ItemAdapter> items = new List <ItemAdapter>();

            items.Add(conjuredItemAdapter);
            GildedRose gildedRose = new GildedRose(items);

            gildedRose.UpdateItemProperties();

            ItemAdapter conjuredItemAdapterUpdated = items.First(itemAdapter => itemAdapter.item.Name == "Conjured");

            conjuredItemAdapterUpdated.item.SellIn.Should().Be(-2);
        }
示例#22
0
        public void ConjuredItemQualityDecreasesByTwo()
        {
            var conjuredItem = new ConjuredItem
            {
                SellIn  = 10,
                Quality = 10
            };

            var oldQuality = conjuredItem.Quality;

            ManageInventory.ProcessItem(conjuredItem);

            Assert.AreEqual(oldQuality - 2, conjuredItem.Quality);
        }
示例#23
0
        public void SellInValueLessThanZeroConjuredItemQualityDegradesTwiceAsFast()
        {
            var conjuredItem = new ConjuredItem
            {
                SellIn  = -1,
                Quality = 10
            };

            var oldQuality = conjuredItem.Quality;

            ManageInventory.ProcessItem(conjuredItem);

            Assert.AreEqual(oldQuality - 4, conjuredItem.Quality);
        }
示例#24
0
        public void QualityDecreasesBy2WhenSellInNotNegative()
        {
            var startingQuality = 20;
            var item            = new ConjuredItem("Conjured Mana Cake", 3, startingQuality);

            var updater = new ConjuredItemUpdater();

            for (var i = 0; i < 2; i++)
            {
                updater.UpdateItem((item));
                startingQuality -= 2;

                Assert.Equal(item.Quality, startingQuality);
            }
        }
示例#25
0
        public void Updating_The_Quality_Of_An_Item_Should_Never_Be_Negative()
        {
            // Arrange
            var commonItem    = new CommonItem("+5 Dexterity Vest", 0, 0);
            var backstageItem = new BackstageItem("Backstage passes to a TAFKAL80ETC concert", 20, 0);
            var agedItem      = new AgedItem("Aged Brie", 2, 0);
            var conjuredItem  = new ConjuredItem("Conjured Mana Cake", 3, 0);
            var legendaryItem = new LegendaryItem("Sulfuras, Hand of Ragnaros", 0, 80);

            // Act
            commonItem.UpdateQuality();
            backstageItem.UpdateQuality();
            agedItem.UpdateQuality();
            conjuredItem.UpdateQuality();
            legendaryItem.UpdateQuality();

            // Assert
            Assert.AreEqual(commonItem.Quality, 0);
            Assert.AreEqual(backstageItem.Quality, 1);
            Assert.AreEqual(agedItem.Quality, 1);
            Assert.AreEqual(conjuredItem.Quality, 0);
            Assert.AreEqual(legendaryItem.Quality, 80);
        }
示例#26
0
        // Run updater for conjured item
        public void RunUpdater(ConjuredItem item)
        {
            var updater = new ConjuredItemUpdater();

            updater.UpdateItem(item);
        }
        public ConjuredItem Build()
        {
            var conjuredItem = new ConjuredItem();

            return(conjuredItem);
        }