QrCodeTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /*
  3. * (c) Jeroen van den Enden <info@endroid.nl>
  4. *
  5. * This source file is subject to the MIT license that is bundled
  6. * with this source code in the file LICENSE.
  7. */
  8. namespace Endroid\QrCode\Tests;
  9. use Endroid\QrCode\Factory\QrCodeFactory;
  10. use Endroid\QrCode\QrCode;
  11. use PHPUnit\Framework\TestCase;
  12. class QrCodeTest extends TestCase
  13. {
  14. public function testReadable()
  15. {
  16. $messages = [
  17. 'Tiny',
  18. 'This one has spaces',
  19. 'd2llMS9uU01BVmlvalM2YU9BUFBPTTdQMmJabHpqdndt',
  20. 'http://this.is.an/url?with=query&string=attached',
  21. '11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111',
  22. '{"i":"serialized.data","v":1,"t":1,"d":"4AEPc9XuIQ0OjsZoSRWp9DRWlN6UyDvuMlyOYy8XjOw="}',
  23. 'Spëci&al ch@ract3rs',
  24. '有限公司',
  25. ];
  26. foreach ($messages as $message) {
  27. $qrCode = new QrCode($message);
  28. $qrCode->setSize(300);
  29. $qrCode->setValidateResult(true);
  30. $pngData = $qrCode->writeString();
  31. $this->assertTrue(is_string($pngData));
  32. }
  33. }
  34. public function testFactory()
  35. {
  36. $qrCodeFactory = new QrCodeFactory();
  37. $qrCode = $qrCodeFactory->create('QR Code', [
  38. 'writer' => 'png',
  39. 'size' => 300,
  40. 'margin' => 10,
  41. ]);
  42. $pngData = $qrCode->writeString();
  43. $this->assertTrue(is_string($pngData));
  44. }
  45. public function testWriteQrCode()
  46. {
  47. $qrCode = new QrCode('QrCode');
  48. $qrCode->setWriterByName('binary');
  49. $binData = $qrCode->writeString();
  50. $this->assertTrue(is_string($binData));
  51. $qrCode->setWriterByName('debug');
  52. $debugData = $qrCode->writeString();
  53. $this->assertTrue(is_string($debugData));
  54. $qrCode->setWriterByName('eps');
  55. $epsData = $qrCode->writeString();
  56. $this->assertTrue(is_string($epsData));
  57. $qrCode->setWriterByName('png');
  58. $pngData = $qrCode->writeString();
  59. $this->assertTrue(is_string($pngData));
  60. $pngDataUriData = $qrCode->writeDataUri();
  61. $this->assertTrue(0 === strpos($pngDataUriData, 'data:image/png;base64'));
  62. $qrCode->setWriterByName('svg');
  63. $svgData = $qrCode->writeString();
  64. $this->assertTrue(is_string($svgData));
  65. $svgDataUriData = $qrCode->writeDataUri();
  66. $this->assertTrue(0 === strpos($svgDataUriData, 'data:image/svg+xml;base64'));
  67. }
  68. public function testSetSize()
  69. {
  70. $size = 400;
  71. $margin = 10;
  72. $qrCode = new QrCode('QrCode');
  73. $qrCode->setSize($size);
  74. $qrCode->setMargin($margin);
  75. $pngData = $qrCode->writeString();
  76. $image = imagecreatefromstring($pngData);
  77. $this->assertTrue(imagesx($image) === $size + 2 * $margin);
  78. $this->assertTrue(imagesy($image) === $size + 2 * $margin);
  79. }
  80. public function testSetLabel()
  81. {
  82. $qrCode = new QrCode('QrCode');
  83. $qrCode
  84. ->setSize(300)
  85. ->setLabel('Scan the code', 15)
  86. ;
  87. $pngData = $qrCode->writeString();
  88. $this->assertTrue(is_string($pngData));
  89. }
  90. public function testSetLogo()
  91. {
  92. $qrCode = new QrCode('QrCode');
  93. $qrCode
  94. ->setSize(400)
  95. ->setLogoPath(__DIR__.'/../assets/symfony.png')
  96. ->setLogoWidth(150)
  97. ->setValidateResult(true);
  98. $pngData = $qrCode->writeString();
  99. $this->assertTrue(is_string($pngData));
  100. }
  101. }