expectException(ParametersException::class); run($input); } else { $output = run($input); $this->assertEquals($expected, $output); } } /** * @dataProvider generatedDataProvider */ public function testRandomResults($input, $expected) { $this->_doTest($input, $expected); } /** * @dataProvider generatedDataProvider */ public function testBoardCounts($input, $expected) { $input['boards'] = strval($input['over39_boards'] ? rand(40, 60) : rand(1, 39)); unset($input['over39_boards']); $this->_doTest($input, $expected); } /** * @dataProvider bridgenetDataProvider */ public function testBridgenet($input, $expected) { $this->_doTest($input, $expected); } private function _fileDataProvider($file) { $contents = file(dirname(__FILE__) . '/' . $file); $count = count($contents); for ($i = 0; $i < $count; $i += 2) { $input = []; parse_str(http_build_query(json_decode($contents[$i], TRUE)), $input); yield [$input, json_decode($contents[$i+1], TRUE)]; } } public function generatedDataProvider() { yield from $this->_fileDataProvider('tests.txt'); } public function bridgenetDataProvider() { yield from $this->_fileDataProvider('bridgenet.txt'); } } ?>