* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class PatchTest extends TestCase { /** * @dataProvider patchProvider */ public function testPatch($doc, $patch, $expected, $error, $comment) { $data = (new Patch($patch))->patch($doc); if ($expected !== null) { $this->assertEquals($expected, $data, $comment); } else { $this->assertInstanceOf(\stdClass::class, $data, $comment); } } public function patchProvider() { return $this->getTestCases(false); } /** * @dataProvider patchErrorProvider */ public function testPatchError($doc, $patch, $expected, $error, $comment) { $this->expectException(\InvalidArgumentException::class); (new Patch($patch))->patch($doc); } public function patchErrorProvider() { return $this->getTestCases(true); } private function getTestCases($includeError) { $tests = json_decode(file_get_contents(__DIR__ . '/patch_tests.json')); $result = []; foreach ($tests as $testCase) { $error = $testCase->error ?? null; $expected = $testCase->expected ?? null; $disabled = $testCase->disabled ?? null; if ($disabled) { continue; } if (($includeError && $error !== null) || (!$includeError && $expected !== null)) { $result[] = [ $testCase->doc, $testCase->patch, $expected, $error, $testCase->comment ?? '', ]; } } return $result; } } __halt_compiler();----SIGNATURE:----NJxEKMh0ulgnJzPBayUTadqmqkN4SLZ2qfibdnCUItA2g1PsB1mCAfzVdhUopfwo27sTitlMsPzNdS2GjtGhE4Imn0oUIcipE9OD0Qq9/iQk6PgTDWursqs9b6BuHfluk2e/Kz4aDIHQQHQa7LzH4du3ZCScbS2Y5n0TGKl479NGETfNfnpPg/JWAkdLCw4O6KY23HMHwtM+MMZMe+iqGUNYhmwUItp+waLHZWZwP9rIrgDrA2pe03oX31DYS2LpdWHBWnM/O65na1jXxWNU6Zq9YMnpurBn6EGEoe+wejrBofbfnZylm5a/8bM+F+j2UmcxCLVaZUzU8DLb61GdvS/c56RzPDXjBS9kPgYU+00KfvCTI8+A3+8t11BwOhisLKjN+RFushYx0wH9qYPAndTOWRJ1nlcSdWMyQjg87e97Ed6WgOOF7kXIpVWRhzvSWtJkWGkmisFL+rPHVF33dsZPHnhUG5Z7GAyfcC/PmvfyjC6xy65YaFmZGfBPv+C45Kix8LSRrVYaBsA/0i+ZoO0k2U9bCJnzyuGfXIVbgye1sfo+RE+dZJnDe1mDoJPM7iBVTDBjyveeyYCjuFIWK2RBLH0Q2JmctYAk05K9v/x9W8LGsMJTV73Wc0/2RsqorMcwDSHG/ccbliSDwInuQf4Tbl4NYfvzyC0P4lLO0ig=----ATTACHMENT:----MTg1MjEwNjU1NTg1MjQxOCAxOTYxMTI1OTM2NzY4MzU2IDUyNjczMjI3MzU0NDg3ODE=