コード例 #1
0
        public void RestoreExceptionTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Restore();
        }
コード例 #2
0
        public void CollisionInvader_Test1()
        {
            LazerGun gun = new LazerGun(5, 15);

            Invader[,] invaders = new Invader[1, 2];

            invaders[0, 1]       = new Invader(5, 5, 15, 9);
            invaders[0, 1].Speed = 40;

            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            while (invaders[0, 1].CanShot == 0)
            {
                invaders[0, 1].Update(208);
            }
            while (!p.isCollision(invaders[0, 1].EnemyBullet, gun))
            {
                invaders[0, 1].Update(516);
            }

            p.CollisionInvader(invaders, 0, 1, gun);

            Assert.AreEqual(2, gun.NumberOfLives);
        }
コード例 #3
0
        public void PauseExceptionTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Pause();
        }
コード例 #4
0
        public void CreateEnemyTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.CreateEnemyArray(-2, -2);
        }
コード例 #5
0
        public void InitExceptionTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(-2, -2, 0, 2);
        }
コード例 #6
0
        public void HideBulletTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            PrivateObject privateobj = new PrivateObject(p);

            p.Init(60, 50, 5, 7);

            Invader[,] inv = (Invader[, ])privateobj.GetField("_invadersArray");
            for (var c = 0; c < 6; c++)
            {
                for (var i = 0; i < inv.GetLength(0); i++)
                {
                    for (var j = 0; j < inv.GetLength(1); j++)
                    {
                        inv[i, j].Live = false;
                    }
                }

                int count = 0;
                while (count != 10)
                {
                    p.Update(KeyPress.Shot);
                    count++;
                }
                p.TryChangeLevel();
                if (c == 0)
                {
                    Assert.AreEqual(35, inv[1, 1].Speed);
                }
            }
        }
コード例 #7
0
        public void ConstructorTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            Assert.IsFalse(p.IsExit);
        }
コード例 #8
0
        public void TryExitTest()
        {
            IDistanceStrategy d          = new DistanceStrategy();
            Process           p          = new Process(d);
            PrivateObject     privateobj = new PrivateObject(p);

            p.Init(60, 50, 5, 7);


            Invader[,] inv = (Invader[, ])privateobj.GetField("_invadersArray");
            LazerGun gun = (LazerGun)privateobj.GetField("_gun");

            for (var c = 0; c < 6; c++)
            {
                for (var i = 0; i < inv.GetLength(0); i++)
                {
                    for (var j = 0; j < inv.GetLength(1); j++)
                    {
                        inv[i, j].Live = false;
                    }
                }
                if (c <= 4)
                {
                    p.TryChangeLevel();
                }
                else
                {
                    gun.Live = false;
                    p.TryExitGame();
                    Assert.IsTrue(p.IsExit);
                }
            }
        }
コード例 #9
0
        public void Distance_When_Point_Is_Endpoint()
        {
            var strategy = new DistanceStrategy();

            Assert.AreEqual(0, strategy.Distance(1, 0, 1, 0, 2, 0));
            Assert.AreEqual(0, strategy.Distance(0, 2, 2, 0, 0, 2));
        }
コード例 #10
0
        // Ostap: добавив клас ProcessingCommand для логічного групування команд з клавіатури
        static void Main(string[] args)
        {
            IDistanceStrategy d    = new DistanceStrategy();
            Process           game = new Process(d);
            ConsoleDraw       draw = new ConsoleDraw();

            game.Draw  += draw.Render;
            game.Show  += draw.Show;
            game.Clear += Console.Clear;

            draw.StartScreen();
            game.Init(60, 50, 7, 5);
            game.InputKey += ProcessingCommand.PressKey;

            while (true)
            {
                if (game.IsExit)
                {
                    game.Draw     -= draw.Render;
                    game.Show     -= draw.Show;
                    game.Clear    -= Console.Clear;
                    game.InputKey -= ProcessingCommand.PressKey;

                    if (game.Win)
                    {
                        draw.GameOverScreen("Congratulation! You are the Winner!", game.Score);
                    }
                    else
                    {
                        draw.GameOverScreen("Thanks for playing.", game.Score);
                    }
                }
            }
        }
コード例 #11
0
        public void UpdScoreTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.UpdScore(20);
            Assert.AreEqual(20, p.Score);
        }
コード例 #12
0
        public void InputTest2()
        {
            bool methodCalled   = false;
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);
            Assert.AreEqual(KeyPress.Wait, p.OnInputKey());
        }
コード例 #13
0
        public void PauseTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);
            p.Pause();
            Assert.AreEqual(Status.IsPaused, p.GameStatus);
        }
コード例 #14
0
        public void RestoreTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);
            p.Restore();
            Assert.AreEqual(Status.IsRuning, p.GameStatus);
        }
コード例 #15
0
        public void Distance_Is_Correct_Negative()
        {
            var strategy = new DistanceStrategy();

            //  XAxis (slope = zero) to point [1,-1]
            Assert.AreEqual(1, strategy.Distance(1, -1, 0, 0, 2, 0));

            //  1 up from XAxis (slope = zero) to point [1,-1]
            Assert.AreEqual(2, strategy.Distance(1, -1, 0, 1, 2, 1));
        }
コード例 #16
0
        public void No_Streets_Returns_Nothing()
        {
            var strategy   = new DistanceStrategy();
            var repository = new StreetRepository();
            var manager    = new StreetManager(repository, strategy);

            var result = manager.GetClosest(0, 0);

            Assert.AreEqual(0, result.Count);
        }
コード例 #17
0
        public void InvaderWin_Test()
        {
            LazerGun          gun     = new LazerGun(5, 5);
            Invader           invader = new Invader(5, 6, 20, 9);
            IDistanceStrategy d       = new DistanceStrategy();
            Process           p       = new Process(d);
            bool a = p.InvaderWin(gun, invader);

            Assert.AreEqual(true, a);
        }
コード例 #18
0
        public void UpdateObjectTest1()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);
            p.InputKey += TestingKey;
            while (p.GameStatus != Status.IsPaused)
            {
            }
            Assert.IsTrue(p.GameStatus == Status.IsPaused);
        }
コード例 #19
0
        public void InputTest()
        {
            bool methodCalled   = false;
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);

            p.InputKey += delegate { methodCalled = true; return(KeyPress.Shot); };
            p.Update(p.OnInputKey());

            Assert.IsTrue(methodCalled);
        }
コード例 #20
0
        public void ClearTest()
        {
            int methodCall      = 0;
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);

            p.Clear += delegate { methodCall = 1; };
            p.Render();

            Assert.AreEqual(1, methodCall);
        }
コード例 #21
0
        public void Single_Street_Is_Found()
        {
            var strategy   = new DistanceStrategy();
            var repository = new StreetRepository();
            var manager    = new StreetManager(repository, strategy);

            repository.Add(new StreetDto {
                Name = "A", Start = new double[] { 1, 1 }, End = new double[] { 2, 2, }
            });

            var result = manager.GetClosest(0, 0);

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual("A", result[0]);
        }
コード例 #22
0
        public void RenderTest_2()
        {
            bool methodCalled   = false;
            int  methodCall     = 0;
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);
            p.Update(KeyPress.Shot);
            p.Draw += delegate { methodCalled = true; };
            p.Show += delegate { methodCall = 1; };
            p.Render();

            Assert.AreEqual(1, methodCall);
        }
コード例 #23
0
        public void Distance_Is_Correct_Vertical()
        {
            var strategy = new DistanceStrategy();

            //  YAxis (slope = infinite) to point [1, 1]
            Assert.AreEqual(1, strategy.Distance(1, 1, 0, 0, 0, 2));

            //  YAxis (slope = infinite) to point on line.
            Assert.AreEqual(0, strategy.Distance(0, 1, 0, 0, 0, 2));

            //  YAxis (slope = infinite) to point [1, 1]
            Assert.AreEqual(2, strategy.Distance(2, 1, 0, 0, 0, 4));

            //  1 right of YAxis (slope = infinite) to point [2, 1]
            Assert.AreEqual(2, strategy.Distance(3, 1, 1, 0, 1, 2));
        }
コード例 #24
0
        public void TryLevelTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            PrivateObject privateobj = new PrivateObject(p);

            p.Init(60, 50, 5, 7);

            Invader[,] inv = (Invader[, ])privateobj.GetField("_invadersArray");
            for (var c = 0; c < 6; c++)
            {
                for (var i = 0; i < inv.GetLength(0); i++)
                {
                    for (var j = 0; j < inv.GetLength(1); j++)
                    {
                        inv[i, j].Live = false;
                    }
                }
                p.TryChangeLevel();
                if (c == 0)
                {
                    Assert.AreEqual(35, inv[1, 1].Speed);
                }
                else if (c == 1)
                {
                    Assert.AreEqual(25, inv[1, 1].Speed);
                }
                else if (c == 2)
                {
                    Assert.AreEqual(20, inv[1, 1].Speed);
                }
                else if (c == 3)
                {
                    Assert.AreEqual(10, inv[1, 1].Speed);
                }
                else if (c == 4)
                {
                    Assert.AreEqual(5, inv[1, 1].Speed);
                }
                else
                {
                    Assert.IsTrue(p.Win);
                }
            }
        }
コード例 #25
0
        public void CollisionInvader_Test()
        {
            LazerGun gun = new LazerGun(5, 5);

            Invader[,] invaders = new Invader[1, 2];
            Invader invader = new Invader(5, 6, 20, 9);

            invaders[0, 0] = invader;
            invaders[0, 1] = new Invader(5, 6, 10, 7);


            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.CollisionInvader(invaders, 0, 1, gun);
            Assert.IsFalse(gun.Live);
        }
コード例 #26
0
        public void UpdateObjectTest()
        {
            IDistanceStrategy d = new DistanceStrategy();
            Process           p = new Process(d);

            p.Init(60, 50, 5, 5);
            KeyPress k = KeyPress.Restore;

            p.InputKey += delegate { return(k); };
            p.Pause();
            if (p.GameStatus == Status.IsPaused)
            {
                while (p.GameStatus != Status.IsRuning)
                {
                }
            }
            Assert.IsTrue(p.GameStatus == Status.IsRuning);
        }
コード例 #27
0
        public void Distance_Is_Correct_To_Endpoint()
        {
            var strategy = new DistanceStrategy();

            //  Horizontal
            Assert.AreEqual(5, strategy.Distance(-3, 4, 0, 0, 2, 0));
            Assert.AreEqual(5, strategy.Distance(3, 4, 0, 0, -2, 0));
            Assert.AreEqual(5, strategy.Distance(-3, -4, 0, 0, 2, 0));
            Assert.AreEqual(5, strategy.Distance(-2, -4, 1, 0, 3, 0));

            //  Vertical
            Assert.AreEqual(5, strategy.Distance(-3, -4, 0, 0, 0, 2));
            Assert.AreEqual(5, strategy.Distance(-3, -4, 0, 0, 0, 2));

            //  Slope
            Assert.AreEqual(2, strategy.Distance(-2, 2, 2, 0, 0, 2));
            Assert.AreEqual(2, strategy.Distance(4, 0, 2, 0, 0, 2));
        }
コード例 #28
0
        public void Distance_Is_Correct()
        {
            var strategy = new DistanceStrategy();

            //  XAxis (slope = zero) to point [1,1]
            Assert.AreEqual(1, strategy.Distance(1, 1, 0, 0, 2, 0));

            //  XAxis (slope = zero) to point [1,1]
            Assert.AreEqual(1, strategy.Distance(1, 1, 0, 0, 4, 0));

            //  XAxis (slope = zero) to point on line.
            Assert.AreEqual(0, strategy.Distance(1, 0, 0, 0, 4, 0));

            //  1 up from XAxis (slope = zero) to point [1, 2]
            Assert.AreEqual(1, strategy.Distance(1, 2, 0, 1, 2, 1));

            //  1 up from XAxis (slope = zero) to point [1, 2]
            Assert.AreEqual(1, strategy.Distance(1, 2, 0, 1, 2, 1));
        }
コード例 #29
0
        public void Multiple_Streets_Are_Found()
        {
            var strategy   = new DistanceStrategy();
            var repository = new StreetRepository();
            var manager    = new StreetManager(repository, strategy);

            //  A horizontal line along the X axis from the origin to 2.
            repository.Add(new StreetDto {
                Name = "A", Start = new double[] { 0, 0 }, End = new double[] { 2, 0, }
            });
            //  A horizontal line 2 up from the X axis.
            repository.Add(new StreetDto {
                Name = "B", Start = new double[] { 0, 2 }, End = new double[] { 2, 2, }
            });

            //  A point on the Y axis 2 up from the origin.
            var result = manager.GetClosest(1, 1);

            //  The top horizontal line should be returned because it is 1 unit from line B.
            Assert.AreEqual(2, result.Count);
        }
コード例 #30
0
        public void RenderTest_3()
        {
            int methodCall               = 0;
            IDistanceStrategy d          = new DistanceStrategy();
            Process           p          = new Process(d);
            PrivateObject     privateobj = new PrivateObject(p);

            p.Init(30, 24, 3, 3);
            Invader[,] inv = (Invader[, ])privateobj.GetField("_invadersArray");

            while (!inv[0, 1].IsFirstShot())
            {
                p.Update(0);
                inv[0, 1].Update(208);
            }

            p.Show += delegate { methodCall = 1; };
            p.Render();

            Assert.AreEqual(1, methodCall);
        }