You are here

public function ColorTest::providerTestHexToRgb in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Component/Utility/ColorTest.php \Drupal\Tests\Component\Utility\ColorTest::providerTestHexToRgb()

Data provider for testHexToRgb().

Return value

array An array of arrays containing:

  • The hex color value.
  • The rgb color array value.
  • (optional) Boolean indicating invalid status. Defaults to FALSE.

See also

testHexToRgb()

File

core/tests/Drupal/Tests/Component/Utility/ColorTest.php, line 99

Class

ColorTest
Tests Color utility class conversions.

Namespace

Drupal\Tests\Component\Utility

Code

public function providerTestHexToRgb() {
  $invalid = [];

  // Any invalid arguments should throw an exception.
  foreach ([
    '',
    '-1',
    '1',
    '12',
    '12345',
    '1234567',
    '123456789',
    '123456789a',
    'foo',
  ] as $value) {
    $invalid[] = [
      $value,
      '',
      TRUE,
    ];
  }

  // Duplicate all invalid value tests with additional '#' prefix.
  // The '#' prefix inherently turns the data type into a string.
  foreach ($invalid as $value) {
    $invalid[] = [
      '#' . $value[0],
      '',
      TRUE,
    ];
  }

  // Add invalid data types (hex value must be a string).
  foreach ([
    1,
    12,
    1234,
    12345,
    123456,
    1234567,
    12345678,
    123456789,
    123456789,
    -1,
    PHP_INT_MAX,
    PHP_INT_MAX + 1,
    -PHP_INT_MAX,
    0x0,
    0x10,
  ] as $value) {
    $invalid[] = [
      $value,
      '',
      TRUE,
    ];
  }

  // And some valid values.
  $valid = [
    // Shorthands without alpha.
    [
      'hex' => '#000',
      'rgb' => [
        'red' => 0,
        'green' => 0,
        'blue' => 0,
      ],
    ],
    [
      'hex' => '#fff',
      'rgb' => [
        'red' => 255,
        'green' => 255,
        'blue' => 255,
      ],
    ],
    [
      'hex' => '#abc',
      'rgb' => [
        'red' => 170,
        'green' => 187,
        'blue' => 204,
      ],
    ],
    [
      'hex' => 'cba',
      'rgb' => [
        'red' => 204,
        'green' => 187,
        'blue' => 170,
      ],
    ],
    // Full without alpha.
    [
      'hex' => '#000000',
      'rgb' => [
        'red' => 0,
        'green' => 0,
        'blue' => 0,
      ],
    ],
    [
      'hex' => '#ffffff',
      'rgb' => [
        'red' => 255,
        'green' => 255,
        'blue' => 255,
      ],
    ],
    [
      'hex' => '#010203',
      'rgb' => [
        'red' => 1,
        'green' => 2,
        'blue' => 3,
      ],
    ],
  ];
  return array_merge($invalid, $valid);
}