Commit 1bba751b authored by Jan Kramer's avatar Jan Kramer

Added test for SQLite GUID implementation

parent 315be84f
<?php
namespace Doctrine\Tests\DBAL\Functional\Ticket;
/**
* @group DBAL-421
*/
class DBAL421Test extends \Doctrine\Tests\DbalFunctionalTestCase
{
protected function setUp()
{
parent::setUp();
$platform = $this->_conn->getDatabasePlatform()->getName();
if (!in_array($platform, array('mysql', 'sqlite'))) {
$this->markTestSkipped('Currently restricted to MySQL and SQLite.');
}
}
public function testGuidShouldMatchPattern()
{
$guid = $this->_conn->query($this->getSelectGuidSql())->fetchColumn();
$pattern = '/[0-9A-F]{8}\-[0-9A-F]{4}\-[0-9A-F]{4}\-[8-9A-B][0-9A-F]{3}\-[0-9A-F]{12}/i';
$this->assertEquals(1, preg_match($pattern, $guid), "GUID does not match pattern");
}
/**
* This test does (of course) not proof that all generated GUIDs are
* random, it should however provide some basic confidence.
*/
public function testGuidShouldBeRandom()
{
$statement = $this->_conn->prepare($this->getSelectGuidSql());
$guids = array();
for ($i = 0; $i < 99; $i++)
{
$statement->execute();
$guid = $statement->fetchColumn();
$this->assertNotContains($guid, $guids, "Duplicate GUID detected");
$guids[] = $guid;
}
}
private function getSelectGuidSql()
{
return "SELECT " . $this->_conn->getDatabasePlatform()->getGuidExpression();
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment