コード例 #1
0
        public void SetAddEventTest()
        {
            // Arrange
            var itemDef = new ItemDefinition(Guid.NewGuid())
            {
                maxStackSize = 10
            };
            var item = new ItemInstance(Guid.NewGuid(), itemDef);
            CollectionAddResult eventResult = null;
            int eventCallCount = 0;

            // Act
            _collection.OnAddedItem += (sender, addResult) =>
            {
                eventResult = addResult;
                eventCallCount++;
            };

            var result = _collection.Set(0, item, 2);

            // Assert
            Assert.IsNotNull(eventResult);
            Assert.AreEqual(1, eventResult.affectedSlots.Length);
            Assert.AreEqual(2, eventResult.affectedSlots[0].amount);

            Assert.IsNull(result.error);
            Assert.AreEqual(1, eventCallCount);
        }
コード例 #2
0
        public void CollectionAddEventTest()
        {
            // Arrange
            var itemDef = new ItemDefinition(Guid.NewGuid());
            var item    = new ItemInstance(Guid.NewGuid(), itemDef);
            CollectionAddResult eventResult = null;
            int eventCallCount = 0;

            // Act
            _collection.OnAddedItem += (sender, addResult) =>
            {
                eventResult = addResult;
                eventCallCount++;
            };
            var result  = _collection.Add(item);
            var result2 = _collection.Add(item); // Action should fail (same instance error)

            // Assert
            Assert.IsNotNull(eventResult);
            Assert.AreEqual(1, eventResult.affectedSlots.Length);
            Assert.AreEqual(1, eventResult.affectedSlots[0].amount);

            Assert.IsNull(result.error);
            Assert.AreEqual(Errors.CollectionAlreadyContainsSpecificInstance, result2.error);

            Assert.AreEqual(1, eventCallCount);
        }
コード例 #3
0
        /// <summary>
        /// Adds a tag to the song.
        /// First checks if the tag has already been added.
        /// </summary>
        /// <param name="tag">Tag to be added. Cannot be null.</param>
        /// <returns>The created tag usage. Can be null if the tag has already been added.</returns>
        public virtual CollectionAddResult <SongTagUsage> AddTag(Tag tag)
        {
            ParamIs.NotNull(() => tag);

            if (Tags.HasTag(tag))
            {
                return(CollectionAddResult.Create(Tags.GetTagUsage(tag), false));
            }

            var usage = new SongTagUsage(this, tag);

            Tags.Usages.Add(usage);
            return(CollectionAddResult.Create(usage, true));
        }
コード例 #4
0
        public void SetNewItemEventTest()
        {
            // Arrange
            var itemDef = new ItemDefinition(Guid.NewGuid())
            {
                maxStackSize = 10
            };
            var item = new ItemInstance(Guid.NewGuid(), itemDef);

            var itemDef2 = new ItemDefinition(Guid.NewGuid())
            {
                maxStackSize = 10
            };
            var item2 = new ItemInstance(Guid.NewGuid(), itemDef2);

            CollectionRemoveResult <IItemInstance> removeEventResult = null;
            CollectionAddResult addEventResult = null;
            int removeEventCallCount           = 0;
            int addEventCallCount = 0;
            var addResult         = _collection.Set(0, item, 3);

            // Act
            _collection.OnAddedItem += (sender, addResult1) =>
            {
                addEventResult = addResult1;
                addEventCallCount++;
            };

            _collection.OnRemovedItem += (sender, removeResult) =>
            {
                removeEventResult = removeResult;
                removeEventCallCount++;
            };

            var setRemoveResult = _collection.Set(0, item2, 2);

            // Assert
            Assert.IsNull(addResult.error);
            Assert.IsNull(setRemoveResult.error);

            Assert.AreEqual(1, removeEventResult.affectedSlots.Length);
            Assert.AreEqual(3, removeEventResult.affectedSlots[0].amount);

            Assert.AreEqual(1, addEventResult.affectedSlots.Length);
            Assert.AreEqual(2, addEventResult.affectedSlots[0].amount);

            Assert.AreEqual(1, removeEventCallCount);
            Assert.AreEqual(1, addEventCallCount);
        }
コード例 #5
0
        public void EquipmentCollectionOnEquipEventTest()
        {
            CollectionAddResult equipmentAddResult = null;
            CollectionRemoveResult <IEquippableItemInstance> equipmentRemoveResult = null;
            CollectionSlotsChangedResult equipmentChangeResult = null;

            int equipmentAddEventCount    = 0;
            int equipmentRemoveEventCount = 0;
            int equipmentChangeEventCount = 0;


            CollectionAddResult restoreAddResult = null;
            CollectionRemoveResult <IItemInstance> restoreRemoveResult = null;
            CollectionSlotsChangedResult           restoreChangeResult = null;

            int restoreAddEventCount    = 0;
            int restoreRemoveEventCount = 0;
            int restoreChangeEventCount = 0;

            _equipmentCollection.OnAddedItem += (sender, result) =>
            {
                equipmentAddResult = result;
                equipmentAddEventCount++;
            };

            _equipmentCollection.OnRemovedItem += (sender, result) =>
            {
                equipmentRemoveResult = result;
                equipmentRemoveEventCount++;
            };

            _equipmentCollection.OnSlotsChanged += (sender, result) =>
            {
                equipmentChangeResult = result;
                equipmentChangeEventCount++;
            };


            _restoreToCollection.OnAddedItem += (sender, result) =>
            {
                restoreAddResult = result;
                restoreAddEventCount++;
            };

            _restoreToCollection.OnRemovedItem += (sender, result) =>
            {
                restoreRemoveResult = result;
                restoreRemoveEventCount++;
            };

            _restoreToCollection.OnSlotsChanged += (sender, result) =>
            {
                restoreChangeResult = result;
                restoreChangeEventCount++;
            };

            var set1 = _equippableCharacter.EquipAt(4, _arrowsItem); // Add event
            var set2 = _equippableCharacter.EquipAt(4, _shieldItem); // Unequips arrows + add event for shield

            Assert.IsNull(set1.error);
            Assert.IsNull(set2.error);

            Assert.AreEqual(2, equipmentAddEventCount);    // Add arrows + shield
            Assert.AreEqual(1, equipmentRemoveEventCount); // Remove arrows
            Assert.AreEqual(3, equipmentChangeEventCount); // Arrow equip, unequip, shield equip

            Assert.AreEqual(1, restoreAddEventCount);      // Add arrows
            Assert.AreEqual(0, restoreRemoveEventCount);
            Assert.AreEqual(1, restoreChangeEventCount);   // Changed for arrows

            Assert.AreEqual(1, _restoreToCollection.GetAmount(_arrowsItem));
            Assert.AreEqual(1, _equipmentCollection.GetAmount(_shieldItem));
        }