审查视图

vendor/endroid/qr-code/tests/QrCodeTest.php 2.9 KB
郭盛 authored
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
<?php

/*
 * (c) Jeroen van den Enden <info@endroid.nl>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

namespace Endroid\Tests\QrCode;

use Endroid\QrCode\Exceptions\ImageFunctionFailedException;
use Endroid\QrCode\Exceptions\ImageFunctionUnknownException;
use Endroid\QrCode\QrCode;
use PHPUnit_Framework_TestCase;

class QrCodeTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var QrCode
     */
    protected $qrCode;

    /**
     * Tests if a valid data uri is returned.
     */
    public function testGetDataUri()
    {
        $qrCode = $this->getQrCode();
        $dataUri = $qrCode->getDataUri();

        $this->assertTrue(is_string($dataUri));
    }

    /**
     * Tests if a valid image string is returned.
     *
     * @throws ImageFunctionFailedException
     * @throws ImageFunctionUnknownException
     */
    public function testGetImageString()
    {
        $qrCode = $this->getQrCode();
        $imageString = $qrCode->get('png');

        $this->assertTrue(is_string($imageString));
    }

    /**
     * Tests if a valid image string is returned.
     *
     * @throws ImageFunctionFailedException
     * @throws ImageFunctionUnknownException
     */
    public function testGetQrCodeWithLogoString()
    {
        $qrCode = $this->createQrCodeWithLogo();
        $imageString = $qrCode->get('png');

        $this->assertTrue(is_string($imageString));
    }

    /**
     * For https://github.com/endroid/QrCode/issues/49.
     */
    public function testRenderHttpAddress()
    {
        $qrCode = new QrCode();
        $qrCode
            ->setText('http://www.example.com/it/it/contact/qr/hit/id/1  ')
            ->setExtension('png')
            ->setSize(300)
            ->setPadding(10)
            ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0])
            ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
            ->setErrorCorrection(QrCode::LEVEL_MEDIUM);

        $qrCode->get('png');
    }

    /**
     * Returns a QR code.
     */
    protected function getQrCode()
    {
        if (!$this->qrCode) {
            $this->qrCode = $this->createQrCode();
        }

        return $this->qrCode;
    }

    /**
     * Creates a QR code.
     *
     * @return QrCode
     */
    protected function createQrCode()
    {
        $qrCode = new QrCode();
        $qrCode->setText('Life is too short to be generating QR codes');
        $qrCode->setSize(300);

        return $qrCode;
    }

    /**
     * Creates a QR code with a logo.
     *
     * @return QrCode
     */
    protected function createQrCodeWithLogo()
    {
        $qrCode = new QrCode();
        $qrCode->setText('Life is too short to be generating QR codes')
        ->setSize(300)
        ->setLogo(dirname(__DIR__).'/assets/image/logo.png')
        ->setLogoSize(60);

        return $qrCode;
    }
}