set($pos); } foreach($state_win as $pos) { $this->assertTrue($board->isWin($pos)); } foreach($state_press as $pos) { $this->assertFalse($board->isWin($pos)); } } /** * @dataProvider state */ public function test_is_pressed(int $w, int $h, array $state_win, array $state_press, int $winning) { $board = new GameBoardState($w, $h); foreach($state_win + $state_press as $pos) { $board->set($pos); } foreach($state_win + $state_press as $pos) { $this->assertTrue($board->isPressed($pos)); } } /** * @dataProvider state */ public function test_get_num_win(int $w, int $h, array $state_win, array $state_press, int $winning) { $board = new GameBoardState($w, $h); foreach($state_win + $state_press as $pos) { $board->set($pos); } $this->assertSame($winning, $board->getNumWinRows()); } public function test_deselect_winning_pattern() { $board = new GameBoardState(3, 3); // 0 [1] 2 // [3] [4] [5] // 6 [7] 8 $board->set(1); $board->set(4); $board->set(7); $board->set(3); $board->set(5); $this->assertTrue($board->isPressed(1)); $this->assertTrue($board->isPressed(3)); $this->assertTrue($board->isPressed(4)); $this->assertTrue($board->isPressed(5)); $this->assertTrue($board->isPressed(7)); $this->assertTrue($board->isWin(1)); $this->assertTrue($board->isWin(3)); $this->assertTrue($board->isWin(4)); $this->assertTrue($board->isWin(5)); $this->assertTrue($board->isWin(7)); $this->assertSame(2, $board->getNumWinRows()); // 0 [1] 2 // [3] 4 [5] // 6 [7] 8 $board->set(4, false); $this->assertFalse($board->isWin(1)); $this->assertFalse($board->isWin(3)); $this->assertFalse($board->isWin(4)); $this->assertFalse($board->isWin(5)); $this->assertFalse($board->isWin(7)); $this->assertTrue($board->isPressed(1)); $this->assertTrue($board->isPressed(3)); $this->assertFalse($board->isPressed(4)); $this->assertTrue($board->isPressed(5)); $this->assertTrue($board->isPressed(7)); $this->assertSame(0, $board->getNumWinRows()); } }