public void ItemUseCollectionUpdateTest()
        {
            var itemDef = new ItemDefinition(Guid.NewGuid())
            {
                maxStackSize = 10
            };
            var item  = new CollectionItemInstance(Guid.NewGuid(), itemDef);
            var item2 = (CollectionItemInstance)item.Clone();

            _collection.Set(0, item);
            _collection.Set(1, item2);


            CollectionRemoveResult <IItemInstance> removeResult = null;
            int removeCallCount = 0;

            _collection.OnRemovedItem += (sender, result) =>
            {
                removeResult = result;
                removeCallCount++;
            };

            var used = item.Use(null, new ItemContext());

            Assert.IsNull(used.error);

            Assert.AreEqual(1, removeResult.affectedSlots[0].amount);
            Assert.AreEqual(1, removeCallCount);

            Assert.AreEqual(0, _collection.GetAmount(0));
            Assert.IsNull(_collection[0]);
        }
        public void ItemUseAmountTest()
        {
            var itemDef = new ItemDefinition(Guid.NewGuid())
            {
                maxStackSize = 10
            };
            var item  = new CollectionItemInstance(Guid.NewGuid(), itemDef);
            var item2 = (CollectionItemInstance)item.Clone();

            _collection.Set(0, item, 5);
            _collection.Set(1, item2, 4);

            var context1 = new ItemContext
            {
                useAmount = 3
            };

            var used = item.Use(null, context1);

            Assert.IsNull(used.error);
            Assert.AreEqual(3, used.result.usedAmount);
            Assert.AreEqual(2, _collection.GetAmount(0));
        }
        public void ItemUseAmountReadOnlyCollectionTest()
        {
            var itemDef = new ItemDefinition(Guid.NewGuid())
            {
                maxStackSize = 10
            };
            var item  = new CollectionItemInstance(Guid.NewGuid(), itemDef);
            var item2 = (CollectionItemInstance)item.Clone();

            _collection.Set(0, item, 5);
            _collection.Set(1, item2, 4);

            var context1 = new ItemContext
            {
                useAmount = 3
            };

            _collection.isReadOnly = true;

            var used = item.Use(null, context1);

            Assert.AreEqual(Errors.CollectionIsReadOnly, used.error);
            Assert.AreEqual(5, _collection.GetAmount(0));
        }