Chris@0: assertTrue(Uuid::isValid($instance->generate()), sprintf('UUID generation for %s works.', get_class($instance))); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests that generated UUIDs are unique. Chris@0: * Chris@0: * @dataProvider providerUuidInstances Chris@0: */ Chris@0: public function testUuidIsUnique(UuidInterface $instance) { Chris@0: $this->assertNotEquals($instance->generate(), $instance->generate(), sprintf('Same UUID was not generated twice with %s.', get_class($instance))); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Dataprovider for UUID instance tests. Chris@0: * Chris@0: * @return array Chris@0: */ Chris@0: public function providerUuidInstances() { Chris@0: Chris@0: $instances = []; Chris@0: $instances[][] = new Php(); Chris@0: Chris@0: // If valid PECL extensions exists add to list. Chris@0: if (function_exists('uuid_create') && !function_exists('uuid_make')) { Chris@0: $instances[][] = new Pecl(); Chris@0: } Chris@0: Chris@0: // If we are on Windows add the com implementation as well. Chris@0: if (function_exists('com_create_guid')) { Chris@0: $instances[][] = new Com(); Chris@0: } Chris@0: Chris@0: return $instances; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests UUID validation. Chris@0: * Chris@0: * @param string $uuid Chris@0: * The uuid to check against. Chris@0: * @param bool $is_valid Chris@0: * Whether the uuid is valid or not. Chris@0: * @param string $message Chris@0: * The message to display on failure. Chris@0: * Chris@0: * @dataProvider providerTestValidation Chris@0: */ Chris@0: public function testValidation($uuid, $is_valid, $message) { Chris@0: $this->assertSame($is_valid, Uuid::isValid($uuid), $message); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Dataprovider for UUID instance tests. Chris@0: * Chris@0: * @return array Chris@0: * An array of arrays containing Chris@0: * - The Uuid to check against. Chris@0: * - (bool) Whether or not the Uuid is valid. Chris@0: * - Failure message. Chris@0: */ Chris@0: public function providerTestValidation() { Chris@0: return [ Chris@0: // These valid UUIDs. Chris@0: ['6ba7b810-9dad-11d1-80b4-00c04fd430c8', TRUE, 'Basic FQDN UUID did not validate'], Chris@0: ['00000000-0000-0000-0000-000000000000', TRUE, 'Minimum UUID did not validate'], Chris@0: ['ffffffff-ffff-ffff-ffff-ffffffffffff', TRUE, 'Maximum UUID did not validate'], Chris@0: // These are invalid UUIDs. Chris@0: ['0ab26e6b-f074-4e44-9da-601205fa0e976', FALSE, 'Invalid format was validated'], Chris@0: ['0ab26e6b-f074-4e44-9daf-1205fa0e9761f', FALSE, 'Invalid length was validated'], Chris@0: ]; Chris@0: } Chris@0: Chris@0: }