diff options
Diffstat (limited to 'test/ApiTest.php')
-rw-r--r-- | test/ApiTest.php | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/ApiTest.php b/test/ApiTest.php new file mode 100644 index 0000000..0a8290c --- /dev/null +++ b/test/ApiTest.php @@ -0,0 +1,61 @@ +<?php + +use PHPUnit\Framework\TestCase; + +class ApiTest extends TestCase { + + private function _doTest($input, $expected) { + require_once(dirname(__FILE__) . '/../http/api-inc.php'); + if (is_string($expected)) { + $this->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'); + } + +} + +?> |