public void DurabilityService_IsValidDurabilityType_InvalidArguments_ShouldThrowException()
        {
            INWScript          script  = Substitute.For <INWScript>();
            IColorTokenService color   = Substitute.For <IColorTokenService>();
            DurabilityService  service = new DurabilityService(script, color);

            Assert.Throws(typeof(ArgumentNullException), () =>
            {
                service.IsValidDurabilityType(null);
            });
        }
        public void DurabilityService_IsValidDurabilityType_ShouldBeTrue()
        {
            INWScript          script  = Substitute.For <INWScript>();
            IColorTokenService color   = Substitute.For <IColorTokenService>();
            DurabilityService  service = new DurabilityService(script, color);
            NWItem             item    = Substitute.For <NWItem>(script, service);

            item.BaseItemType.Returns(BASE_ITEM_ARMOR);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BASTARDSWORD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BATTLEAXE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BELT);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BOOTS);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BRACER);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CLOAK);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CLUB);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_DAGGER);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_DIREMACE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_DOUBLEAXE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_DWARVENWARAXE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_GLOVES);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_GREATAXE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_GREATSWORD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_HALBERD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_HANDAXE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_HEAVYCROSSBOW);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_HEAVYFLAIL);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_HELMET);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_KAMA);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_KATANA);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_KUKRI);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LARGESHIELD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LIGHTCROSSBOW);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LIGHTFLAIL);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LIGHTHAMMER);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LIGHTMACE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LONGBOW);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LONGSWORD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MORNINGSTAR);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_QUARTERSTAFF);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_RAPIER);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SCIMITAR);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SCYTHE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SHORTBOW);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SHORTSPEAR);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SHORTSWORD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SICKLE);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SLING);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SMALLSHIELD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_TOWERSHIELD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_TRIDENT);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_TWOBLADEDSWORD);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_WARHAMMER);
            Assert.IsTrue(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_WHIP);
            Assert.IsTrue(service.IsValidDurabilityType(item));
        }
        public void DurabilityService_IsValidDurabilityType_ShouldBeFalse()
        {
            INWScript          script  = Substitute.For <INWScript>();
            IColorTokenService color   = Substitute.For <IColorTokenService>();
            DurabilityService  service = new DurabilityService(script, color);
            NWItem             item    = Substitute.For <NWItem>(script, service);

            item.BaseItemType.Returns(BASE_ITEM_TORCH);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_AMULET);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_ARROW);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MISCSMALL);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BOLT);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BULLET);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MISCMEDIUM);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_DART);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MISCLARGE);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_HEALERSKIT);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MISCTALL);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MAGICROD);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MAGICSTAFF);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MAGICWAND);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_POTIONS);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_RING);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SCROLL);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SHURIKEN);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_THIEVESTOOLS);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_TRAPKIT);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_KEY);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_LARGEBOX);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MISCWIDE);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CSLASHWEAPON);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CPIERCWEAPON);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CBLUDGWEAPON);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CSLSHPRCWEAP);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CREATUREITEM);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BOOK);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_SPELLSCROLL);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_GOLD);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_GEM);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_MISCTHIN);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_GRENADE);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BLANK_POTION);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BLANK_SCROLL);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_BLANK_WAND);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_ENCHANTED_POTION);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_ENCHANTED_SCROLL);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_ENCHANTED_WAND);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CRAFTMATERIALMED);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_CRAFTMATERIALSML);
            Assert.IsFalse(service.IsValidDurabilityType(item));
            item.BaseItemType.Returns(BASE_ITEM_INVALID);
            Assert.IsFalse(service.IsValidDurabilityType(item));
        }