VersionTest.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * BaconQrCode
  4. *
  5. * @link http://github.com/Bacon/BaconQrCode For the canonical source repository
  6. * @copyright 2013 Ben 'DASPRiD' Scholzen
  7. * @license http://opensource.org/licenses/BSD-2-Clause Simplified BSD License
  8. */
  9. namespace BaconQrCode\Common;
  10. use PHPUnit_Framework_TestCase as TestCase;
  11. class VersionTest extends TestCase
  12. {
  13. public static function versionProvider()
  14. {
  15. $array = array();
  16. for ($i = 1; $i <= 40; $i++) {
  17. $array[] = array($i, 4 * $i + 17);
  18. }
  19. return $array;
  20. }
  21. public static function decodeInformationProvider()
  22. {
  23. return array(
  24. array(7, 0x07c94),
  25. array(12, 0x0c762),
  26. array(17, 0x1145d),
  27. array(22, 0x168c9),
  28. array(27, 0x1b08e),
  29. array(32, 0x209d5),
  30. );
  31. }
  32. /**
  33. * @dataProvider versionProvider
  34. * @param integer $versionNumber
  35. * @param integer $dimension
  36. */
  37. public function testVersionForNumber($versionNumber, $dimension)
  38. {
  39. $version = Version::getVersionForNumber($versionNumber);
  40. $this->assertNotNull($version);
  41. $this->assertEquals($versionNumber, $version->getVersionNumber());
  42. $this->assertNotNull($version->getAlignmentPatternCenters());
  43. if ($versionNumber > 1) {
  44. $this->assertTrue(count($version->getAlignmentPatternCenters()) > 0);
  45. }
  46. $this->assertEquals($dimension, $version->getDimensionForVersion());
  47. $this->assertNotNull($version->getEcBlocksForLevel(new ErrorCorrectionLevel(ErrorCorrectionLevel::H)));
  48. $this->assertNotNull($version->getEcBlocksForLevel(new ErrorCorrectionLevel(ErrorCorrectionLevel::L)));
  49. $this->assertNotNull($version->getEcBlocksForLevel(new ErrorCorrectionLevel(ErrorCorrectionLevel::M)));
  50. $this->assertNotNull($version->getEcBlocksForLevel(new ErrorCorrectionLevel(ErrorCorrectionLevel::Q)));
  51. $this->assertNotNull($version->buildFunctionPattern());
  52. }
  53. /**
  54. * @dataProvider versionProvider
  55. * @param integer $versionNumber
  56. * @param integer $dimension
  57. */
  58. public function testGetProvisionalVersionForDimension($versionNumber, $dimension)
  59. {
  60. $this->assertEquals(
  61. $versionNumber,
  62. Version::getProvisionalVersionForDimension($dimension)->getVersionNumber()
  63. );
  64. }
  65. /**
  66. * @dataProvider decodeInformationProvider
  67. * @param integer $expectedVersion
  68. * @param integer $mask
  69. */
  70. public function testDecodeVersionInformation($expectedVersion, $mask)
  71. {
  72. $version = Version::decodeVersionInformation($mask);
  73. $this->assertNotNull($version);
  74. $this->assertEquals($expectedVersion, $version->getVersionNumber());
  75. }
  76. }