1 color.test | ColorTest::testHexToRgb() |
Tests Color::hexToRgb().
File
- core/
modules/ simpletest/ tests/ color.test, line 12 - Tests color conversion functions.
Class
- ColorTest
- @file
Code
function testHexToRgb() {
// Any invalid arguments should throw an exception.
$values = array('', '-1', '1', '12', '12345', '1234567', '123456789', '123456789a', 'foo');
// Duplicate all invalid value tests with additional '#' prefix.
// The '#' prefix inherently turns the data type into a string.
foreach ($values as $value) {
$values[] = '#' . $value;
}
// Add invalid data types (hex value must be a string).
$values = array_merge($values, array(
1, 12, 1234, 12345, 123456, 1234567, 12345678, 123456789, 123456789,
-1, PHP_INT_MAX, PHP_INT_MAX + 1, -PHP_INT_MAX,
0x0, 0x010,
));
foreach ($values as $test) {
$this->assertFalse(Color::validateHex($test), var_export($test, TRUE) . ' is invalid.');
try {
Color::hexToRgb($test);
$this->fail('Color::hexToRgb(' . var_export($test, TRUE) . ') did not throw an exception.');
}
catch (\InvalidArgumentException $e) {
$this->pass('Color::hexToRgb(' . var_export($test, TRUE) . ') threw an exception.');
}
}
// PHP automatically casts a numeric array key into an integer.
// Since hex values may consist of 0-9 only, they need to be defined as
// array values.
$tests = array(
// Shorthands without alpha.
array('hex' => '#000', 'rgb' => array('red' => 0, 'green' => 0, 'blue' => 0)),
array('hex' => '#fff', 'rgb' => array('red' => 255, 'green' => 255, 'blue' => 255)),
array('hex' => '#abc', 'rgb' => array('red' => 170, 'green' => 187, 'blue' => 204)),
array('hex' => 'cba', 'rgb' => array('red' => 204, 'green' => 187, 'blue' => 170)),
// Full without alpha.
array('hex' => '#000000', 'rgb' => array('red' => 0, 'green' => 0, 'blue' => 0)),
array('hex' => '#ffffff', 'rgb' => array('red' => 255, 'green' => 255, 'blue' => 255)),
array('hex' => '#010203', 'rgb' => array('red' => 1, 'green' => 2, 'blue' => 3)),
);
foreach ($tests as $test) {
$result = Color::hexToRgb($test['hex']);
$this->assertIdentical($result, $test['rgb']);
}
}