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 static 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 static function generatedDataProvider() { yield from self::_fileDataProvider('tests.txt'); } public static function bridgenetDataProvider() { yield from self::_fileDataProvider('bridgenet.txt'); } } ?>