public void OnPlayerDeath_gameOver()
        {
            //arrange
            // bool eventCaught=true;
            int lives = 1;
            //int score = 10;
            ScoreAndLife sl         = new ScoreAndLife(lives, laserFactory, bombFactory);
            Player       player     = new Player(screenWidth, screenHeight, playerSpeed, playerWidth, playerHeight, laserFactory, bombFactory, sl, timerIntervalPlayerRespawn);
            Bunkers      bunkers    = new Bunkers(numBunkers, screenWidth, screenHeight, bunkerWidth, bunkerHeight, bunkerHealth, playerHeight, spaceBetweenBunkerAndPlayer);
            Mothership   mothership = new Mothership(screenWidth, mothershipWidth, mothershipHeight, mothershipSpeed, mothershipPoints, timerIntervalMothership, mothershipSpacerFromTop);
            AlienSquad   alienSquad = new AlienSquad(bunkers, bombFactory, laserFactory, player, mothership, sl, numRows, numColumns, screenWidth, player.BoundingBox.Height, alienWidth, alienHeight, alienSpeed, spacer, bombFrequency, alienPointStart, alienPointDecrement, alienSpacerFromTop, speedIncrease, bombFrequencyIncrement, bombFrequencyMin);

            //act
            laserFactory.RegisterAlienSquad(alienSquad);
            laserFactory.RegisterBunkers(bunkers);
            laserFactory.RegisterMothership(mothership);
            //sl.gameOver += delegate()
            //{
            //    eventCaught = true;
            //};
            sl.OnPlayerDeath();
            int result = sl.Lives;

            //assert
            Assert.AreEqual(0, result); //expected, actual
            //Assert.IsTrue(eventCaught);
        }
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // Create textures
            Texture2D textureAlien      = this.Content.Load <Texture2D>(@"assets/bug");
            Texture2D textureBomb       = this.Content.Load <Texture2D>(@"assets/bomb");
            Texture2D textureBunker     = this.Content.Load <Texture2D>(@"assets/bunker");
            Texture2D textureLaser      = this.Content.Load <Texture2D>(@"assets/laser");
            Texture2D textureMothership = this.Content.Load <Texture2D>(@"assets/mothership");
            Texture2D texturePlayer     = this.Content.Load <Texture2D>(@"assets/player");

            // Initialize variables
            alienHeight      = textureAlien.Height;
            alienWidth       = textureAlien.Width;
            bombHeight       = textureBomb.Height;
            bombWidth        = textureBomb.Width;
            bunkerHeight     = textureBunker.Height;
            bunkerWidth      = textureBunker.Width;
            laserHeight      = textureLaser.Height;
            laserWidth       = textureLaser.Width;
            mothershipHeight = textureMothership.Height;
            mothershipWidth  = textureMothership.Width;
            playerHeight     = texturePlayer.Height;
            playerWidth      = texturePlayer.Width;

            // Create factories
            laserFactory = new LaserFactory(laserSpeed, laserWidth, laserHeight, numRows * numColumns);
            bombFactory  = new BombFactory(bombSpeed, bombWidth, bombHeight, numBombSlots);

            // Create game objects
            scoreAndLife = new ScoreAndLife(lives, laserFactory, bombFactory);
            player       = new Player(screenWidth, screenHeight, playerSpeed, playerWidth, playerHeight, laserFactory, bombFactory, scoreAndLife, timerIntervalPlayerRespawn);
            bunkers      = new Bunkers(numBunkers, screenWidth, screenHeight, bunkerWidth, bunkerHeight, bunkerHealth, playerHeight, spaceBetweenBunkerAndPlayer);
            mothership   = new Mothership(screenWidth, mothershipWidth, mothershipHeight, mothershipSpeed, mothershipPoints, timerIntervalMothership, mothershipSpacerFromTop);
            alienSquad   = new AlienSquad(bunkers, bombFactory, laserFactory, player, mothership, scoreAndLife, numRows, numColumns, screenWidth, player.BoundingBox.Height, alienWidth, alienHeight, alienSpeed, spacer, bombFrequency, alienPointStart, alienPointsPerRow, alienSpacerFromTop, speedIncrease, bombFrequencyIncrement, bombFrequencyMin);

            // Create sprite objects
            laserSprite      = new LaserSprite(this, laserFactory.Laser, textureLaser);
            mothershipSprite = new MothershipSprite(this, mothership, player, textureMothership);
            playerSprite     = new PlayerSprite(this, player, texturePlayer);
            scoreSprite      = new ScoreSprite(this, scoreAndLife);

            for (var x = 0; x < alienSquad.Length; x++)
            {
                Components.Add(new AlienSprite(this, (Alien)alienSquad[x], textureAlien));
            }
            foreach (Bunker bunker in bunkers)
            {
                Components.Add(new BunkerSprite(this, bunker, textureBunker));
            }
            foreach (Projectile bomb in bombFactory.Bombs)
            {
                Components.Add(new BombSprite(this, bomb, textureBomb));
            }

            // Add components
            Components.Add(mothershipSprite);
            Components.Add(playerSprite);
            Components.Add(scoreSprite);
            Components.Add(laserSprite);

            // Register objects
            laserFactory.RegisterAlienSquad(alienSquad);
            laserFactory.RegisterBunkers(bunkers);
            laserFactory.RegisterMothership(mothership);
            bombFactory.RegisterBunkers(bunkers);
            bombFactory.RegisterPlayer(player);

            base.Initialize();
        }