Files
roundcubemail/tests/Framework/ImageTest.php
Michael Voříšek 736795326c Fix plugins composer.json format (#9405)
* Check plugins composer.json using CI

* Add "require-dev" and "config.allow-plugins" to plugins

* fix composer.json format - rm invalid email

* fix composer.json format - fix ext require

* fix composer.json format - fix plugin name

* tmp

* Revert "tmp"

* fix ext in ext install

* disable plugin in plugin install until Roundcube is fully autoloadable

* fix composer.json format - fix non-canonical license name

* Revert "Add "require-dev" and "config.allow-plugins" to plugins"

* no composer install for plugins needed

* Revert "fix ext in ext install"

* add standard "Test" suffix to phpunit files

* rm unneeded "suffix" in phpunit config

* simplify phpunit config

* fix default "xhtml" doctype in unit testing

* fix test_format_date test to not rely on other tests

* even more phpunit config simplify

* stricter/unify phpunit params for E2E tests

* run E2E tests on maximal php version too with lowest deps

* "repositories" in bundled plugins are useless as for root package only

* add/unify missing plugin test
2024-04-05 17:55:46 +02:00

124 lines
3.4 KiB
PHP

<?php
use PHPUnit\Framework\TestCase;
/**
* Test class to test rcube_image class
*/
class Framework_Image extends TestCase
{
/**
* Test props() method
*/
public function test_props()
{
$object = new rcube_image(INSTALL_PATH . 'skins/elastic/thumbnail.png');
if (!function_exists('getimagesize')) {
$this->markTestSkipped();
}
$props = $object->props();
$this->assertSame('png', $props['type']);
$this->assertSame(64, $props['width']);
$this->assertSame(64, $props['height']);
}
/**
* Test resize() method
*/
public function test_resize()
{
$object = new rcube_image(INSTALL_PATH . 'skins/elastic/thumbnail.png');
if (!function_exists('getimagesize')) {
$this->markTestSkipped();
}
$file = rcube_utils::temp_filename('tests');
$this->assertSame('png', $object->resize(32, $file));
$object = new rcube_image($file);
$props = $object->props();
@unlink($file);
$this->assertSame('png', $props['type']);
$this->assertSame(32, $props['width']);
$this->assertSame(32, $props['height']);
}
/**
* Test convert() method
*/
public function test_convert()
{
$object = new rcube_image(INSTALL_PATH . 'skins/elastic/thumbnail.png');
if (!function_exists('getimagesize')) {
$this->markTestSkipped();
}
$file = rcube_utils::temp_filename('tests');
$this->assertTrue($object->convert(rcube_image::TYPE_JPG, $file));
$object = new rcube_image($file);
$props = $object->props();
@unlink($file);
$this->assertSame('jpeg', $props['type']);
$this->assertSame(64, $props['width']);
$this->assertSame(64, $props['height']);
}
/**
* Test is_convertable() method
*/
public function test_convertable()
{
rcube::get_instance()->config->set('im_convert_path', '');
$file = rcube_utils::temp_filename('tests');
$object = new rcube_image($file);
if (class_exists('Imagick', false)) {
$this->assertTrue($object->is_convertable('image/gif'));
$this->assertFalse($object->is_convertable('xxx'));
} elseif (!function_exists('getimagesize')) {
$this->markTestSkipped();
}
if (function_exists('imagecreatefromgif')) {
$this->assertTrue($object->is_convertable('image/gif'));
} else {
$this->assertFalse($object->is_convertable('image/gif'));
}
if (function_exists('imagecreatefromjpeg')) {
$this->assertTrue($object->is_convertable('image/jpg'));
$this->assertTrue($object->is_convertable('image/jpeg'));
} else {
$this->assertFalse($object->is_convertable('image/jpg'));
$this->assertFalse($object->is_convertable('image/jpeg'));
}
if (function_exists('imagecreatefrompng')) {
$this->assertTrue($object->is_convertable('image/png'));
} else {
$this->assertFalse($object->is_convertable('image/png'));
}
if (function_exists('imagecreatefromwebp')) {
$this->assertTrue($object->is_convertable('image/webp'));
} else {
$this->assertFalse($object->is_convertable('image/webp'));
}
$this->assertFalse($object->is_convertable('xxx'));
}
}