public void AvaliableMove_Queen()
        {
            // setup environment for test
            GameController.StartGame ();
            List<Piece> PL1 = GameController.Players [0].PieceList;
            List<Piece> PL2 = GameController.Players [1].PieceList;
            for (int i = 0; i < PL1.Count; i++)
            {
                PL1 [i].isDead = true;
                PL1 [i].X = -1;
                PL1 [i].Y = -1;
                PL2 [i].isDead = true;
                PL2 [i].X = -1;
                PL2 [i].Y = -1;
            }
            UtilityFunctions.CheckAvaiMoveOfAllPieces ();

            //test piece
            Piece testQueen = new Queen (3, 2, true);
            testQueen.AvailableMoves ();
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 1, 0));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 2, 1));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 1));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 0));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 4, 1));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 5, 0));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 4, 2));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 5, 2));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 6, 2));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 7, 2));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 4, 3));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 5, 4));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 6, 5));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 7, 6));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 3));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 4));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 5));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 6));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 3, 7));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 2, 3));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 1, 4));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 0, 5));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 2, 2));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 1, 2));
            Assert.IsTrue (hasContain (testQueen.AvaliableMove_X, testQueen.AvaliableMove_Y, 0, 2));
        }
        public void Attack_Queen()
        {
            // setup environment for test
            GameController.StartGame ();
            List<Piece> PL1 = GameController.Players [0].PieceList;
            List<Piece> PL2 = GameController.Players [1].PieceList;
            for (int i = 0; i < PL1.Count; i++)
            {
                PL1 [i].isDead = true;
                PL1 [i].X = -1;
                PL1 [i].Y = -1;
                PL2 [i].isDead = true;
                PL2 [i].X = -1;
                PL2 [i].Y = -1;
            }
            UtilityFunctions.CheckAvaiMoveOfAllPieces ();

            //test piece
            Piece testQueen = new Queen (3, 1, true);
            Piece testPawn = null;
            Piece testPawn2 = null;

            //get a pwan from write player for test attack
            foreach (Piece p in PL1)
            {
                if (p.type == PieceType.Pawn)
                {
                    testPawn = p;
                    break;
                }
            }
            testPawn.isDead = false;
            testPawn.X = 3;
            testPawn.Y = 5;
            testQueen.AvailableMoves ();
            testQueen.Move (3, 5);
            Assert.AreEqual (true, testPawn.isDead);

            //get a pwan from black player for test attack
            foreach (Piece p in PL2)
            {
                if (p.type == PieceType.Pawn)
                {
                    testPawn2 = p;
                    break;
                }
            }
            testPawn2.isDead = false;
            testPawn2.X = 1;
            testPawn2.Y = 5;
            testQueen.AvailableMoves ();
            testQueen.Move (1, 5);
            Assert.AreEqual (false, testPawn2.isDead);
        }