/**
  * @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);