tests: Tests für natürlichen Transformations-Klassen hinzufügen

This commit is contained in:
2022-03-03 13:22:02 +01:00
parent 03d2680305
commit 92cbb1eb46
4 changed files with 485 additions and 0 deletions
@@ -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());
}
}