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: }