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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
public void CanSlideAroundEdges() { var initial = new InitialHiveBuilder(); initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡"; initial += " ⬡ ⬢ ⬢ ⬢ ★ ⬢ ⬢ ⬢ ⬡ "; initial += "⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡ ⬡"; var expected = new ExpectedMovementBuilder(); expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔"; expected += " ✔ ⬢ ⬢ ⬢ ★ ⬢ ⬢ ⬢ ✔ "; expected += "✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔"; new CanSlideTo().Should().HaveMoves(initial, expected); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }