diff options
Diffstat (limited to 'tests/lib/ImageTest.php')
-rw-r--r-- | tests/lib/ImageTest.php | 278 |
1 files changed, 140 insertions, 138 deletions
diff --git a/tests/lib/ImageTest.php b/tests/lib/ImageTest.php index e6818c7e243..02181fffff9 100644 --- a/tests/lib/ImageTest.php +++ b/tests/lib/ImageTest.php @@ -1,134 +1,136 @@ <?php + /** - * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test; use OC; +use OC\Image; +use OCP\IAppConfig; use OCP\IConfig; class ImageTest extends \Test\TestCase { public static function tearDownAfterClass(): void { - @unlink(OC::$SERVERROOT.'/tests/data/testimage2.png'); - @unlink(OC::$SERVERROOT.'/tests/data/testimage2.jpg'); + @unlink(OC::$SERVERROOT . '/tests/data/testimage2.png'); + @unlink(OC::$SERVERROOT . '/tests/data/testimage2.jpg'); parent::tearDownAfterClass(); } - public function testConstructDestruct() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); - $this->assertInstanceOf('\OC_Image', $img); + public function testConstructDestruct(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); + $this->assertInstanceOf('\OC\Image', $img); $this->assertInstanceOf('\OCP\IImage', $img); unset($img); - $imgcreate = imagecreatefromjpeg(OC::$SERVERROOT.'/tests/data/testimage.jpg'); - $img = new \OC_Image(); + $imgcreate = imagecreatefromjpeg(OC::$SERVERROOT . '/tests/data/testimage.jpg'); + $img = new Image(); $img->setResource($imgcreate); - $this->assertInstanceOf('\OC_Image', $img); + $this->assertInstanceOf('\OC\Image', $img); $this->assertInstanceOf('\OCP\IImage', $img); unset($img); - $base64 = base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')); - $img = new \OC_Image(); + $base64 = base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif')); + $img = new Image(); $img->loadFromBase64($base64); - $this->assertInstanceOf('\OC_Image', $img); + $this->assertInstanceOf('\OC\Image', $img); $this->assertInstanceOf('\OCP\IImage', $img); unset($img); - $img = new \OC_Image(); - $this->assertInstanceOf('\OC_Image', $img); + $img = new Image(); + $this->assertInstanceOf('\OC\Image', $img); $this->assertInstanceOf('\OCP\IImage', $img); unset($img); } - public function testValid() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testValid(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertTrue($img->valid()); - $text = base64_encode("Lorem ipsum dolor sir amet …"); - $img = new \OC_Image(); + $text = base64_encode('Lorem ipsum dolor sir amet …'); + $img = new Image(); $img->loadFromBase64($text); $this->assertFalse($img->valid()); - $img = new \OC_Image(); + $img = new Image(); $this->assertFalse($img->valid()); } - public function testMimeType() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testMimeType(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertEquals('image/png', $img->mimeType()); - $img = new \OC_Image(); + $img = new Image(); $this->assertEquals('', $img->mimeType()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $this->assertEquals('image/jpeg', $img->mimeType()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $this->assertEquals('image/gif', $img->mimeType()); } - public function testWidth() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testWidth(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertEquals(128, $img->width()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $this->assertEquals(1680, $img->width()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $this->assertEquals(64, $img->width()); - $img = new \OC_Image(); + $img = new Image(); $this->assertEquals(-1, $img->width()); } - public function testHeight() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testHeight(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertEquals(128, $img->height()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $this->assertEquals(1050, $img->height()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $this->assertEquals(64, $img->height()); - $img = new \OC_Image(); + $img = new Image(); $this->assertEquals(-1, $img->height()); } - public function testSave() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testSave(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $img->resize(16); - $img->save(OC::$SERVERROOT.'/tests/data/testimage2.png'); - $this->assertEquals(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage2.png'), $img->data()); + $img->save(OC::$SERVERROOT . '/tests/data/testimage2.png'); + $this->assertEquals(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage2.png'), $img->data()); - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.jpg'); + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.jpg'); $img->resize(128); - $img->save(OC::$SERVERROOT.'/tests/data/testimage2.jpg'); - $this->assertEquals(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage2.jpg'), $img->data()); + $img->save(OC::$SERVERROOT . '/tests/data/testimage2.jpg'); + $this->assertEquals(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage2.jpg'), $img->data()); } - public function testData() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); - $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.png')); + public function testData(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); + $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.png')); // Preserve transparency imagealphablending($raw, true); imagesavealpha($raw, true); @@ -137,138 +139,140 @@ class ImageTest extends \Test\TestCase { $expected = ob_get_clean(); $this->assertEquals($expected, $img->data()); + $appConfig = $this->createMock(IAppConfig::class); + $appConfig->expects($this->once()) + ->method('getValueInt') + ->with('preview', 'jpeg_quality', 80) + ->willReturn(80); $config = $this->createMock(IConfig::class); $config->expects($this->once()) - ->method('getAppValue') - ->with('preview', 'jpeg_quality', 90) - ->willReturn(null); - $config->expects($this->once()) ->method('getSystemValueInt') - ->with('preview_max_memory', 128) - ->willReturn(128); - $img = new \OC_Image(null, null, $config); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.jpg'); - $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + ->with('preview_max_memory', 256) + ->willReturn(256); + $img = new Image(null, $appConfig, $config); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.jpg'); + $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); + imageinterlace($raw, true); ob_start(); - imagejpeg($raw); + imagejpeg($raw, null, 80); $expected = ob_get_clean(); $this->assertEquals($expected, $img->data()); - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.gif'); - $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif')); + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.gif'); + $raw = imagecreatefromstring(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif')); ob_start(); imagegif($raw); $expected = ob_get_clean(); $this->assertEquals($expected, $img->data()); } - public function testDataNoResource() { - $img = new \OC_Image(); + public function testDataNoResource(): void { + $img = new Image(); $this->assertNull($img->data()); } /** * @depends testData */ - public function testToString() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testToString(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $expected = base64_encode($img->data()); $this->assertEquals($expected, (string)$img); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $expected = base64_encode($img->data()); $this->assertEquals($expected, (string)$img); - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.gif'); + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.gif'); $expected = base64_encode($img->data()); $this->assertEquals($expected, (string)$img); } - public function testResize() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testResize(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertTrue($img->resize(32)); $this->assertEquals(32, $img->width()); $this->assertEquals(32, $img->height()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $this->assertTrue($img->resize(840)); $this->assertEquals(840, $img->width()); $this->assertEquals(525, $img->height()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $this->assertTrue($img->resize(100)); $this->assertEquals(100, $img->width()); $this->assertEquals(100, $img->height()); } - public function testPreciseResize() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testPreciseResize(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertTrue($img->preciseResize(128, 512)); $this->assertEquals(128, $img->width()); $this->assertEquals(512, $img->height()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $this->assertTrue($img->preciseResize(64, 840)); $this->assertEquals(64, $img->width()); $this->assertEquals(840, $img->height()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $this->assertTrue($img->preciseResize(1000, 1337)); $this->assertEquals(1000, $img->width()); $this->assertEquals(1337, $img->height()); } - public function testCenterCrop() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testCenterCrop(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $img->centerCrop(); $this->assertEquals(128, $img->width()); $this->assertEquals(128, $img->height()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $img->centerCrop(); $this->assertEquals(1050, $img->width()); $this->assertEquals(1050, $img->height()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $img->centerCrop(512); $this->assertEquals(512, $img->width()); $this->assertEquals(512, $img->height()); } - public function testCrop() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + public function testCrop(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $this->assertTrue($img->crop(0, 0, 50, 20)); $this->assertEquals(50, $img->width()); $this->assertEquals(20, $img->height()); - $img = new \OC_Image(); - $img->loadFromData(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); + $img = new Image(); + $img->loadFromData(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.jpg')); $this->assertTrue($img->crop(500, 700, 550, 300)); $this->assertEquals(550, $img->width()); $this->assertEquals(300, $img->height()); - $img = new \OC_Image(); - $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); + $img = new Image(); + $img->loadFromBase64(base64_encode(file_get_contents(OC::$SERVERROOT . '/tests/data/testimage.gif'))); $this->assertTrue($img->crop(10, 10, 15, 15)); $this->assertEquals(15, $img->width()); $this->assertEquals(15, $img->height()); } - public static function sampleProvider() { + public static function sampleProvider(): array { return [ ['testimage.png', [200, 100], [100, 100]], ['testimage.jpg', [840, 840], [840, 525]], @@ -277,21 +281,21 @@ class ImageTest extends \Test\TestCase { } /** - * @dataProvider sampleProvider * * @param string $filename * @param int[] $asked * @param int[] $expected */ - public function testFitIn($filename, $asked, $expected) { - $img = new \OC_Image(); + #[\PHPUnit\Framework\Attributes\DataProvider('sampleProvider')] + public function testFitIn($filename, $asked, $expected): void { + $img = new Image(); $img->loadFromFile(OC::$SERVERROOT . '/tests/data/' . $filename); $this->assertTrue($img->fitIn($asked[0], $asked[1])); $this->assertEquals($expected[0], $img->width()); $this->assertEquals($expected[1], $img->height()); } - public static function sampleFilenamesProvider() { + public static function sampleFilenamesProvider(): array { return [ ['testimage.png'], ['testimage.jpg'], @@ -302,13 +306,13 @@ class ImageTest extends \Test\TestCase { /** * Image should not be resized if it's already smaller than what is required * - * @dataProvider sampleFilenamesProvider * * @param string $filename */ - public function testScaleDownToFitWhenSmallerAlready($filename) { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/' . $filename); + #[\PHPUnit\Framework\Attributes\DataProvider('sampleFilenamesProvider')] + public function testScaleDownToFitWhenSmallerAlready($filename): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/' . $filename); $currentWidth = $img->width(); $currentHeight = $img->height(); // We pick something larger than the image we want to scale down @@ -325,7 +329,7 @@ class ImageTest extends \Test\TestCase { ); } - public static function largeSampleProvider() { + public static function largeSampleProvider(): array { return [ ['testimage.png', [200, 100], [100, 100]], ['testimage.jpg', [840, 840], [840, 525]], @@ -333,22 +337,22 @@ class ImageTest extends \Test\TestCase { } /** - * @dataProvider largeSampleProvider * * @param string $filename * @param int[] $asked * @param int[] $expected */ - public function testScaleDownWhenBigger($filename, $asked, $expected) { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/' . $filename); + #[\PHPUnit\Framework\Attributes\DataProvider('largeSampleProvider')] + public function testScaleDownWhenBigger($filename, $asked, $expected): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/' . $filename); //$this->assertTrue($img->scaleDownToFit($asked[0], $asked[1])); $img->scaleDownToFit($asked[0], $asked[1]); $this->assertEquals($expected[0], $img->width()); $this->assertEquals($expected[1], $img->height()); } - public function convertDataProvider() { + public static function convertDataProvider(): array { return [ [ 'image/gif'], [ 'image/jpeg'], @@ -356,27 +360,25 @@ class ImageTest extends \Test\TestCase { ]; } - /** - * @dataProvider convertDataProvider - */ - public function testConvert($mimeType) { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage.png'); + #[\PHPUnit\Framework\Attributes\DataProvider('convertDataProvider')] + public function testConvert($mimeType): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage.png'); $tempFile = tempnam(sys_get_temp_dir(), 'img-test'); $img->save($tempFile, $mimeType); $this->assertEquals($mimeType, image_type_to_mime_type(exif_imagetype($tempFile))); } - public function testMemoryLimitFromFile() { - $img = new \OC_Image(); - $img->loadFromFile(OC::$SERVERROOT.'/tests/data/testimage-badheader.jpg'); + public function testMemoryLimitFromFile(): void { + $img = new Image(); + $img->loadFromFile(OC::$SERVERROOT . '/tests/data/testimage-badheader.jpg'); $this->assertFalse($img->valid()); } - public function testMemoryLimitFromData() { - $data = file_get_contents(OC::$SERVERROOT.'/tests/data/testimage-badheader.jpg'); - $img = new \OC_Image(); + public function testMemoryLimitFromData(): void { + $data = file_get_contents(OC::$SERVERROOT . '/tests/data/testimage-badheader.jpg'); + $img = new Image(); $img->loadFromData($data); $this->assertFalse($img->valid()); } |