mirror of
https://github.com/ramsey/uuid.git
synced 2026-06-16 16:17:43 +03:00
Add more unit tests for Pecl-based factory
Do not try to install UUID ext in HHVM run
This commit is contained in:
+117
-7
@@ -2,16 +2,126 @@
|
||||
|
||||
namespace Rhumsaa\Uuid;
|
||||
|
||||
use Rhumsaa\Uuid\Provider\Time\SystemTimeProvider;
|
||||
use Rhumsaa\Uuid\Provider\Time\FixedTimeProvider;
|
||||
use Rhumsaa\Uuid\Generator\CombGenerator;
|
||||
|
||||
class PeclUuidTest extends UuidTest
|
||||
class PeclUuidTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
private $mockFactory;
|
||||
|
||||
public static $mockNoExt = false;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
$this->mockFactory = $this->getMock('Rhumsaa\Uuid\UuidFactoryInterface');
|
||||
|
||||
if (! function_exists('\Rhumsaa\Uuid\extension_loaded')) {
|
||||
// Hackish, but allows mocking extension not avail without
|
||||
// breaking the function if tests are loaded accidently in non test env.
|
||||
eval('namespace Rhumsaa\Uuid { function extension_loaded($name) {
|
||||
return ! PeclUuidTest::$mockNoExt;
|
||||
} }');
|
||||
}
|
||||
|
||||
Uuid::setFactory(new PeclUuidFactory($this->mockFactory));
|
||||
}
|
||||
|
||||
public function getUuid1Params()
|
||||
{
|
||||
return [
|
||||
[ true, null ],
|
||||
[ null, true ],
|
||||
[ true, true ]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getUuid1Params
|
||||
*/
|
||||
public function testUuid1WithParametersIsDelegated($node, $clockSeq)
|
||||
{
|
||||
$node = true;
|
||||
$clockSeq = null;
|
||||
|
||||
$this->mockFactory->expects($this->once())
|
||||
->method('uuid1')
|
||||
->with($node, $clockSeq);
|
||||
|
||||
Uuid::uuid1($node, $clockSeq);
|
||||
}
|
||||
|
||||
public function testUuid1WithoutParametersIsNotDelegated()
|
||||
{
|
||||
$this->mockFactory->expects($this->never())
|
||||
->method('uuid1');
|
||||
|
||||
Uuid::uuid1();
|
||||
}
|
||||
|
||||
public function testUuid1WithoutExtensionIsDelegated()
|
||||
{
|
||||
self::$mockNoExt = true;
|
||||
|
||||
Uuid::setFactory(new PeclUuidFactory($this->mockFactory));
|
||||
|
||||
$this->mockFactory->expects($this->once())
|
||||
->method('uuid1');
|
||||
|
||||
Uuid::uuid1();
|
||||
|
||||
self::$mockNoExt = false;
|
||||
}
|
||||
|
||||
public function testUuid1Version()
|
||||
{
|
||||
Uuid::setFactory(new PeclUuidFactory(new UuidFactory()));
|
||||
|
||||
RandomGeneratorFactory::$forceNoOpensslRandomPseudoBytes = false;
|
||||
$uuid = Uuid::uuid1();
|
||||
|
||||
$this->assertEquals(1, $uuid->getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
public function testUuid3IsDelegated()
|
||||
{
|
||||
$this->mockFactory->expects($this->once())
|
||||
->method('uuid3');
|
||||
|
||||
Uuid::uuid3(Uuid::NAMESPACE_DNS, str_replace('\\', '.', __NAMESPACE__));
|
||||
}
|
||||
|
||||
public function testUuid4WithoutExtensionIsDelegated()
|
||||
{
|
||||
self::$mockNoExt = true;
|
||||
|
||||
Uuid::setFactory(new PeclUuidFactory($this->mockFactory));
|
||||
|
||||
$this->mockFactory->expects($this->once())
|
||||
->method('uuid4');
|
||||
|
||||
Uuid::uuid4();
|
||||
|
||||
self::$mockNoExt = false;
|
||||
}
|
||||
|
||||
public function testUuid4WithParametersIsNeverDelegated()
|
||||
{
|
||||
$this->mockFactory->expects($this->never())
|
||||
->method('uuid4');
|
||||
|
||||
Uuid::uuid4();
|
||||
}
|
||||
|
||||
public function testUuid4Version()
|
||||
{
|
||||
Uuid::setFactory(new PeclUuidFactory(new UuidFactory()));
|
||||
|
||||
$uuid = Uuid::uuid4();
|
||||
|
||||
$this->assertEquals(4, $uuid->getVersion());
|
||||
}
|
||||
|
||||
public function testUuid5IsDelegated()
|
||||
{
|
||||
$this->mockFactory->expects($this->once())
|
||||
->method('uuid5');
|
||||
|
||||
Uuid::uuid5(Uuid::NAMESPACE_DNS, str_replace('\\', '.', __NAMESPACE__));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user