Example #1
0
    public void SingleCellCanMove()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ★ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ✔ ✔ ★ ✔ ✔ ✔ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ";

        new WontSplitHive().Should().HaveMoves(initial, expected);
    }
Example #2
0
    public void OnlyTwoOccupiedCanMove()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ★ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ✔ ★ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ✔ ✔ ✔ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ✔ ✔ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        new WontSplitHive().Should().HaveMoves(initial, expected);
    }
Example #3
0
    public void DoesntAllowMovesThroughNarrowGaps()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬢ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬢ ⬡ ⬡ ⬢ ⬡ ⬢ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬢ ★ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬢ ⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬢ ✔ ✔ ⬢ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬢ ✔ ✔ ✔ ✔ ⬢ ⬡ ⬡ ";
        expected += "⬡ ⬢ ✔ ✔ ⬢ ✔ ⬢ ⬡ ⬡ ⬡";
        expected += " ⬡ ✔ ✔ ⬢ ★ ✔ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬢ ✔ ✔ ⬢ ⬢ ⬢ ⬡ ⬡ ⬡";
        expected += " ⬡ ✔ ✔ ✔ ✔ ✔ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬢ ⬢ ✔ ✔ ✔ ⬢ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ⬡ ";

        new CanSlideTo().Should().HaveMoves(initial, expected);
    }
Example #4
0
    public void DoesntIncludeAdjacent()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬢ ⬡ ★ ⬡ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬢ ⬡ ★ ⬡ ⬢ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var move = new OnlyJumpStraightOver();

        move.Should().HaveMoves(initial, expected);
    }
Example #5
0
    public void CalculatesNextEmpty()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬢ ⬢ ★ ⬢ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ✔ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ✔ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ✔ ⬢ ⬢ ★ ⬢ ⬢ ✔ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ✔ ⬡ ⬢ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ✔ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var move = new OnlyJumpStraightOver();

        move.Should().HaveMoves(initial, expected);
    }
Example #6
0
    public void CantDisconnectHive2()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬢ ★ ⬢ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬢ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬢ ★ ⬢ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬢ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        new WontSplitHive().Should().HaveMoves(initial, expected);
    }
Example #7
0
    public void Moves3EmptyPlaces()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬢ ⬢ ⬢ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬡ ⬡ ★ ⬢ ⬢ ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬢ ⬢ ⬡ ⬡ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬢ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬢ ⬢ ⬢ ⬢ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬢ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬢ ⬡ ✔ ⬢ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬢ ✔ ⬡ ⬡ ⬡ ⬢ ⬡ ⬡";
        expected += " ⬡ ⬢ ⬡ ⬡ ★ ⬢ ⬢ ⬢ ⬡ ";
        expected += "⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ✔ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬢ ⬡ ✔ ⬢ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬢ ✔ ⬡ ⬢ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬢ ⬢ ⬢ ⬡ ⬡ ";

        var move = new OnlyThreeSpaces();

        move.Should().HaveMoves(initial, expected);
    }
Example #8
0
    public AndConstraint <MovementAssertions> HaveMoves(InitialHiveBuilder initial, ExpectedMovementBuilder expected)
    {
        var expectedCoords = expected.ExpectedMoves();

        Execute.Assertion.Given(() => Subject(initial))
        .ForCondition(coords => coords.SetEquals(expectedCoords))
        .FailWith("\nResulting " + Identifier + "s did not match expected\n\nInitial:\n{1}\n\nActual - Expected:\n{2}\n",
                  _ => initial.OriginCell.Coords, _ => new StringBuilder(initial.ToColoredString(initial.ToString())),
                  actual => new StringBuilder(expected.GetMovementDiff(actual)));

        return(new AndConstraint <MovementAssertions>(this));
    }
Example #9
0
    public void CanSlideAroundEdges()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬢ ⬢ ★ ⬢ ⬢ ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ⬢ ⬢ ⬢ ★ ⬢ ⬢ ⬢ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔";

        new CanSlideTo().Should().HaveMoves(initial, expected);
    }
Example #10
0
    public void CreatesCellIfTheBoardIsNotLargeEnough()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ★ ⬢ ⬢ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ★ ⬢ ⬢ ✔ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";

        var move = new OnlyJumpStraightOver();

        move.Should().HaveMoves(initial, expected);
    }
Example #11
0
    public void AllowsAllAdjacentCells()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ";
        initial += "⬡ ★ ⬡";
        initial += " ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ✔ ✔ ";
        expected += "✔ ★ ✔";
        expected += " ✔ ✔ ";

        var move = new IsAdjacent();

        move.Should().HaveMoves(initial, expected);
    }
Example #12
0
    public void AllowsAllEmptyCells_WithNoPlacedTiles()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ";
        initial += "⬡ ★ ⬡";
        initial += " ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ✔ ✔ ";
        expected += "✔ ★ ✔";
        expected += " ✔ ✔ ";

        var move = new IsEmpty();

        move.Should().HaveMoves(initial, expected);
    }
Example #13
0
    public void HasOneHiveRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ Q ⬡ ⬡ ";
        initial += "⬡ ⬡ ★ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ Q ⬡ ⬡ ";
        expected += "⬡ ⬡ ★ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬢ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡";

        Creatures.Ant.Should().HaveMoves(initial, expected);
    }
Example #14
0
    public void HasNeighborsOccupiedRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬢ ★ ⬡ ⬡";
        initial += " ⬡ Q ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ✔ ✔ ⬡ ⬡ ";
        expected += "✔ ⬢ ★ ✔ ⬡";
        expected += " ✔ Q ⬢ ✔ ";
        expected += "⬡ ✔ ✔ ✔ ⬡";

        Creatures.Ant.Should().HaveMoves(initial, expected);
    }
Example #15
0
    public void CellWithMultipleTilesWontDisconnect()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ★ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ";

        initial.OriginCells.First().AddTile(new Tile(0, 0, Creatures.Beetle));
        var expected = new ExpectedMovementBuilder();

        expected += " ✔ ✔ ✔ ✔ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ★ ✔ ✔ ";
        expected += "✔ ✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ✔ ✔ ✔ ";

        new WontSplitHive().Should().HaveMoves(initial, expected);
    }
Example #16
0
    public void HasAtLeastOneNeighbour()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬢ ★ ⬢ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ✔ ✔ ✔ ✔ ✔ ⬡ ⬡";
        expected += " ⬡ ⬡ ✔ ⬢ ★ ✔ ✔ ✔ ⬡ ";
        expected += "⬡ ⬡ ⬡ ✔ ✔ ✔ ✔ ✔ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ";

        var move = new HasAnyNeighbour();

        move.Should().HaveMoves(initial, expected);
    }
Example #17
0
    public void HasOneSpaceRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ Q ⬢ ⬢ ⬡";
        initial += " ⬢ ⬡ ⬡ ⬢ ";
        initial += "⬢ ⬡ ★ ⬡ ⬢";
        initial += " ⬢ ⬢ ⬡ ⬢ ";
        initial += "⬡ ⬢ ⬢ ⬢ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ Q ⬢ ⬢ ⬡";
        expected += " ⬢ ✔ ✔ ⬢ ";
        expected += "⬢ ✔ ★ ✔ ⬢";
        expected += " ⬢ ✔ ✔ ⬢ ";
        expected += "⬡ ⬢ ⬢ ⬢ ⬡";

        var beetle = Creatures.Beetle;

        beetle.Should().HaveMoves(initial, expected);
    }
Example #18
0
    public void HasNeighborsOccupiedRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ Q ★ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ✔ ⬡ ⬡ ";
        expected += "⬡ ✔ ★ ✔ ⬡";
        expected += " ⬡ ✔ ✔ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡";

        var beetle = Creatures.Beetle;

        beetle.Should().HaveMoves(initial, expected);
    }
Example #19
0
    public void CanMoveToEmptyAdjacent()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬢ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬢ ⬢ ";
        initial += "⬡ ⬡ ★ ⬢ ⬢";
        initial += " ⬡ ⬡ ⬢ ⬡ ";
        initial += "⬢ ⬢ ⬢ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬢ ⬡ ⬡";
        expected += " ⬡ ⬢ ⬢ ⬢ ";
        expected += "⬡ ✔ ★ ⬢ ⬢";
        expected += " ⬡ ✔ ⬢ ⬡ ";
        expected += "⬢ ⬢ ⬢ ⬡ ⬡";

        var queen = Creatures.Queen;

        queen.Should().HaveMoves(initial, expected);
    }
Example #20
0
    public void Moves3PlacesWithoutBacktracking()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬢ ⬢ ⬡ ";
        initial += "⬡ ⬢ ★ ⬢ ⬡";
        initial += " ⬡ ⬢ ⬡ ⬢ ";
        initial += "⬡ ⬢ ⬡ ⬢ ⬡";
        initial += " ⬡ ⬢ ⬡ ⬢ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬢ ⬢ ⬡ ";
        expected += "⬡ ⬢ ★ ⬢ ⬡";
        expected += " ⬡ ⬢ ⬡ ⬢ ";
        expected += "⬡ ⬢ ⬡ ⬢ ⬡";
        expected += " ⬡ ⬢ ✔ ⬢ ";

        var move = new OnlyThreeSpaces();

        move.Should().HaveMoves(initial, expected);
    }
Example #21
0
    public void AllowsOnlyCellsAdjacentToOrigin()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ★ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ✔ ✔ ⬡ ";
        expected += "⬡ ✔ ★ ✔ ⬡";
        expected += " ⬡ ✔ ✔ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡";

        var move = new IsAdjacent();

        move.Should().HaveMoves(initial, expected);
    }
Example #22
0
    public void HasCanSlideRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬢ ⬡ ⬢ ⬢ ⬢ ";
        initial += " ⬢ ⬡ ⬡ ⬢ ⬡";
        initial += "⬢ ⬡ ★ Q ⬢ ";
        initial += " ⬢ ⬡ ⬡ ⬡ ⬢";
        initial += "⬡ ⬢ ⬢ ⬡ ⬢ ";
        initial += " ⬡ ⬢ ⬢ ⬢ ⬢";

        var expected = new ExpectedMovementBuilder();

        expected += "⬢ ⬡ ⬢ ⬢ ⬢ ";
        expected += " ⬢ ✔ ✔ ⬢ ⬡";
        expected += "⬢ ✔ ★ Q ⬢ ";
        expected += " ⬢ ✔ ✔ ✔ ⬢";
        expected += "⬡ ⬢ ⬢ ✔ ⬢ ";
        expected += " ⬡ ⬢ ⬢ ⬢ ⬢";

        Creatures.Ant.Should().HaveMoves(initial, expected);
    }
Example #23
0
    public void HasNeighborsOccupiedRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ Q ★ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ";
        expected += "✔ Q ★ ⬡ ⬡";
        expected += " ⬡ ⬢ ⬢ ⬡ ";
        expected += "⬡ ⬡ ⬡ ✔ ⬡";

        var spider = Creatures.Spider;

        spider.Should().HaveMoves(initial, expected);
    }
Example #24
0
    public void AllowsAllEmptyCells_WithPlacedTiles()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬢ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬢ ⬢ ";
        initial += "⬡ ⬡ ★ ⬢ ⬢";
        initial += " ⬡ ⬢ ⬢ ⬡ ";
        initial += "⬢ ⬡ ⬢ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "✔ ✔ ⬢ ✔ ✔";
        expected += " ✔ ⬢ ⬢ ⬢ ";
        expected += "✔ ✔ ★ ⬢ ⬢";
        expected += " ✔ ⬢ ⬢ ✔ ";
        expected += "⬢ ✔ ⬢ ✔ ✔";

        var move = new IsEmpty();

        move.Should().HaveMoves(initial, expected);
    }
Example #25
0
    public void HasNextUnoccupiedRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ★ Q ⬢ ⬡";
        initial += " ⬢ ⬢ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ★ Q ⬢ ✔";
        expected += " ⬢ ⬢ ⬡ ⬡ ";
        expected += "✔ ⬡ ✔ ⬡ ⬡";

        var grasshopper = Creatures.Grasshopper;

        grasshopper.Should().HaveMoves(initial, expected);
    }
Example #26
0
    public void HasThreeSpacesRuleRule()
    {
        var initial = new InitialHiveBuilder();

        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ★ ⬡ ";
        initial += "⬡ ⬡ Q ⬡ ⬡";
        initial += " ⬡ ⬡ ⬢ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";

        var expected = new ExpectedMovementBuilder();

        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬡ ★ ⬡ ";
        expected += "⬡ ⬡ Q ⬡ ⬡";
        expected += " ⬡ ✔ ⬢ ⬡ ";
        expected += "⬡ ⬡ ⬡ ✔ ⬡";

        var spider = Creatures.Spider;

        spider.Should().HaveMoves(initial, expected);
    }
Example #27
0
    public void CanMoveBySliding()
    {
        var initial = new InitialHiveBuilder();

        initial += " ⬡ ⬡ ⬡ ⬡ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬢ ⬢ ⬡ ";
        initial += "⬡ ⬢ ★ ⬢ ⬡";
        initial += " ⬢ ⬡ ⬡ ⬢ ";
        initial += "⬡ ⬡ ⬡ ⬡ ⬡";
        initial += " ⬡ ⬡ ⬡ ⬡ ";

        var expected = new ExpectedMovementBuilder();

        expected += " ⬡ ⬡ ⬡ ⬡ ";
        expected += "⬡ ⬡ ⬡ ⬡ ⬡";
        expected += " ⬡ ⬢ ⬢ ⬡ ";
        expected += "⬡ ⬢ ★ ⬢ ⬡";
        expected += " ⬢ ✔ ✔ ⬢ ";
        expected += "✔ ✔ ✔ ✔ ✔";
        expected += " ✔ ✔ ✔ ✔ ";

        new CanSlideTo().Should().HaveMoves(initial, expected);
    }