Isn’t that a mistake that the label function is missing params and signature.
public function label(): string
{
throw new \BadMethodCallException(sprintf('Implement the %s method', __FUNCTION__));
}
For me it should be
public function label(array $colors): string
{
throw new \BadMethodCallException(sprintf('Implement the %s method', __FUNCTION__));
}
There are no tests cases conflicting with that change, and it’s in my eyes more correct, as a param will always be need for the calculation.