feature/natuerliche-tranformation #9
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace TorstenHettstedt\Colors\Tests\Helper;
|
||||
|
||||
|
||||
class ValidNaturallyColorValuesProvider
|
||||
{
|
||||
|
||||
const CMYK = 'cmyk';
|
||||
const RGB = 'rgb';
|
||||
const HSV = 'hsv';
|
||||
|
||||
/**
|
||||
* @var array<string, array<string, float>[]>
|
||||
*/
|
||||
protected array $definitions = [
|
||||
'weiß' => [
|
||||
self::CMYK => [
|
||||
'cyan' => 0,
|
||||
'magenta' => 0,
|
||||
'yellow' => 0,
|
||||
'key' => 0,
|
||||
],
|
||||
self::RGB => [
|
||||
'red' => 0xFF,
|
||||
'green' => 0xFF,
|
||||
'blue' => 0xFF,
|
||||
],
|
||||
self::HSV => [
|
||||
'hue' => 0,
|
||||
'saturation' => 0,
|
||||
'value' => 100,
|
||||
],
|
||||
],
|
||||
'hellgrau' => [
|
||||
self::CMYK => [
|
||||
'cyan' => 0,
|
||||
'magenta' => 0,
|
||||
'yellow' => 0,
|
||||
'key' => 67,
|
||||
],
|
||||
self::RGB => [
|
||||
'red' => 0x55,
|
||||
'green' => 0x55,
|
||||
'blue' => 0x55,
|
||||
],
|
||||
self::HSV => [
|
||||
'hue' => 0,
|
||||
'saturation' => 0,
|
||||
'value' => 33,
|
||||
],
|
||||
],
|
||||
'dunkelgrau' => [
|
||||
self::CMYK => [
|
||||
'cyan' => 0,
|
||||
'magenta' => 0,
|
||||
'yellow' => 0,
|
||||
'key' => 33,
|
||||
],
|
||||
self::RGB => [
|
||||
'red' => 0xAA,
|
||||
'green' => 0xAA,
|
||||
'blue' => 0xAA,
|
||||
],
|
||||
self::HSV => [
|
||||
'hue' => 0,
|
||||
'saturation' => 0,
|
||||
'value' => 67,
|
||||
],
|
||||
],
|
||||
'schwarz' => [
|
||||
self::CMYK => [
|
||||
'cyan' => 0,
|
||||
'magenta' => 0,
|
||||
'yellow' => 0,
|
||||
'key' => 100,
|
||||
],
|
||||
self::RGB => [
|
||||
'red' => 0,
|
||||
'green' => 0,
|
||||
'blue' => 0,
|
||||
],
|
||||
self::HSV => [
|
||||
'hue' => 0,
|
||||
'saturation' => 0,
|
||||
'value' => 0,
|
||||
],
|
||||
],
|
||||
'aquamarin' => [
|
||||
self::CMYK => [
|
||||
'cyan' => 50,
|
||||
'magenta' => 0,
|
||||
'yellow' => 17,
|
||||
'key' => 0,
|
||||
],
|
||||
self::RGB => [
|
||||
'red' => 0x7F,
|
||||
'green' => 0xFF,
|
||||
'blue' => 0xD4,
|
||||
],
|
||||
self::HSV => [
|
||||
'hue' => 160,
|
||||
'saturation' => 50,
|
||||
'value' => 100,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* @param string $pure_color
|
||||
* @param string $test_color
|
||||
*
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function getValidColorValues(string $pure_color, string $test_color): array
|
||||
{
|
||||
$values = [];
|
||||
$pure_values = (new ValidColorValuesProvider())->getValidColorValues([$pure_color]);
|
||||
foreach ($this->definitions as $color => $definition) {
|
||||
$values[$color] = [
|
||||
$pure_values[$color][0],
|
||||
$definition[$test_color]
|
||||
];
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
namespace TorstenHettstedt\Colors\Tests\Unit\NaturallyTransformer;
|
||||
|
||||
use Codeception\Test\Unit;
|
||||
use Exception;
|
||||
use TorstenHettstedt\Colors\NaturallyColorModels\CyanMagentaYellowKey;
|
||||
use TorstenHettstedt\Colors\Tests\Helper\ValidNaturallyColorValuesProvider;
|
||||
use TorstenHettstedt\Colors\NaturallyTransformer\CyanMagentaYellowKeyTransformer;
|
||||
|
||||
class CyanMagentaYellowKeyTransformerTest extends Unit
|
||||
{
|
||||
|
||||
protected CyanMagentaYellowKey $color;
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validRgbValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::CMYK,
|
||||
ValidNaturallyColorValuesProvider::RGB
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validHsvValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::CMYK,
|
||||
ValidNaturallyColorValuesProvider::HSV
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validCmykValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::CMYK,
|
||||
ValidNaturallyColorValuesProvider::CMYK
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $rgb
|
||||
*
|
||||
* @dataProvider validRgbValuesProvider
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function testToRedGreenBlue(array $pure_color, array $rgb): void
|
||||
{
|
||||
$this->color = $this->make(CyanMagentaYellowKey::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\CyanMagentaYellowKey::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new CyanMagentaYellowKeyTransformer($this->color);
|
||||
|
||||
$color = $transformer->toRedGreenBlue();
|
||||
|
||||
$this->assertEquals($rgb['red'], $color->getRed());
|
||||
$this->assertEquals($rgb['green'], $color->getGreen());
|
||||
$this->assertEquals($rgb['blue'], $color->getBlue());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $cmyk
|
||||
*
|
||||
* @dataProvider validCmykValuesProvider
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function testToCyanMagentaYellowKey(array $pure_color, array $cmyk): void
|
||||
{
|
||||
|
||||
$this->color = $this->make(CyanMagentaYellowKey::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\CyanMagentaYellowKey::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new CyanMagentaYellowKeyTransformer($this->color);
|
||||
|
||||
$color = $transformer->toCyanMagentaYellowKey();
|
||||
|
||||
$this->assertEquals($cmyk['cyan'], $color->getCyan());
|
||||
$this->assertEquals($cmyk['magenta'], $color->getMagenta());
|
||||
$this->assertEquals($cmyk['yellow'], $color->getYellow());
|
||||
$this->assertEquals($cmyk['key'], $color->getKey());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $hsv
|
||||
*
|
||||
* @throws Exception
|
||||
*
|
||||
* @dataProvider validHsvValuesProvider
|
||||
*
|
||||
*/
|
||||
public function testToHueSaturationValue(array $pure_color, array $hsv): void
|
||||
{
|
||||
$this->color = $this->make(CyanMagentaYellowKey::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\CyanMagentaYellowKey::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new CyanMagentaYellowKeyTransformer($this->color);
|
||||
|
||||
$color = $transformer->toHueSaturationValue();
|
||||
|
||||
$this->assertEquals($hsv['hue'], $color->getHue());
|
||||
$this->assertEquals($hsv['saturation'], $color->getSaturation());
|
||||
$this->assertEquals($hsv['value'], $color->getValue());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
namespace TorstenHettstedt\Colors\Tests\Unit\NaturallyTransformer;
|
||||
|
||||
use Codeception\Test\Unit;
|
||||
use Exception;
|
||||
use TorstenHettstedt\Colors\NaturallyColorModels\HueSaturationValue;
|
||||
use TorstenHettstedt\Colors\Tests\Helper\ValidNaturallyColorValuesProvider;
|
||||
use TorstenHettstedt\Colors\NaturallyTransformer\HueSaturationValueTransformer;
|
||||
|
||||
class HueSaturationValueTransformerTest extends Unit
|
||||
{
|
||||
|
||||
protected HueSaturationValue $color;
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validCmykValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::HSV,
|
||||
ValidNaturallyColorValuesProvider::CMYK,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validRgbValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::HSV,
|
||||
ValidNaturallyColorValuesProvider::RGB,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validHsvValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::HSV,
|
||||
ValidNaturallyColorValuesProvider::HSV,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $rgb
|
||||
*
|
||||
* @dataProvider validRgbValuesProvider
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function testToRedGreenBlue(array $pure_color, array $rgb): void
|
||||
{
|
||||
$this->color = $this->make(HueSaturationValue::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\HueSaturationValue::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new HueSaturationValueTransformer($this->color);
|
||||
|
||||
$color = $transformer->toRedGreenBlue();
|
||||
|
||||
$this->assertEquals($rgb['red'], $color->getRed());
|
||||
$this->assertEquals($rgb['green'], $color->getGreen());
|
||||
$this->assertEquals($rgb['blue'], $color->getBlue());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $cmyk
|
||||
*
|
||||
* @throws Exception
|
||||
* @dataProvider validCmykValuesProvider
|
||||
*
|
||||
*/
|
||||
public function testToCyanMagentaYellowKey(array $pure_color, array $cmyk): void
|
||||
{
|
||||
$this->color = $this->make(HueSaturationValue::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\HueSaturationValue::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new HueSaturationValueTransformer($this->color);
|
||||
|
||||
$color = $transformer->toCyanMagentaYellowKey();
|
||||
|
||||
$this->assertEquals($cmyk['cyan'], $color->getCyan());
|
||||
$this->assertEquals($cmyk['magenta'], $color->getMagenta());
|
||||
$this->assertEquals($cmyk['yellow'], $color->getYellow());
|
||||
$this->assertEquals($cmyk['key'], $color->getKey());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $hsv
|
||||
*
|
||||
* @throws Exception
|
||||
* @dataProvider validHsvValuesProvider
|
||||
*/
|
||||
public function testToHueSaturationValue(array $pure_color, array $hsv): void
|
||||
{
|
||||
$this->color = $this->make(HueSaturationValue::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\HueSaturationValue::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new HueSaturationValueTransformer($this->color);
|
||||
|
||||
$color = $transformer->toHueSaturationValue();
|
||||
|
||||
$this->assertEquals($hsv['hue'], $color->getHue());
|
||||
$this->assertEquals($hsv['saturation'], $color->getSaturation());
|
||||
$this->assertEquals($hsv['value'], $color->getValue());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
namespace TorstenHettstedt\Colors\Tests\Unit\NaturallyTransformer;
|
||||
|
||||
use Codeception\Test\Unit;
|
||||
use Exception;
|
||||
use TorstenHettstedt\Colors\NaturallyColorModels\RedGreenBlue;
|
||||
use TorstenHettstedt\Colors\Tests\Helper\ValidNaturallyColorValuesProvider;
|
||||
use TorstenHettstedt\Colors\NaturallyTransformer\RedGreenBlueTransformer;
|
||||
|
||||
class RedGreenBlueTransformerTest extends Unit
|
||||
{
|
||||
|
||||
protected RedGreenBlue $color;
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validCmykValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::RGB,
|
||||
ValidNaturallyColorValuesProvider::CMYK,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validHsvValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::RGB,
|
||||
ValidNaturallyColorValuesProvider::HSV,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, array<string, float>[]>
|
||||
*/
|
||||
public function validRgbValuesProvider(): array
|
||||
{
|
||||
return (new ValidNaturallyColorValuesProvider())->getValidColorValues(
|
||||
ValidNaturallyColorValuesProvider::RGB,
|
||||
ValidNaturallyColorValuesProvider::RGB,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $rgb
|
||||
*
|
||||
* @dataProvider validRgbValuesProvider
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function testToRedGreenBlue(array $pure_color, array $rgb): void
|
||||
{
|
||||
$this->color = $this->make(RedGreenBlue::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\RedGreenBlue::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new RedGreenBlueTransformer($this->color);
|
||||
|
||||
$color = $transformer->toRedGreenBlue();
|
||||
|
||||
$this->assertEquals($rgb['red'], $color->getRed());
|
||||
$this->assertEquals($rgb['green'], $color->getGreen());
|
||||
$this->assertEquals($rgb['blue'], $color->getBlue());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $cmyk
|
||||
*
|
||||
* @throws Exception
|
||||
* @dataProvider validCmykValuesProvider
|
||||
*
|
||||
*/
|
||||
public function testToCyanMagentaYellowKey(array $pure_color, array $cmyk): void
|
||||
{
|
||||
$this->color = $this->make(RedGreenBlue::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\RedGreenBlue::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new RedGreenBlueTransformer($this->color);
|
||||
|
||||
$color = $transformer->toCyanMagentaYellowKey();
|
||||
|
||||
$this->assertEquals($cmyk['cyan'], $color->getCyan());
|
||||
$this->assertEquals($cmyk['magenta'], $color->getMagenta());
|
||||
$this->assertEquals($cmyk['yellow'], $color->getYellow());
|
||||
$this->assertEquals($cmyk['key'], $color->getKey());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, float> $pure_color
|
||||
* @param array<string, float> $hsv
|
||||
*
|
||||
* @throws Exception
|
||||
* @dataProvider validHsvValuesProvider
|
||||
*/
|
||||
public function testToHueSaturationValue(array $pure_color, array $hsv): void
|
||||
{
|
||||
$this->color = $this->make(RedGreenBlue::class, [
|
||||
'getPureColor' => $this->make(\TorstenHettstedt\Colors\ColorModels\RedGreenBlue::class, $pure_color)
|
||||
]);
|
||||
|
||||
$transformer = new RedGreenBlueTransformer($this->color);
|
||||
|
||||
$color = $transformer->toHueSaturationValue();
|
||||
|
||||
$this->assertEquals($hsv['hue'], $color->getHue());
|
||||
$this->assertEquals($hsv['saturation'], $color->getSaturation());
|
||||
$this->assertEquals($hsv['value'], $color->getValue());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user