public void CanBeInstantiatedOnCooldown()
        {
            var timer = GetTimer();

            TestCooldownWeapon weapon = new TestCooldownWeapon(timer, 5f, true);

            weapon.Fire();

            Assert.IsFalse(weapon.WeaponFired);
        }
        public void CooldownWeaponCanBeInstantiated()
        {
            var timer = GetTimer();

            TestCooldownWeapon weapon = new TestCooldownWeapon(timer);

            weapon.Fire();

            Assert.IsTrue(weapon.WeaponFired);
        }
        public void CanBeFiredOffCooldown()
        {
            var timer = GetTimer();

            TestCooldownWeapon weapon = new TestCooldownWeapon(timer);

            weapon.Fire();

            Assert.IsTrue(weapon.WeaponFired);
            Assert.AreEqual(1, weapon.TimesFired);
        }
        public void CanBeFiredMultipleTimesAroundCooldown()
        {
            var timer = GetTimer();

            TestCooldownWeapon weapon = new TestCooldownWeapon(timer, 3f, false);

            // Should Fire
            weapon.Fire();

            // Should Also Fire
            weapon.Fire();

            Assert.IsTrue(weapon.WeaponFired);
            Assert.AreEqual(2, weapon.TimesFired);
        }
        public void GoesOnCooldownWhenFired()
        {
            var timer = GetTimer();

            TestCooldownWeapon weapon = new TestCooldownWeapon(timer, 6f, false);

            // Should Fire
            weapon.Fire();

            // Should Not
            weapon.Fire();

            Assert.IsTrue(weapon.WeaponFired);
            Assert.AreEqual(1, weapon.TimesFired);
        }