diff --git a/tests/_support/Helper/ValidNaturallyColorValuesProvider.php b/tests/_support/Helper/ValidNaturallyColorValuesProvider.php new file mode 100644 index 0000000..8fc9bb6 --- /dev/null +++ b/tests/_support/Helper/ValidNaturallyColorValuesProvider.php @@ -0,0 +1,128 @@ +[]> + */ + 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[]> + */ + 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; + } +} \ No newline at end of file diff --git a/tests/unit/NaturallyTransformer/CyanMagentaYellowKeyTransformerTest.php b/tests/unit/NaturallyTransformer/CyanMagentaYellowKeyTransformerTest.php new file mode 100644 index 0000000..835b1db --- /dev/null +++ b/tests/unit/NaturallyTransformer/CyanMagentaYellowKeyTransformerTest.php @@ -0,0 +1,121 @@ +[]> + */ + public function validRgbValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::CMYK, + ValidNaturallyColorValuesProvider::RGB + ); + } + + /** + * @return array[]> + */ + public function validHsvValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::CMYK, + ValidNaturallyColorValuesProvider::HSV + ); + } + + /** + * @return array[]> + */ + public function validCmykValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::CMYK, + ValidNaturallyColorValuesProvider::CMYK + ); + } + + /** + * @param array $pure_color + * @param array $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 $pure_color + * @param array $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 $pure_color + * @param array $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()); + } +} diff --git a/tests/unit/NaturallyTransformer/HueSaturationValueTransformerTest.php b/tests/unit/NaturallyTransformer/HueSaturationValueTransformerTest.php new file mode 100644 index 0000000..b30a793 --- /dev/null +++ b/tests/unit/NaturallyTransformer/HueSaturationValueTransformerTest.php @@ -0,0 +1,118 @@ +[]> + */ + public function validCmykValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::HSV, + ValidNaturallyColorValuesProvider::CMYK, + ); + } + + /** + * @return array[]> + */ + public function validRgbValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::HSV, + ValidNaturallyColorValuesProvider::RGB, + ); + } + + /** + * @return array[]> + */ + public function validHsvValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::HSV, + ValidNaturallyColorValuesProvider::HSV, + ); + } + + /** + * @param array $pure_color + * @param array $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 $pure_color + * @param array $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 $pure_color + * @param array $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()); + } +} diff --git a/tests/unit/NaturallyTransformer/RedGreenBlueTransformerTest.php b/tests/unit/NaturallyTransformer/RedGreenBlueTransformerTest.php new file mode 100644 index 0000000..15f8e9f --- /dev/null +++ b/tests/unit/NaturallyTransformer/RedGreenBlueTransformerTest.php @@ -0,0 +1,118 @@ +[]> + */ + public function validCmykValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::RGB, + ValidNaturallyColorValuesProvider::CMYK, + ); + } + + /** + * @return array[]> + */ + public function validHsvValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::RGB, + ValidNaturallyColorValuesProvider::HSV, + ); + } + + /** + * @return array[]> + */ + public function validRgbValuesProvider(): array + { + return (new ValidNaturallyColorValuesProvider())->getValidColorValues( + ValidNaturallyColorValuesProvider::RGB, + ValidNaturallyColorValuesProvider::RGB, + ); + } + + /** + * @param array $pure_color + * @param array $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 $pure_color + * @param array $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 $pure_color + * @param array $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()); + } +}