示例#1
0
        public void Winner_IsRed_WhenRedHasConqueredTheBlueCity(IGame game)
        {
            // :::: ARRANGE ::::
            game.MoveUnit(RedArcherTile, To(3, 1));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(3, 1), BlueCityTile);

            // :::: ASSERT ::::
            game.Winner.Should().Be(Red);
        }
示例#2
0
        public void RedSettlerAt4x3_DoesNotMoveMoreThanOneTileDuringARound(IGame game)
        {
            // :::: ARRANGE ::::
            game.MoveUnit(RedSettlerTile, To(4, 2));

            // :::: ACT ::::
            game.MoveUnit(From(4, 2), RedSettlerTile);

            // :::: ASSERT ::::
            game.UnitAt(RedSettlerTile).Should().BeNull();
            game.UnitAt(Location(4, 2)).Owner.Should().Be(Red);
            game.UnitAt(Location(4, 2)).Type.Should().Be(Settler);
            game.UnitAt(Location(4, 2)).RemainingMovement.Should().Be(0);
        }
示例#3
0
        public void BlueLegionAt3x2_DoesNotMoveMoreThanOneTileDuringARound(IGame game)
        {
            // :::: ARRANGE ::::
            game.EndTurn();
            game.MoveUnit(BlueLegionTile, To(3, 1));

            // :::: ACT ::::
            game.MoveUnit(From(3, 1), BlueLegionTile);

            // :::: ASSERT ::::
            game.UnitAt(BlueLegionTile).Should().BeNull();
            game.UnitAt(Location(3, 1)).Owner.Should().Be(Blue);
            game.UnitAt(Location(3, 1)).Type.Should().Be(Legion);
            game.UnitAt(Location(3, 1)).RemainingMovement.Should().Be(0);
        }
示例#4
0
        public void RedArcher_DoesNotMoveOntoTheRedSettlerAt4x3(IGame game)
        {
            // :::: ARRANGE ::::
            game.MoveUnit(RedArcherTile, To(3, 1));
            SkipRounds(game, 1);

            game.MoveUnit(From(3, 1), To(4, 2));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(4, 2), RedSettlerTile);

            // :::: ASSERT ::::
            game.UnitAt(Location(4, 2)).Owner.Should().Be(Red);
            game.UnitAt(Location(4, 2)).Type.Should().Be(Archer);
            game.UnitAt(Location(4, 2)).RemainingMovement.Should().Be(1);

            game.UnitAt(RedSettlerTile).Owner.Should().Be(Red);
            game.UnitAt(RedSettlerTile).Type.Should().Be(Settler);
            game.UnitAt(RedSettlerTile).RemainingMovement.Should().Be(1);
        }
示例#5
0
        public void BlueLegionAt3x2_DoesNotMoveToMountainsAt2x2(IGame game)
        {
            // :::: ACT ::::
            game.MoveUnit(BlueLegionTile, MountainsTile);

            // :::: ASSERT ::::
            game.UnitAt(BlueLegionTile).Owner.Should().Be(Blue);
            game.UnitAt(BlueLegionTile).Type.Should().Be(Legion);
            game.UnitAt(BlueLegionTile).RemainingMovement.Should().Be(1);
            game.UnitAt(MountainsTile).Should().BeNull();
        }
示例#6
0
        public void RedArcherAt2x0_DoesNotMoveToOceansAt1x0(IGame game)
        {
            // :::: ACT ::::
            game.MoveUnit(RedArcherTile, OceansTile);

            // :::: ASSERT ::::
            game.UnitAt(RedArcherTile).Owner.Should().Be(Red);
            game.UnitAt(RedArcherTile).Type.Should().Be(Archer);
            game.UnitAt(RedArcherTile).RemainingMovement.Should().Be(1);
            game.UnitAt(OceansTile).Should().BeNull();
        }
示例#7
0
        public void RedSettler_DoesNotConquerTheBlueCityAt4x1(IGame game)
        {
            // :::: ARRANGE ::::
            game.MoveUnit(RedSettlerTile, To(4, 2));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(4, 2), BlueCityTile);

            // :::: ASSERT ::::
            game.CityAt(BlueCityTile).Owner.Should().Be(Blue);
        }
示例#8
0
        public void BlueLegion_ConquersTheRedCityAt1x1(IGame game)
        {
            // :::: ARRANGE ::::
            game.EndTurn();
            game.MoveUnit(BlueLegionTile, To(2, 1));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(2, 1), RedCityTile);

            // :::: ASSERT ::::
            game.CityAt(RedCityTile).Owner.Should().Be(Blue);
        }
示例#9
0
        public void RedArcher_ConquersTheBlueCityAt4x1(IGame game)
        {
            // :::: ARRANGE ::::
            game.MoveUnit(RedArcherTile, To(3, 1));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(3, 1), BlueCityTile);

            // :::: ASSERT ::::
            game.CityAt(BlueCityTile).Owner.Should().Be(Red);
        }
示例#10
0
        public void BlueLegion_DefeatsTheRedSettlerAt4x3(IGame game)
        {
            // :::: ARRANGE ::::
            game.EndTurn();

            // :::: ACT ::::
            game.MoveUnit(BlueLegionTile, RedSettlerTile);

            // :::: ASSERT ::::
            game.UnitAt(BlueLegionTile).Should().BeNull();
            game.UnitAt(RedSettlerTile).Owner.Should().Be(Blue);
            game.UnitAt(RedSettlerTile).Type.Should().Be(Legion);
            game.UnitAt(RedSettlerTile).RemainingMovement.Should().Be(0);
        }
示例#11
0
        public void RedArcher_DefeatsTheBlueLegionAt3x2(IGame game)
        {
            // :::: ARRANGE ::::
            game.MoveUnit(RedArcherTile, To(3, 1));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(3, 1), BlueLegionTile);

            // :::: ASSERT ::::
            game.UnitAt(Location(3, 1)).Should().BeNull();
            game.UnitAt(BlueLegionTile).Owner.Should().Be(Red);
            game.UnitAt(BlueLegionTile).Type.Should().Be(Archer);
            game.UnitAt(BlueLegionTile).RemainingMovement.Should().Be(0);
        }
示例#12
0
        public void RedArcherAt2x0_DoesNotMoveTo2x1_WhenBlueIsInTurn(IGame game)
        {
            // :::: ARRANGE ::::
            game.EndTurn();

            // :::: ACT ::::
            game.MoveUnit(RedArcherTile, To(2, 1));

            // :::: ASSERT ::::
            game.UnitAt(RedArcherTile).Owner.Should().Be(Red);
            game.UnitAt(RedArcherTile).Type.Should().Be(Archer);
            game.UnitAt(RedArcherTile).RemainingMovement.Should().Be(1);
            game.UnitAt(Location(2, 1)).Should().BeNull();
        }
示例#13
0
        public void RedArcherAt2x0_MovesTo2x1_WhenRedIsInTurn(IGame game)
        {
            // :::: ACT ::::
            game.MoveUnit(RedArcherTile, To(2, 1));

            // :::: ASSERT ::::
            game.UnitAt(RedArcherTile).Should().BeNull();
            game.UnitAt(Location(2, 1)).Owner.Should().Be(Red);
            game.UnitAt(Location(2, 1)).Type.Should().Be(Archer);
            game.UnitAt(Location(2, 1)).RemainingMovement.Should().Be(0);
        }
示例#14
0
        public void Winner_IsBlue_WhenBlueHasConqueredTheRedCity(IGame game)
        {
            // :::: ARRANGE ::::
            game.EndTurn();
            game.MoveUnit(BlueLegionTile, To(2, 1));
            SkipRounds(game, 1);

            // :::: ACT ::::
            game.MoveUnit(From(2, 1), RedCityTile);

            // :::: ASSERT ::::
            game.Winner.Should().Be(Blue);
        }