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\Caster; Chris@0: Chris@0: use PHPUnit\Framework\TestCase; Chris@0: use Symfony\Component\VarDumper\Caster\PdoCaster; Chris@0: use Symfony\Component\VarDumper\Cloner\Stub; Chris@0: use Symfony\Component\VarDumper\Test\VarDumperTestTrait; Chris@0: Chris@0: /** Chris@0: * @author Nicolas Grekas Chris@0: */ Chris@0: class PdoCasterTest extends TestCase Chris@0: { Chris@0: use VarDumperTestTrait; Chris@0: Chris@0: /** Chris@0: * @requires extension pdo_sqlite Chris@0: */ Chris@0: public function testCastPdo() Chris@0: { Chris@0: $pdo = new \PDO('sqlite::memory:'); Chris@17: $pdo->setAttribute(\PDO::ATTR_STATEMENT_CLASS, ['PDOStatement', [$pdo]]); Chris@0: Chris@17: $cast = PdoCaster::castPdo($pdo, [], new Stub(), false); Chris@0: Chris@0: $this->assertInstanceOf('Symfony\Component\VarDumper\Caster\EnumStub', $cast["\0~\0attributes"]); Chris@0: Chris@0: $attr = $cast["\0~\0attributes"] = $cast["\0~\0attributes"]->value; Chris@0: $this->assertInstanceOf('Symfony\Component\VarDumper\Caster\ConstStub', $attr['CASE']); Chris@0: $this->assertSame('NATURAL', $attr['CASE']->class); Chris@0: $this->assertSame('BOTH', $attr['DEFAULT_FETCH_MODE']->class); Chris@0: Chris@0: $xDump = <<<'EODUMP' Chris@0: array:2 [ Chris@0: "\x00~\x00inTransaction" => false Chris@0: "\x00~\x00attributes" => array:9 [ Chris@0: "CASE" => NATURAL Chris@0: "ERRMODE" => SILENT Chris@0: "PERSISTENT" => false Chris@0: "DRIVER_NAME" => "sqlite" Chris@0: "ORACLE_NULLS" => NATURAL Chris@0: "CLIENT_VERSION" => "%s" Chris@0: "SERVER_VERSION" => "%s" Chris@0: "STATEMENT_CLASS" => array:%d [ Chris@0: 0 => "PDOStatement"%A Chris@0: ] Chris@0: "DEFAULT_FETCH_MODE" => BOTH Chris@0: ] Chris@0: ] Chris@0: EODUMP; Chris@0: Chris@0: $this->assertDumpMatchesFormat($xDump, $cast); Chris@0: } Chris@0: }