parent
23f364d2cf
commit
fdaf5ad73f
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,48 @@ |
||||
<?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(); |
||||
} |
||||
} |
Loading…
Reference in new issue