|  |  |  | <?php
 | 
					
						
							|  |  |  | namespace yiiunit\extensions\imagine;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use Yii;
 | 
					
						
							|  |  |  | use yii\imagine\Image;
 | 
					
						
							|  |  |  | use Imagine\Image\Point;
 | 
					
						
							|  |  |  | use yiiunit\VendorTestCase;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Yii::setAlias('@yii/imagine', __DIR__ . '/../../../../extensions/yii/imagine');
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | abstract class AbstractImageTest extends VendorTestCase
 | 
					
						
							|  |  |  | {
 | 
					
						
							|  |  |  | 	protected $imageFile;
 | 
					
						
							|  |  |  | 	protected $watermarkFile;
 | 
					
						
							|  |  |  | 	protected $runtimeTextFile;
 | 
					
						
							|  |  |  | 	protected $runtimeWatermarkFile;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	protected function setUp()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$this->imageFile = Yii::getAlias('@yiiunit/data/imagine/large') . '.jpg';
 | 
					
						
							|  |  |  | 		$this->watermarkFile = Yii::getAlias('@yiiunit/data/imagine/xparent') . '.gif';
 | 
					
						
							|  |  |  | 		$this->runtimeTextFile = Yii::getAlias('@yiiunit/runtime/image-text-test') . '.png';
 | 
					
						
							|  |  |  | 		$this->runtimeWatermarkFile = Yii::getAlias('@yiiunit/runtime/image-watermark-test') . '.png';
 | 
					
						
							|  |  |  | 		parent::setUp();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	protected function tearDown()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		@unlink($this->runtimeTextFile);
 | 
					
						
							|  |  |  | 		@unlink($this->runtimeWatermarkFile);
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testText()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		if (!$this->isFontTestSupported()) {
 | 
					
						
							|  |  |  | 			$this->markTestSkipped('Skipping ImageGdTest Gd not installed');
 | 
					
						
							|  |  |  | 		}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$fontFile = Yii::getAlias('@yiiunit/data/imagine/GothamRnd-Light') . '.otf';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$img = Image::text($this->imageFile, 'Yii-2 Image', $fontFile, [0, 0], [
 | 
					
						
							|  |  |  | 			'size' => 12,
 | 
					
						
							|  |  |  | 			'color' => '000'
 | 
					
						
							|  |  |  | 		]);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$img->save($this->runtimeTextFile);
 | 
					
						
							|  |  |  | 		$this->assertTrue(file_exists($this->runtimeTextFile));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testCrop()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$point = [20, 20];
 | 
					
						
							|  |  |  | 		$img = Image::crop($this->imageFile, 100, 100, $point);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->assertEquals(100, $img->getSize()->getWidth());
 | 
					
						
							|  |  |  | 		$this->assertEquals(100, $img->getSize()->getHeight());
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testWatermark()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$img = Image::watermark($this->imageFile, $this->watermarkFile);
 | 
					
						
							|  |  |  | 		$img->save($this->runtimeWatermarkFile);
 | 
					
						
							|  |  |  | 		$this->assertTrue(file_exists($this->runtimeWatermarkFile));
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testFrame()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$frameSize = 5;
 | 
					
						
							|  |  |  | 		$original = Image::getImagine()->open($this->imageFile);
 | 
					
						
							|  |  |  | 		$originalSize = $original->getSize();
 | 
					
						
							|  |  |  | 		$img = Image::frame($this->imageFile, $frameSize, '666', 0);
 | 
					
						
							|  |  |  | 		$size = $img->getSize();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->assertEquals($size->getWidth(), $originalSize->getWidth() + ($frameSize * 2));
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	public function testThumbnail()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		$img = Image::thumbnail($this->imageFile, 120, 120);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$this->assertEquals(120, $img->getSize()->getWidth());
 | 
					
						
							|  |  |  | 		$this->assertEquals(120, $img->getSize()->getHeight());
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @expectedException \yii\base\InvalidConfigException
 | 
					
						
							|  |  |  | 	 */
 | 
					
						
							|  |  |  | 	public function testShouldThrowExceptionOnDriverInvalidArgument()
 | 
					
						
							|  |  |  | 	{
 | 
					
						
							|  |  |  | 		Image::setImagine(null);
 | 
					
						
							|  |  |  | 		Image::$driver = 'fake-driver';
 | 
					
						
							|  |  |  | 		Image::getImagine();
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	abstract protected function isFontTestSupported();
 | 
					
						
							|  |  |  | }
 |