HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.30
System: Linux iZj6c1151k3ad370bosnmsZ 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64
User: root (0)
PHP: 7.4.30
Disabled: NONE
Upload Files
File: //usr/share/tests/pecl/imagick/tests/024-ispixelsimilar.phpt
--TEST--
Test ImagickPixel::isPixelSimilar
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc');

--FILE--
<?php

$root3 = 1.732050807568877;

$tests = array(
	array ('rgb(245, 0, 0)',     'rgb(255, 0, 0)',        9 / $root3, false,),
	array ('rgb(245, 0, 0)',     'rgb(255, 0, 0)',       10 / $root3, true,),
	array ('rgb(0, 0, 0)',       'rgb(7, 7, 0)',          9 / $root3, false,),
	array ('rgb(0, 0, 0)',       'rgb(7, 7, 0)',         10 / $root3, true,),
	array ('rgba(0, 0, 0, 1)',   'rgba(7, 7, 0, 1)',      9 / $root3, false,),
	array ('rgba(0, 0, 0, 1)',   'rgba(7, 7, 0, 1)',     10 / $root3, true,),
	array ('rgb(128, 128, 128)', 'rgb(128, 128, 120)',    7 / $root3, false,),
	array ('rgb(128, 128, 128)', 'rgb(128, 128, 120)',    8 / $root3, true,),

	array ('rgb(0, 0, 0)',       'rgb(255, 255, 255)',  254.9,        false,),
	array ('rgb(0, 0, 0)',       'rgb(255, 255, 255)',    255,        true,),
	array ('rgb(255, 0, 0)',     'rgb(0, 255, 255)',    254.9,        false,),
	array ('rgb(255, 0, 0)',     'rgb(0, 255, 255)',      255,        true,),
	array ('black',              'rgba(0, 0, 0)',         0.0,        true),
	array ('black',              'rgba(10, 0, 0, 1.0)',  10.0 / $root3, true),
);

try {
	foreach ($tests as $testInfo) {
		$color1 = $testInfo[0];
		$color2 = $testInfo[1];
		$distance = $testInfo[2];
		$expectation = $testInfo[3];
		$testDistance = ($distance / 255.0);

		$color1Pixel = new ImagickPixel($color1);
		$color2Pixel = new ImagickPixel($color2);

		$isSimilar = $color1Pixel->isPixelSimilarQuantum($color2Pixel, $testDistance * \Imagick::getquantum());
		if ($isSimilar !== $expectation) {
			echo "isSimilar failed. Color [$color1] compared to color [$color2] distance $testDistance doesn't meet expected result [$expectation].". PHP_EOL;
		}

		$isPixelSimilar = $color1Pixel->isPixelSimilar($color2Pixel, $testDistance);
		if ($isPixelSimilar !== $expectation) {
			echo "isPixelSimilar failed. Color [$color1] compared to color [$color2] distance $testDistance doesn't meet expected result [$expectation].". PHP_EOL;
		}
	}
	echo "success";
} catch (\Exception $e) {
	echo "Exception caught in ImagickPixel::isPixelSimilar test: ".$e->getMessage() . PHP_EOL;
}

?>
--EXPECT--
success