예제 #1
0
        public void TestUpdateLevel()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];
            StreetField field3 = (StreetField)game.Fields[3];

            field1.Buy(game.Players[0]);
            Assert.That(() => field1.LevelUp(game.Players[0], 5), Throws.InvalidOperationException);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);
            Assert.That(field1.Level, Is.EqualTo(5));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 2 * 60 - 5 * 50));
            Assert.That(() => field3.LevelUp(game.Players[0], 5), Throws.InvalidOperationException);
            Assert.That(() => field1.LevelUp(game.Players[1], 5), Throws.ArgumentException);
            Assert.That(() => field1.LevelUp(game.Players[0], 7), Throws.ArgumentException);
        }
예제 #2
0
        public void TestPayRent()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];
            StreetField field3 = (StreetField)game.Fields[3];

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);

            game.SetPlayerPos(game.Players[1], pos: 1);
            Assert.That(game.Players[1].Money, Is.EqualTo(1500 - 250));
            Assert.That(field3.RentToPay, Is.EqualTo(0));
        }
예제 #3
0
        public void TestSellHouse()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);
            StreetField field2 = ((StreetField)game.Fields[2]);

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);
            Assert.That(((StreetField)game.Fields[1]).Level, Is.EqualTo(5));
            field1.SellHouse(game.Players[0], 5);
            Assert.That(field1.Level, Is.EqualTo(0));
            Assert.That(() => field1.SellHouse(game.Players[1], 1), Throws.InvalidOperationException);
            Assert.That(() => field1.SellHouse(game.Players[0], 1), Throws.InvalidOperationException);
        }
예제 #4
0
        private static void LevelUp(Game game)
        {
            for (int s = 0; s < game.CurrentPlayer.OwnerShip.Count(); s++)
            {
                StreetField street = (StreetField)game.CurrentPlayer.OwnerShip[s];
                Console.WriteLine(s + ". " + street.Name + "Level " + street.Level + ", Costs: " + street.Cost.House);
            }
            Console.Write("StreetNum: ");
            int         streetNum      = int.Parse(Console.ReadLine());
            StreetField streetToUpdate = (StreetField)game.CurrentPlayer.OwnerShip[streetNum];

            Console.Write("Level: ");
            int level = int.Parse(Console.ReadLine());

            streetToUpdate.LevelUp(game.CurrentPlayer, level);
        }
예제 #5
0
        public void TestStreetRepairCard()
        {
            Game        game   = new Game(new Player[] { new Player("X"), new Player("Y"), new Player("Z") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);

            field1.LevelUp(game.Players[0], 5);
            field2.LevelUp(game.Players[0], 4);

            StreetRepairCard card = new StreetRepairCard("", 50, 100, game);

            card.UseCard(game.Players[0]);
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 2 * 60 - 9 * 50 - 4 * 50 - 1 * 100));
        }
예제 #6
0
        public void PlayerIsBankrupt()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);
            StreetField field2 = ((StreetField)game.Fields[2]);
            StreetField field3 = ((StreetField)game.Fields[3]);
            StreetField field4 = ((StreetField)game.Fields[4]);

            game.Players[0].GetMoney(20000);
            game.Players[1].PayMoney(1500);

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);
            field3.Buy(game.Players[0]);
            field4.Buy(game.Players[0]);

            field1.LevelUp(game.Players[0], 5);
            field2.LevelUp(game.Players[0], 5);
            field3.LevelUp(game.Players[0], 5);
            field4.LevelUp(game.Players[0], 5);

            Assert.That(() => game.Fields[4].OnEnter(game.Players[1]), Throws.TypeOf(typeof(BankruptException)));
        }
예제 #7
0
        public void TestTakeMortage()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];
            StreetField field3 = (StreetField)game.Fields[3];

            field1.Buy(game.Players[0]);

            field1.TakeMortage(game.Players[0]);
            Assert.That(field1.IsMortage, Is.EqualTo(true));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 60 + 30));

            game.SetPlayerPos(game.Players[1], 1);
            Assert.That(game.Players[1].Money, Is.EqualTo(1500));

            Assert.That(() => field3.TakeMortage(game.Players[1]), Throws.InvalidOperationException);
            Assert.That(() => field1.TakeMortage(game.Players[0]), Throws.InvalidOperationException);
            Assert.That(() => field1.TakeMortage(game.Players[1]), Throws.InvalidOperationException);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);
            Assert.That(() => field1.TakeMortage(game.Players[0]), Throws.InvalidOperationException);
        }