Mercurial > hg > cmmr2012-drupal-site
diff core/tests/Drupal/Tests/Component/Uuid/UuidTest.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/Tests/Component/Uuid/UuidTest.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,97 @@ +<?php + +namespace Drupal\Tests\Component\Uuid; + +use Drupal\Component\Uuid\Uuid; +use Drupal\Component\Uuid\UuidInterface; +use Drupal\Component\Uuid\Com; +use Drupal\Component\Uuid\Pecl; +use Drupal\Component\Uuid\Php; +use PHPUnit\Framework\TestCase; + +/** + * Tests the handling of Universally Unique Identifiers (UUIDs). + * + * @group Uuid + */ +class UuidTest extends TestCase { + + /** + * Tests generating valid UUIDs. + * + * @dataProvider providerUuidInstances + */ + public function testGenerateUuid(UuidInterface $instance) { + $this->assertTrue(Uuid::isValid($instance->generate()), sprintf('UUID generation for %s works.', get_class($instance))); + } + + /** + * Tests that generated UUIDs are unique. + * + * @dataProvider providerUuidInstances + */ + public function testUuidIsUnique(UuidInterface $instance) { + $this->assertNotEquals($instance->generate(), $instance->generate(), sprintf('Same UUID was not generated twice with %s.', get_class($instance))); + } + + /** + * Dataprovider for UUID instance tests. + * + * @return array + */ + public function providerUuidInstances() { + + $instances = []; + $instances[][] = new Php(); + + // If valid PECL extensions exists add to list. + if (function_exists('uuid_create') && !function_exists('uuid_make')) { + $instances[][] = new Pecl(); + } + + // If we are on Windows add the com implementation as well. + if (function_exists('com_create_guid')) { + $instances[][] = new Com(); + } + + return $instances; + } + + /** + * Tests UUID validation. + * + * @param string $uuid + * The uuid to check against. + * @param bool $is_valid + * Whether the uuid is valid or not. + * @param string $message + * The message to display on failure. + * + * @dataProvider providerTestValidation + */ + public function testValidation($uuid, $is_valid, $message) { + $this->assertSame($is_valid, Uuid::isValid($uuid), $message); + } + + /** + * Dataprovider for UUID instance tests. + * + * @return array + * An array of arrays containing + * - The Uuid to check against. + * - (bool) Whether or not the Uuid is valid. + * - Failure message. + */ + public function providerTestValidation() { + return [ + // These valid UUIDs. + ['6ba7b810-9dad-11d1-80b4-00c04fd430c8', TRUE, 'Basic FQDN UUID did not validate'], + ['00000000-0000-0000-0000-000000000000', TRUE, 'Minimum UUID did not validate'], + ['ffffffff-ffff-ffff-ffff-ffffffffffff', TRUE, 'Maximum UUID did not validate'], + // These are invalid UUIDs. + ['0ab26e6b-f074-4e44-9da-601205fa0e976', FALSE, 'Invalid format was validated'], + ['0ab26e6b-f074-4e44-9daf-1205fa0e9761f', FALSE, 'Invalid length was validated'], + ]; + } + +}