public void GetArmorBaseMarketPrice_NullEnchantments_Throws()
        {
            // Arrange
            double baseCost = 200;
            IEnchantmentAggregator <IArmorEnchantment, Core.Domain.Items.Armor.Armor> enchantments = null;
            var color = DragonhideColor.Black;

            // Act
            TestDelegate getPrice = () => Dragonhide.GetArmorBaseMarketPrice(baseCost, enchantments, color);

            // Assert
            Assert.Throws <ArgumentNullException>(getPrice);
        }
        public void GetArmorBaseMarketPrice_NoEnchantments()
        {
            // Arrange
            double baseCost     = 200;
            var    enchantments = Mock.Of <IEnchantmentAggregator <IArmorEnchantment, Core.Domain.Items.Armor.Armor> >();
            var    color        = DragonhideColor.Black;

            // Act
            var dragonhidePrice = Dragonhide.GetArmorBaseMarketPrice(baseCost, enchantments, color);

            // Assert
            Assert.AreEqual(700, dragonhidePrice,
                            "700 = (200 base + 150 masterwork) * (2 dragonhide)");
        }
Esempio n. 3
0
 /// <summary>
 /// Use this constructor for full plate made of dragonhide.
 /// Initializes a new instance of the <see cref="T:Core.Domain.Items.Armor.Paizo.CoreRulebook.FullPlate"/> class.
 /// </summary>
 /// <param name="size">The size of character this armor is designed for.</param>
 /// <param name="color">The color of the dragonhide.</param>
 public FullPlate(SizeCategory size, DragonhideColor color)
     : base(baseArmorBonus:   BASE_ARMOR_BONUS,
            materialHardness: Dragonhide.Hardness)
 {
     this.IsMasterwork           = true;
     this.MasterworkIsToggleable = false;
     this.ArmorCheckPenalty      = () => StandardArmorCheckPenaltyCalculation(ARMOR_CHECK_PENALTY);
     this.MaximumDexterityBonus  = () => MAX_DEX_BONUS;
     this.MundaneName            = () => new INameFragment[] {
         new NameFragment($"{ color } Dragonhide", Dragonhide.WebAddress),
         StandardName
     };
     this.MundaneMarketPrice = () => Dragonhide.GetArmorBaseMarketPrice(MarketValueScaledBySize(size, PRICE), this.Enchantments, color);
     this.Weight             = () => WeightScaledBySize(size, WEIGHT);
 }
        public void GetArmorBaseMarketPrice_BlackAcidResistanceImproved()
        {
            // Arrange
            double baseCost         = 200;
            var    mockEnchantments = new Mock <IEnchantmentAggregator <IArmorEnchantment, Core.Domain.Items.Armor.Armor> >();

            mockEnchantments.Setup(e => e.GetEnchantments())
            .Returns(new IArmorEnchantment[] { new AcidResistance(EnergyResistanceMagnitude.Improved) });

            var color = DragonhideColor.Black;

            // Act
            var dragonhidePrice = Dragonhide.GetArmorBaseMarketPrice(baseCost, mockEnchantments.Object, color);

            // Assert
            Assert.AreEqual(-9800, dragonhidePrice,
                            "-9800 = [(200 base + 150 masterwork) * (2 dragonhide)] - (42000 energy resistance * 25% discount)");
        }