diff --git a/tests/src/Provider/Node/RandomNodeProviderTest.php b/tests/src/Provider/Node/RandomNodeProviderTest.php new file mode 100644 index 0000000..d739d29 --- /dev/null +++ b/tests/src/Provider/Node/RandomNodeProviderTest.php @@ -0,0 +1,62 @@ +skipIfHhvm(); + parent::setUp(); + } + + public function tearDown() + { + parent::tearDown(); + AspectMock::clean(); + } + + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function testGetNodeUsesMtRand() + { + $mtRand = AspectMock::func('Ramsey\Uuid\Provider\Node', 'mt_rand', $this->num); + $provider = new RandomNodeProvider(); + $provider->getNode(); + $mtRand->verifyInvokedMultipleTimes(2, [0, 1 << 24]); + } + + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function testGetNodeFormatsRandomNumbersIntoHexString() + { + AspectMock::func('Ramsey\Uuid\Provider\Node', 'mt_rand', $this->num); + $sprintf = AspectMock::func('Ramsey\Uuid\Provider\Node', 'sprintf', $this->node); + $provider = new RandomNodeProvider(); + $provider->getNode(); + $sprintf->verifyInvoked(['%06x%06x', $this->num, $this->num]); + } + + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function testGetNodeReturnsHexString() + { + AspectMock::func('Ramsey\Uuid\Provider\Node', 'mt_rand', $this->num); + AspectMock::func('Ramsey\Uuid\Provider\Node', 'sprintf', $this->node); + $provider = new RandomNodeProvider(); + $this->assertEquals($this->node, $provider->getNode()); + } +}