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());
|
||
|
}
|
||
|
}
|