예제 #1
0
        public void MergeStackableItemsPartialStack()
        {
            var col         = new CollectionAccessibleMethods <IItemInstance>(10);
            var arrowsClone = (MockedEquippableItemInstance)_arrowsItem.Clone();

            _equipmentCollection.SetEquipmentTypes(0, new [] { _arrowsEquipmentType });

            var set    = col.Set(0, _arrowsItem, 5);
            var set1   = _character.EquipAt(0, _arrowsItem, 5);
            var set2   = _character.EquipAt(4, arrowsClone, 2);
            var merged = _character.SwapOrMerge(0, 4);

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

            Assert.IsNull(col[0]);
            Assert.AreSame(_arrowsItem, _equipmentCollection[4]);
            Assert.AreEqual(7, _equipmentCollection.GetAmount(4));

            // _arrowsItem never gets an OnEquipped because we're moving a partial stack, which duplicates the instance.
            Assert.AreEqual(1, _arrowsItem.onEquippedCallCount);
            Assert.AreEqual(0, _arrowsItem.onUnEquippedCallCount);

            Assert.AreEqual(1, arrowsClone.onEquippedCallCount);
            Assert.AreEqual(0, arrowsClone.onUnEquippedCallCount);
        }
예제 #2
0
        public void Setup()
        {
            UnityEngine.Assertions.Assert.raiseExceptions = true;

            _collection = new CollectionAccessibleMethods <IItemInstance>(CollectionSize, new Logger("[Collection] "));
//            _collection.GenerateSlots<ItemInstanceLayoutCollectionSlot>();
        }
예제 #3
0
        public void SwapIncompatibleTest()
        {
            var col = new CollectionAccessibleMethods <IItemInstance>(10);

            var set     = col.Set(0, _swordItem, 1);
            var swapped = col.SwapPublic(0, _equipmentCollection, 2);

            Assert.IsNull(set.error);
            Assert.AreEqual(Errors.CharacterCollectionEquipmentTypeInvalid, swapped.error);

            Assert.AreSame(_swordItem, col[0]);
            Assert.IsNull(_equipmentCollection[4]);
            Assert.AreEqual(0, _swordItem.onEquippedCallCount);
            Assert.AreEqual(0, _swordItem.onUnEquippedCallCount);
        }
예제 #4
0
        public void MoveAutoFromEquipFullStackTest()
        {
            var col = new CollectionAccessibleMethods <IItemInstance>(10);

            var set    = _character.EquipAt(4, _arrowsItem, 100);
            var merged = _equipmentCollection.MoveAuto(4, col, 100);

            Assert.IsNull(set.error);
            Assert.IsNull(merged.error);

            Assert.IsNull(_equipmentCollection[4]);
            Assert.AreSame(_arrowsItem, col[0]);

            Assert.AreEqual(100, col.GetAmount(0));
            Assert.AreEqual(0, _equipmentCollection.GetAmount(4));
        }
예제 #5
0
        public void MoveAutoPartialToEquipTest()
        {
            var col = new CollectionAccessibleMethods <IItemInstance>(10);

            var set    = col.Set(0, _arrowsItem, 100);
            var merged = col.MoveAuto(0, _equipmentCollection, 40);

            Assert.IsNull(set.error);
            Assert.IsNull(merged.error);

            Assert.AreEqual(col[0], _equipmentCollection[4]);
            Assert.AreNotSame(col[0], _equipmentCollection[4]);

            Assert.AreEqual(60, col.GetAmount(0));
            Assert.AreEqual(40, _equipmentCollection.GetAmount(4));
        }
예제 #6
0
        public void UnstackToSlotFromChar()
        {
            var col = new CollectionAccessibleMethods <IItemInstance>(10);

            var set    = _character.EquipAt(4, _arrowsItem, 100);
            var merged = _equipmentCollection.MergePublic(4, col, 0, 40);

            Assert.IsNull(set.error);
            Assert.IsNull(merged.error);

            Assert.AreEqual(col[0], _equipmentCollection[4]);
            Assert.AreNotSame(col[0], _equipmentCollection[4]);

            Assert.AreEqual(40, col.GetAmount(0));
            Assert.AreEqual(60, _equipmentCollection.GetAmount(4));
        }
예제 #7
0
        public void SwapStackable()
        {
            var col         = new CollectionAccessibleMethods <IItemInstance>(10);
            var arrowsClone = (MockedEquippableItemInstance)_arrowsItem.Clone();

            var set     = col.Set(0, _arrowsItem, 5);
            var set2    = _character.EquipAt(4, arrowsClone, 2);
            var swapped = col.SwapPublic(0, _equipmentCollection, 4);

            Assert.IsNull(set.error);
            Assert.IsNull(set2.error);
            Assert.IsNull(swapped.error);

            Assert.AreSame(arrowsClone, col[0]);
            Assert.AreSame(_arrowsItem, _equipmentCollection[4]);

            // Events aren't fired because we don't use the IEquippableCharacter, and move to the collection directly.
            Assert.AreEqual(0, _arrowsItem.onEquippedCallCount);
            Assert.AreEqual(0, _arrowsItem.onUnEquippedCallCount);

            Assert.AreEqual(1, arrowsClone.onEquippedCallCount);
            Assert.AreEqual(0, arrowsClone.onUnEquippedCallCount);
        }