wordpress-develop/tests/phpunit/tests/image/base.php
Sergey Biryukov 58385f1402 Tests: Skip some image tests if neither GD nor Imagick image editor engines are supported on the system.
The explicit message brings some consistency with other image editor tests, specifically the ones using the `WP_Image_UnitTestCase` class.

Previously, the tests were marked as "risky" in that scenario, due to performing no assertions.

See #50639, #50640.

git-svn-id: https://develop.svn.wordpress.org/trunk@49009 602fd350-edb4-49c9-b593-d223f7449a82
2020-09-20 02:45:35 +00:00

92 lines
2.3 KiB
PHP

<?php
/**
* @group image
*/
abstract class WP_Image_UnitTestCase extends WP_UnitTestCase {
/**
* Set the image editor engine according to the unit test's specification
*/
public function setUp() {
parent::setUp();
if ( ! call_user_func( array( $this->editor_engine, 'test' ) ) ) {
$this->markTestSkipped( sprintf( 'The image editor engine %s is not supported on this system.', $this->editor_engine ) );
}
add_filter( 'wp_image_editors', array( $this, 'setEngine' ), 10, 2 );
}
/**
* Undo the image editor override
*/
public function tearDown() {
remove_filter( 'wp_image_editors', array( $this, 'setEngine' ), 10, 2 );
parent::tearDown();
}
/**
* Override the image editor engine
*
* @return string
*/
public function setEngine( $editors ) {
return array( $this->editor_engine );
}
/**
* Helper assertion for testing alpha on images using GD library
*
* @param string $image_path
* @param array $point array(x,y)
* @param int $alpha
*/
protected function assertImageAlphaAtPointGD( $image_path, $point, $alpha ) {
$im = imagecreatefrompng( $image_path );
$rgb = imagecolorat( $im, $point[0], $point[1] );
$colors = imagecolorsforindex( $im, $rgb );
$this->assertSame( $alpha, $colors['alpha'] );
}
/**
* Helper assertion for testing alpha on images using Imagick
*
* @param string $image_path
* @param array $point array(x,y)
* @param int $expected
*/
protected function assertImageAlphaAtPointImagick( $image_path, $point, $expected ) {
$im = new Imagick( $image_path );
$pixel = $im->getImagePixelColor( $point[0], $point[1] );
$color = $pixel->getColorValue( imagick::COLOR_ALPHA );
$this->assertSame( $expected, $color );
}
/**
* Helper assertion to check actual image dimensions on disk
*
* @param string $filename Image filename.
* @param int $width Width to verify.
* @param int $height Height to verify.
*/
protected function assertImageDimensions( $filename, $width, $height ) {
$detected_width = 0;
$detected_height = 0;
$image_size = getimagesize( $filename );
if ( isset( $image_size[0] ) ) {
$detected_width = $image_size[0];
}
if ( isset( $image_size[1] ) ) {
$detected_height = $image_size[1];
}
$this->assertSame( $width, $detected_width );
$this->assertSame( $height, $detected_height );
}
}