public void UniqueInventory_RemovingTooMuchStack()
        {
            var provider = Substitute.For <IStorageCapacityProvider>();

            provider.Capacity.Returns(10);
            IInventory inventory = new MUniqueInventory(provider);

            var item1 = Substitute.For <IInventoryStack>();

            item1.Capacity.Returns(1);
            item1.Id.Returns(1);

            var item2 = Substitute.For <IInventoryStack>();

            item2.Capacity.Returns(1);
            item2.Id.Returns(2);

            inventory.AddItem(item1);
            inventory.AddItem(item2);

            Assert.AreEqual(1, (inventory.Contents[0] as IInventoryStack)?.Count);

            var res = inventory.RemoveItem(item1, 5);

            Assert.AreEqual(4, res.Remainder);
        }
        public void ListInventory_RemovingTooMuchItem()
        {
            var provider = Substitute.For <IStorageCapacityProvider>();

            provider.Capacity.Returns(10);
            IInventory inventory = new MUniqueInventory(provider);

            var item1 = Substitute.For <IInventoryItem>();

            var item2 = Substitute.For <IInventoryItem>();

            inventory.AddItem(item1);
            inventory.AddItem(item2);

            var res = inventory.RemoveItem(item1, 5);

            Assert.AreEqual(4, res.Remainder);
        }
        public void UniqueInventory_RemovingItem()
        {
            var provider = Substitute.For <IStorageCapacityProvider>();

            provider.Capacity.Returns(10);
            IInventory inventory = new MUniqueInventory(provider);

            var item1 = Substitute.For <IInventoryItem>();

            item1.Id.Returns(1);

            var item2 = Substitute.For <IInventoryItem>();

            item2.Id.Returns(2);

            inventory.AddItem(item1);
            inventory.AddItem(item2);

            inventory.RemoveItem(item1);

            Assert.AreEqual(1, inventory.Count);
        }