79 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
declare(strict_types = 1);
 | 
						|
 | 
						|
namespace BaconQrCodeTest\Common;
 | 
						|
 | 
						|
use BaconQrCode\Common\ErrorCorrectionLevel;
 | 
						|
use BaconQrCode\Common\Version;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
class VersionTest extends TestCase
 | 
						|
{
 | 
						|
    public function versions() : array
 | 
						|
    {
 | 
						|
        $array = [];
 | 
						|
 | 
						|
        for ($i = 1; $i <= 40; ++$i) {
 | 
						|
            $array[] = [$i, 4 * $i + 17];
 | 
						|
        }
 | 
						|
 | 
						|
        return $array;
 | 
						|
    }
 | 
						|
 | 
						|
    public function decodeInformation() : array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [7, 0x07c94],
 | 
						|
            [12, 0x0c762],
 | 
						|
            [17, 0x1145d],
 | 
						|
            [22, 0x168c9],
 | 
						|
            [27, 0x1b08e],
 | 
						|
            [32, 0x209d5],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dataProvider versions
 | 
						|
     */
 | 
						|
    public function testVersionForNumber(int $versionNumber, int $dimension) : void
 | 
						|
    {
 | 
						|
        $version = Version::getVersionForNumber($versionNumber);
 | 
						|
 | 
						|
        $this->assertNotNull($version);
 | 
						|
        $this->assertEquals($versionNumber, $version->getVersionNumber());
 | 
						|
        $this->assertNotNull($version->getAlignmentPatternCenters());
 | 
						|
 | 
						|
        if ($versionNumber > 1) {
 | 
						|
            $this->assertTrue(count($version->getAlignmentPatternCenters()) > 0);
 | 
						|
        }
 | 
						|
 | 
						|
        $this->assertEquals($dimension, $version->getDimensionForVersion());
 | 
						|
        $this->assertNotNull($version->getEcBlocksForLevel(ErrorCorrectionLevel::H()));
 | 
						|
        $this->assertNotNull($version->getEcBlocksForLevel(ErrorCorrectionLevel::L()));
 | 
						|
        $this->assertNotNull($version->getEcBlocksForLevel(ErrorCorrectionLevel::M()));
 | 
						|
        $this->assertNotNull($version->getEcBlocksForLevel(ErrorCorrectionLevel::Q()));
 | 
						|
        $this->assertNotNull($version->buildFunctionPattern());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dataProvider versions
 | 
						|
     */
 | 
						|
    public function testGetProvisionalVersionForDimension(int $versionNumber, int $dimension) : void
 | 
						|
    {
 | 
						|
        $this->assertSame(
 | 
						|
            $versionNumber,
 | 
						|
            Version::getProvisionalVersionForDimension($dimension)->getVersionNumber()
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dataProvider decodeInformation
 | 
						|
     */
 | 
						|
    public function testDecodeVersionInformation(int $expectedVersion, int $mask) : void
 | 
						|
    {
 | 
						|
        $version = Version::decodeVersionInformation($mask);
 | 
						|
        $this->assertNotNull($version);
 | 
						|
        $this->assertSame($expectedVersion, $version->getVersionNumber());
 | 
						|
    }
 | 
						|
}
 |