public void ReloadAfterShotWithNoAmmo()
        {
            // Arrange
            var alien = new Alien();
            var gun   = new Raygun();

            // Act
            while (gun.HasAmmo())
            {
                gun.Shoot(alien);
            }

            gun.Shoot(alien);

            // Assert
            Assert.True(gun.HasAmmo());
        }
        public void KillAlien()
        {
            // Arrange
            var alien = new Alien();
            var gun   = new Raygun();

            // Act
            gun.Shoot(alien);

            // Assert
            Assert.True(alien.IsDead());
        }
        public void MissDodgingAlien()
        {
            // Arrange
            var alien = new Alien();
            var gun   = new Raygun();

            // Act
            alien.Dodge();
            gun.Shoot(alien);

            // Assert
            Assert.False(alien.IsDead());
        }
        public void ReloadAfterXShots(int shotsCount, bool shouldReload)
        {
            // Arrange
            var alien = new Alien();
            var gun   = new Raygun();

            // Act
            for (int i = 0; i < shotsCount; i++)
            {
                gun.Shoot(alien);
            }

            // Assert
            Assert.Equal(shouldReload, !gun.HasAmmo());
        }
        public void HaveAmmoAfterReload()
        {
            // Arrange
            var alien = new Alien();
            var gun   = new Raygun();

            // Act
            while (gun.HasAmmo())
            {
                gun.Shoot(alien);
            }

            gun.Reload();

            // Assert
            Assert.True(gun.HasAmmo());
        }