public void Initialize()
        {
            character = new CustomerModel("TestMan", 0);
            RPGStatsComponent stats = new RPGStatsComponent(100, 100, 100, 100);

            character.AddComponent(stats);
        }
        public void TestOnHitSubtractsHealth(int value, int expectedResult)
        {
            RPGStatsComponent stats = character.GetComponent <RPGStatsComponent>();

            stats.OnHit(RPGStatsComponent.StatsEffect.HealthModifier, value);

            Assert.AreEqual(expectedResult, stats.Health);
        }
        public void TestConsumeModifiesStrength(int value, int expectedResult)
        {
            RPGStatsComponent   stats      = character.GetComponent <RPGStatsComponent>();
            ConsumableComponent consumable = new ConsumableComponent(RPGStatsComponent.StatsEffect.StrengthModifier, value);

            stats.Consume(consumable);

            Assert.AreEqual(expectedResult, stats.Strength);
        }
        public void TestCloneStats()
        {
            RPGStatsComponent originalStatsComponent = character.GetComponent <RPGStatsComponent>();
            RPGStatsComponent newStatsComponent      = (RPGStatsComponent)originalStatsComponent.Clone();

            Assert.AreEqual(originalStatsComponent.Health, newStatsComponent.Health);
            Assert.AreEqual(originalStatsComponent.Mana, newStatsComponent.Mana);
            Assert.AreEqual(originalStatsComponent.Nourishment, newStatsComponent.Nourishment);
            Assert.AreEqual(originalStatsComponent.Strength, newStatsComponent.Strength);
        }
        public void OnConsumed(RPGStatsComponent stats)
        {
            useCount--;

            bool isAboveZero = (useCount > 0);

            SetEnabled(isAboveZero);

            if (!isAboveZero)
            {
                return;
            }
        }
        public void TestCloneIsDeepCopy()
        {
            RPGStatsComponent originalStatsComponent = character.GetComponent <RPGStatsComponent>();
            RPGStatsComponent newStatsComponent      = (RPGStatsComponent)originalStatsComponent.Clone();

            newStatsComponent.Consume(new ConsumableComponent(RPGStatsComponent.StatsEffect.HealthModifier, -30));
            newStatsComponent.Consume(new ConsumableComponent(RPGStatsComponent.StatsEffect.ManaModifier, 34));
            newStatsComponent.Consume(new ConsumableComponent(RPGStatsComponent.StatsEffect.NourishmentModifier, 10));
            newStatsComponent.Consume(new ConsumableComponent(RPGStatsComponent.StatsEffect.StrengthModifier, -50));

            Assert.AreNotSame(originalStatsComponent, newStatsComponent);
            Assert.AreNotEqual(originalStatsComponent.Health, newStatsComponent.Health);
            Assert.AreNotEqual(originalStatsComponent.Mana, newStatsComponent.Mana);
            Assert.AreNotEqual(originalStatsComponent.Nourishment, newStatsComponent.Nourishment);
            Assert.AreNotEqual(originalStatsComponent.Strength, newStatsComponent.Strength);
        }
        public void TestGetComponentIsNotNull()
        {
            RPGStatsComponent originalStatsComponent = character.GetComponent <RPGStatsComponent>();

            Assert.IsNotNull(originalStatsComponent);
        }