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