Этот вопрос является продолжением следующей темы (хотя вам и не нужно ее читать). Это просто игра в тетрис, которую я реализую с помощью TDD.
Так вот в чем проблема: у меня есть набор приемочных тестов. Я определил следующий тест в одном из них:
[TestMethod]
public void I_Can_Query_Any_Piece_Of_The_Board_For_A_Color() {
StandardTetris tetris = new StandardTetris();
for (int y = 0; y < tetris.BoardSize.Height; ++y) {
for (int x = 0; x < tetris.BoardSize.Width; ++x) {
Color color = tetris.GetColorAt(x, y);
Assert.IsTrue(
color == Color.Cyan ||
color == Color.Blue ||
color == Color.Orange ||
color == Color.Yellow ||
color == Color.Green ||
color == Color.Violet ||
color == Color.Red
);
}
}
}
, который заставил меня изменить метод, который у меня был на StandardTetris
public Color GetColorAt(int x, int y)
{
return Color.Black;
}
до
public Color GetColorAt(int x, int y)
{
return Color.Orange;
}
Следующим тестом, который я хотел бы сделать, было установить пару пикселей на несколько цветов, а затем проверить, действительно ли они соответствуют этому цвету в позициях, которые я им поставил (хотя, теперь, когда я об этом думаю, не будет приемочных испытаний).
Как я могу это сделать?
StandardTetris не предоставляет какого-либо установщика для частей платы (не предполагается, что он должен это делать!), И я не хочу иметь никакого другого конструктора, кроме конструктора по умолчанию. Как я могу тогда издеваться?
Это текущий код на StandardTetris
:
public class StandardTetris
{
private static readonly int BOARD_WIDTH = 10;
private static readonly int BOARD_HEIGHT = 22;
private Size boardSize = new Size(BOARD_WIDTH, BOARD_HEIGHT);
public Size BoardSize { get { return boardSize; } }
public Color GetColorAt(int x, int y)
{
return Color.Orange;
}
}
и, используя ваши предложения, я сделал следующий тест:
[TestMethod]
public void Set_A_Blue_2x2_Square_On_Origin_And_Query_It_Sucessfully() {
Board board = new Board();
board.SetColorAt(0, 0, Color.Blue);
board.SetColorAt(0, 1, Color.Blue);
board.SetColorAt(1, 0, Color.Blue);
board.SetColorAt(1, 1, Color.Blue);
Tetris tetris = new Tetris(board);
Assert.AreEqual(Color.Blue, tetris.GetColorAt(0, 0));
Assert.AreEqual(Color.Blue, tetris.GetColorAt(1, 0));
Assert.AreEqual(Color.Blue, tetris.GetColorAt(0, 1));
Assert.AreEqual(Color.Blue, tetris.GetColorAt(1, 1));
}