11 Commits
Author SHA1 Message Date
TorstenHettstedt 753cac49c8 Merge pull request 'Entfernung nicht ausgeführten Codes und Dokumentation der Wertebereiche zur besseren Darstellung der möglichen Risiken.' (#2) from tests/weitere-farben into master
Reviewed-on: http://localhost:3000/TorstenHettstedt/PHP-Packages-Colors/pulls/2
2021-03-23 13:10:59 +01:00
Torstem_JetBrain 5e4f1f0bd8 Entfernung nicht ausgeführten Codes und Dokumentation der Wertebereiche zur besseren Darstellung der möglichen Risiken. 2021-03-23 13:05:45 +01:00
TorstenHettstedt 44314b264e Merge pull request 'tests/weitere-farben' (#1) from tests/weitere-farben into master
Reviewed-on: http://localhost:3000/TorstenHettstedt/PHP-Packages-Colors/pulls/1
2021-03-19 20:18:52 +01:00
Torstem_JetBrain 60c10f1d70 Es gab zuviele Stellen nach dem Komma 2021-03-19 20:18:15 +01:00
Torstem_JetBrain b6b366477d Tests um weitere unregelmäßige Farben erweitert. 2021-03-19 20:12:13 +01:00
Torstem_JetBrain 9c65840172 Um graue Farben erweitert. 2021-03-19 18:49:06 +01:00
Torstem_JetBrain a20355ccee Verbesserte Darstellung und Vervollständigung von Information-Seiten. 2021-03-19 17:43:50 +01:00
Torstem_JetBrain 6f17e57424 Einbau von Coverage. 2021-03-18 09:58:02 +01:00
Torstem_JetBrain 6ca23ee2eb Überprüfung des Codes per PHPStorm-Kontrolle ist erfolgreich. 2021-03-18 09:13:00 +01:00
Torstem_JetBrain 99c4e0dcc1 Namespaces der Testklassen war zu unterschiedlich vom Standard-Namespace. 2021-03-18 09:09:46 +01:00
Torstem_JetBrain 83eab10dd7 Die Provider-Klasse gehört in die Test-Helper. 2021-03-18 08:42:34 +01:00
13 changed files with 173 additions and 43 deletions
+3 -1
View File
@@ -13,4 +13,6 @@ Die Klassen haben keinen Alphakanal.
## Hinweise zu den Transformer-Klassen
Das Vorgehen der Umwandlung nimmt die Informationen von [Wikipedia - Liste der Farbräume](https://de.wikipedia.org/wiki/Liste_der_Farbr%C3%A4ume) auf.
Das Vorgehen der Umwandlung nimmt die Informationen von
[Wikipedia - Liste der Farbräume](https://de.wikipedia.org/wiki/Liste_der_Farbr%C3%A4ume)
und [Die Chemie-Schule - HSV-Farbraum](https://www.chemie-schule.de/KnowHow/HSV-Farbraum) auf.
+14
View File
@@ -0,0 +1,14 @@
paths:
tests: tests
output: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
coverage:
enabled: true
include:
- src/*
+5 -3
View File
@@ -16,15 +16,17 @@
},
"autoload-dev": {
"psr-4": {
"TorstenHettstedtUnitTests\\Colors\\" : "tests/unit"
"TorstenHettstedt\\Colors\\Tests\\Unit\\" : "tests/unit",
"TorstenHettstedt\\Colors\\Tests\\Helper\\" : "tests/_support/Helper"
}
},
"require": {
"php": "^8.0"
"php": "^8.0",
"phpunit/php-code-coverage": "^9.2"
},
"require-dev": {
"codeception/codeception": "^4.1.18",
"codeception/module-phpbrowser": "^1.0.0",
"codeception/module-asserts": "^1.0.0"
}
}
}
@@ -74,7 +74,9 @@ class CyanMagentaYellowKeyToHueSaturationValue
protected function buildHueAmount(): float
{
if ($this->maxCmyProperty === 0.0) {
// Wenn beide Werte gleich sind, ist die Endfarbe Grau.
// Damit wird auch in {@sse hueAmount()} eine Division durch Null verhindert.
if ($this->maxCmyProperty === $this->minCmyProperty) {
return 0.0;
}
@@ -91,30 +93,32 @@ class CyanMagentaYellowKeyToHueSaturationValue
*/
private function hueAmount(string $property): float
{
static $amount_share = 2.0;
// Wertebereich: [0.0, 1.0]
$divisor = $this->maxCmyProperty - $this->minCmyProperty;
// Wertebereich: [1.0, 5.0]
$amount = 0.0;
// Wertebereich: [-1.0, +1.0]
$dividend = 0.0;
switch ($property) {
case self::PROPERTY_YELLOW:
$amount = 0; // 0.167
$amount = 1.0; // 0.167
$dividend = $this->cyan - $this->magenta;
break;
case self::PROPERTY_CYAN:
$amount = 1; // 0.500
$amount = 3.0; // 0.500
$dividend = $this->magenta -$this->yellow;
break;
case self::PROPERTY_MAGENTA:
$amount = 2; // 0.833
$amount = 5.0; // 0.833
$dividend = $this->yellow - $this->cyan;
break;
default:
return 0;
}
$start_amount = ($amount * $amount_share) + 1.0;
// Wertebereich: [-1.0, +1.0]
$expansion_amount = $dividend / $divisor;
return ($start_amount + $expansion_amount) / 6.0;
// Wertebereich: [+0.0, +6.0]
return ($amount + $expansion_amount) / 6.0;
}
}
@@ -58,10 +58,6 @@ class RedGreenBlueToHueSaturationValue
while($this->hue < 0.0) {
$this->hue += 1.0;
}
while($this->hue > 1.0) {
$this->hue -= 1.0;
}
}
public function convert(): HueSaturationValue
@@ -76,6 +72,8 @@ class RedGreenBlueToHueSaturationValue
protected function buildHueAmount(): float
{
// Wenn beide Werte gleich sind, ist die Endfarbe Grau.
// Damit wird auch in {@sse hueAmount()} eine Division durch Null verhindert.
if ($this->maxRgbProperty === $this->minRgbProperty) {
return 0.0;
}
@@ -105,30 +103,32 @@ class RedGreenBlueToHueSaturationValue
*/
private function hueAmount(string $property): float
{
static $amount_share = 2.0;
// Wertebereich: [0.0, 1.0]
$divisor = $this->maxRgbProperty - $this->minRgbProperty;
// Wertebereich: [1.0, 5.0]
$amount = 0.0;
// Wertebereich: [-1.0, +1.0]
$dividend = 0.0;
switch ($property) {
case self::PROPERTY_RED:
$amount = 0; // 0.0
$amount = 0.0; // 0.0
$dividend = $this->green - $this->blu;
break;
case self::PROPERTY_GREEN:
$amount = 1; // 0.333
$amount = 2.0; // 0.333
$dividend = $this->blu -$this->red;
break;
case self::PROPERTY_BLUE:
$amount = 2; // 0.999
$amount = 4.0; // 0.999
$dividend = $this->red - $this->green;
break;
default:
return 0;
}
$start_amount = $amount * $amount_share;
// Wertebereich: [-1.0, +1.0]
$expansion_amount = $dividend / $divisor;
return ($start_amount + $expansion_amount) / 6.0;
// Wertebereich: [-1.0, +5.0]
return ($amount + $expansion_amount) / 6.0;
}
}
@@ -1,7 +1,7 @@
<?php
namespace TorstenHettstedtUnitTests\Colors\Transformer;
namespace TorstenHettstedt\Colors\Tests\Helper;
class ValidColorValuesProvider
@@ -30,6 +30,42 @@ class ValidColorValuesProvider
'value' => 1.0,
],
],
'hellgrau' => [
self::CMYK => [
'cyan' => 0.0,
'magenta' => 0.0,
'yellow' => 0.0,
'key' => 2.0 / 3.0,
],
self::RGB => [
'red' => 1.0 / 3.0,
'green' => 1.0 / 3.0,
'blue' => 1.0 / 3.0,
],
self::HSV => [
'hue' => 0.0,
'saturation' => 0.0,
'value' => 1.0 / 3.0,
],
],
'dunkelgrau' => [
self::CMYK => [
'cyan' => 0.0,
'magenta' => 0.0,
'yellow' => 0.0,
'key' => 1.0 / 3.0,
],
self::RGB => [
'red' => 2.0 / 3.0,
'green' => 2.0 / 3.0,
'blue' => 2.0 / 3.0,
],
self::HSV => [
'hue' => 0.0,
'saturation' => 0.0,
'value' => 2.0 / 3.0,
],
],
'schwarz' => [
self::CMYK => [
'cyan' => 0.0,
@@ -156,6 +192,24 @@ class ValidColorValuesProvider
'value' => 1.0,
],
],
'dunkellachs' => [
self::CMYK => [
'cyan' => 0.0,
'magenta' => 0.54,
'yellow' => 0.72,
'key' => 0.30,
],
self::RGB => [
'red' => 0.7,
'green' => 0.3216,
'blue' => 0.1961,
],
self::HSV => [
'hue' => 0.0417,
'saturation' => 0.72,
'value' => 0.70,
],
],
'gold' => [
self::CMYK => [
'cyan' => 0.0,
@@ -174,6 +228,42 @@ class ValidColorValuesProvider
'value' => 0.87,
],
],
'grasgrün' => [
self::CMYK => [
'cyan' => 0.495,
'magenta' => 0.0,
'yellow' => 1.0,
'key' => 0.51,
],
self::RGB => [
'red' => 0.247,
'green' => 0.490,
'blue' => 0.0,
],
self::HSV => [
'hue' => 0.2492,
'saturation' => 1.00,
'value' => 0.49,
],
],
'aquamarin' => [
self::CMYK => [
'cyan' => 0.501,
'magenta' => 0.0,
'yellow' => 0.168,
'key' => 0.00,
],
self::RGB => [
'red' => 0.49804,
'green' => 1.0,
'blue' => 0.83285,
],
self::HSV => [
'hue' => 0.4445,
'saturation' => 0.50196,
'value' => 1.0,
],
],
'violet' => [
self::CMYK => [
'cyan' => 0.191,
@@ -192,6 +282,24 @@ class ValidColorValuesProvider
'value' => 0.71,
],
],
'pflaume' => [
self::CMYK => [
'cyan' => 0.0,
'magenta' => 0.2755,
'yellow' => 0.0,
'key' => 0.1335,
],
self::RGB => [
'red' => 0.8667,
'green' => 0.6274,
'blue' => 0.8667,
],
self::HSV => [
'hue' => 0.83333,
'saturation' => 0.27601,
'value' => 0.86666,
],
],
];
public function getValidColorValues(array $order): array
@@ -1,7 +1,7 @@
<?php /** @noinspection PhpArrayShapeAttributeCanBeAddedInspection */
namespace TorstenHettstedtUnitTests\Colors\ColorModels;
namespace TorstenHettstedt\Colors\Tests\Unit\ColorModels;
use Codeception\Test\Unit;
@@ -1,6 +1,6 @@
<?php
namespace TorstenHettstedtUnitTests\Colors\ColorModels;
namespace TorstenHettstedt\Colors\Tests\Unit\ColorModels;
use InvalidArgumentException;
use TorstenHettstedt\Colors\ColorModels\CyanMagentaYellowKey;
@@ -1,6 +1,6 @@
<?php
namespace TorstenHettstedtUnitTests\Colors\ColorModels;
namespace TorstenHettstedt\Colors\Tests\Unit\ColorModels;
use InvalidArgumentException;
use TorstenHettstedt\Colors\ColorModels\HueSaturationValue;
+2 -2
View File
@@ -1,6 +1,6 @@
<?php /** @noinspection PhpArrayShapeAttributeCanBeAddedInspection */
<?php
namespace TorstenHettstedtUnitTests\Colors\ColorModels;
namespace TorstenHettstedt\Colors\Tests\Unit\ColorModels;
use InvalidArgumentException;
use TorstenHettstedt\Colors\ColorModels\RedGreenBlue;
@@ -1,10 +1,11 @@
<?php /** @noinspection PhpArrayShapeAttributeCanBeAddedInspection */
<?php
namespace TorstenHettstedtUnitTests\Colors\Transformer;
namespace TorstenHettstedt\Colors\Tests\Unit\Transformer;
use Codeception\Test\Unit;
use Exception;
use TorstenHettstedt\Colors\ColorModels\CyanMagentaYellowKey;
use TorstenHettstedt\Colors\Tests\Helper\ValidColorValuesProvider;
use TorstenHettstedt\Colors\Transformer\CyanMagentaYellowKeyTransformer;
class CyanMagentaYellowKeyTransformerTest extends Unit
@@ -1,10 +1,11 @@
<?php /** @noinspection PhpArrayShapeAttributeCanBeAddedInspection */
<?php
namespace TorstenHettstedtUnitTests\Colors\Transformer;
namespace TorstenHettstedt\Colors\Tests\Unit\Transformer;
use Codeception\Test\Unit;
use Exception;
use TorstenHettstedt\Colors\ColorModels\HueSaturationValue;
use TorstenHettstedt\Colors\Tests\Helper\ValidColorValuesProvider;
use TorstenHettstedt\Colors\Transformer\HueSaturationValueTransformer;
class HueSaturationValueTransformerTest extends Unit
@@ -83,14 +84,11 @@ class HueSaturationValueTransformerTest extends Unit
/**
* @param array $hsv
* @param array $cmyk
*
* @throws Exception
*
* @dataProvider validCmykValuesProvider
*
*/
public function testToHueSaturationValue(array $hsv, array $cmyk)
public function testToHueSaturationValue(array $hsv)
{
$this->color = $this->make(HueSaturationValue::class, $hsv);
@@ -1,10 +1,11 @@
<?php /** @noinspection PhpArrayShapeAttributeCanBeAddedInspection */
<?php
namespace TorstenHettstedtUnitTests\Colors\Transformer;
namespace TorstenHettstedt\Colors\Tests\Unit\Transformer;
use Codeception\Test\Unit;
use Exception;
use TorstenHettstedt\Colors\ColorModels\RedGreenBlue;
use TorstenHettstedt\Colors\Tests\Helper\ValidColorValuesProvider;
use TorstenHettstedt\Colors\Transformer\RedGreenBlueTransformer;
class RedGreenBlueTransformerTest extends Unit