/** * @dataProvider differentJsonFiles */ public function testCollectsStructureCorrectly($fileToProcess) { $listener = new IdealConsumer(); $parser = new Parser(fopen($fileToProcess, 'r'), $listener); $parser->parse(); $this->assertEquals(json_decode(file_get_contents($fileToProcess), true), $listener->data); }
public function testFilePositionIsCalledIfDefined() { $stub = new TestFilePositionListener(); $parser = new Parser(fopen(__DIR__ . '/../example/example.json', 'r'), $stub); $parser->parse(); $this->assertTrue($stub->called); }
public function testThrowsParingError() { $listener = new TestListener(); $parser = new Parser(self::inMemoryStream('{ invalid json }'), $listener); $this->setExpectedException('JsonStreamingParser\\ParsingError', 'Parsing error in [1:3]'); $parser->parse(); }
private function assertParsesCorrectly($testfile, $verifyfile) { $this->verifyfile = $verifyfile; $listener = new \MultiDocumentsListener($this); $stream = fopen($testfile, 'r'); try { $parser = new Parser($stream, $listener, "\n", false, 8192, true); $parser->parse(); fclose($stream); } catch (Exception $e) { fclose($stream); throw $e; } }
private function assertParsesCorrectly($testfile) { // Parse using an InMemoryListener instance $listener = new InMemoryListener(); $stream = fopen($testfile, 'r'); try { $parser = new Parser($stream, $listener); $parser->parse(); fclose($stream); } catch (Exception $e) { fclose($stream); throw $e; } $actual = $listener->get_json(); // Parse using json_decode $expected = json_decode(file_get_contents($testfile), true); // Make sure the two produce the same object structure $this->assertSame($expected, $actual); }
<?php use JsonStreamingParser\Listener\SubsetConsumer; use JsonStreamingParser\Parser; require_once __DIR__ . '/../vendor/autoload.php'; class Consumer extends SubsetConsumer { public $data; protected function consume($data) { $this->data = $data; return false; } } //---------------------------------------------------------------------------------------------------------------------- mb_regex_encoding('UTF-8'); mb_internal_encoding("UTF-8"); $expected = json_decode(file_get_contents(__DIR__ . '/Listener/data/ratherBig.json'), true); assert($expected); $consumer = new Consumer(); $parser = new Parser(fopen(__DIR__ . '/Listener/data/ratherBig.json', 'r'), $consumer); $time = microtime(true); $parser->parse(); echo "JSON size: " . stat(__DIR__ . '/Listener/data/ratherBig.json')['size'] . " bytes,\nTime: " . (microtime(true) - $time) . " sec.\n\n"; assert($expected == $consumer->data);