Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\VarDumper\Tests\Dumper; Chris@0: Chris@0: use PHPUnit\Framework\TestCase; Chris@0: use Symfony\Component\VarDumper\Cloner\VarCloner; Chris@0: use Symfony\Component\VarDumper\Dumper\HtmlDumper; Chris@0: Chris@0: /** Chris@0: * @author Nicolas Grekas Chris@0: */ Chris@0: class HtmlDumperTest extends TestCase Chris@0: { Chris@0: public function testGet() Chris@0: { Chris@13: if (ini_get('xdebug.file_link_format') || get_cfg_var('xdebug.file_link_format')) { Chris@13: $this->markTestSkipped('A custom file_link_format is defined.'); Chris@13: } Chris@13: Chris@0: require __DIR__.'/../Fixtures/dumb-var.php'; Chris@0: Chris@0: $dumper = new HtmlDumper('php://output'); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@0: $cloner = new VarCloner(); Chris@17: $cloner->addCasters([ Chris@0: ':stream' => function ($res, $a) { Chris@0: unset($a['uri'], $a['wrapper_data']); Chris@0: Chris@0: return $a; Chris@0: }, Chris@17: ]); Chris@0: $data = $cloner->cloneVar($var); Chris@0: Chris@0: ob_start(); Chris@0: $dumper->dump($data); Chris@0: $out = ob_get_clean(); Chris@0: $out = preg_replace('/[ \t]+$/m', '', $out); Chris@0: $var['file'] = htmlspecialchars($var['file'], ENT_QUOTES, 'UTF-8'); Chris@0: $intMax = PHP_INT_MAX; Chris@0: preg_match('/sf-dump-\d+/', $out, $dumpId); Chris@0: $dumpId = $dumpId[0]; Chris@0: $res = (int) $var['res']; Chris@0: Chris@17: $r = \defined('HHVM_VERSION') ? '' : '#%d'; Chris@0: $this->assertStringMatchesFormat( Chris@0: <<array:24 [ Chris@0: "number" => 1 Chris@0: 0 => &1 null Chris@0: "const" => 1.1 Chris@0: 1 => true Chris@0: 2 => false Chris@0: 3 => NAN Chris@0: 4 => INF Chris@0: 5 => -INF Chris@0: 6 => {$intMax} Chris@0: "str" => "d&%s;j&%s;\\n" Chris@0: 7 => b"&%s;\\x00" Chris@0: "[]" => [] Chris@0: "res" => stream resource @{$res} Chris@0: %A wrapper_type: "plainfile" Chris@0: stream_type: "STDIO" Chris@0: mode: "r" Chris@0: unread_bytes: 0 Chris@0: seekable: true Chris@0: %A options: [] Chris@0: } Chris@0: "obj" => DumbFoo {#%d Chris@0: +foo: "foo" Chris@0: +"bar": "bar" Chris@0: } Chris@0: "closure" => Closure {{$r} Chris@0: class: "Symfony\Component\VarDumper\Tests\Dumper\HtmlDumperTest" Chris@0: this: HtmlDumperTest {{$r} &%s;} Chris@0: parameters: { Chris@0: \$a: {} Chris@0: &\$b: { Chris@0: typeHint: "PDO" Chris@0: default: null Chris@0: } Chris@0: } Chris@0: file: "%s%eVarDumper%eTests%eFixtures%edumb-var.php" Chris@0: line: "{$var['line']} to {$var['line']}" Chris@0: } Chris@0: "line" => {$var['line']} Chris@0: "nobj" => array:1 [ Chris@0: 0 => &3 {#%d} Chris@0: ] Chris@0: "recurs" => &4 array:1 [ Chris@0: 0 => &4 array:1 [&4] Chris@0: ] Chris@0: 8 => &1 null Chris@0: "sobj" => DumbFoo {#%d} Chris@0: "snobj" => &3 {#%d} Chris@0: "snobj2" => {#%d} Chris@0: "file" => "{$var['file']}" Chris@0: b"bin-key-&%s;" => "" Chris@0: ] Chris@0: Chris@0: Chris@0: EOTXT Chris@0: , Chris@0: Chris@0: $out Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testCharset() Chris@0: { Chris@0: $var = mb_convert_encoding('Словарь', 'CP1251', 'UTF-8'); Chris@0: Chris@0: $dumper = new HtmlDumper('php://output', 'CP1251'); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@0: $cloner = new VarCloner(); Chris@0: Chris@0: $data = $cloner->cloneVar($var); Chris@0: $out = $dumper->dump($data, true); Chris@0: Chris@0: $this->assertStringMatchesFormat( Chris@0: <<<'EOTXT' Chris@0: b"Словарь" Chris@0: Chris@0: Chris@0: EOTXT Chris@0: , Chris@0: $out Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testAppend() Chris@0: { Chris@0: $out = fopen('php://memory', 'r+b'); Chris@0: Chris@0: $dumper = new HtmlDumper(); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@0: $cloner = new VarCloner(); Chris@0: Chris@0: $dumper->dump($cloner->cloneVar(123), $out); Chris@0: $dumper->dump($cloner->cloneVar(456), $out); Chris@0: Chris@0: $out = stream_get_contents($out, -1, 0); Chris@0: Chris@0: $this->assertSame(<<<'EOTXT' Chris@0: 123 Chris@0: Chris@0: 456 Chris@0: Chris@0: Chris@0: EOTXT Chris@0: , Chris@0: $out Chris@0: ); Chris@0: } Chris@0: }