ImagickRenderingTest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. declare(strict_types = 1);
  3. namespace BaconQrCodeTest\Integration;
  4. use BaconQrCode\Renderer\Color\Rgb;
  5. use BaconQrCode\Renderer\Eye\SquareEye;
  6. use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
  7. use BaconQrCode\Renderer\ImageRenderer;
  8. use BaconQrCode\Renderer\Module\SquareModule;
  9. use BaconQrCode\Renderer\RendererStyle\EyeFill;
  10. use BaconQrCode\Renderer\RendererStyle\Fill;
  11. use BaconQrCode\Renderer\RendererStyle\Gradient;
  12. use BaconQrCode\Renderer\RendererStyle\GradientType;
  13. use BaconQrCode\Renderer\RendererStyle\RendererStyle;
  14. use BaconQrCode\Writer;
  15. use PHPUnit\Framework\TestCase;
  16. use Spatie\Snapshots\MatchesSnapshots;
  17. /**
  18. * @group integration
  19. */
  20. final class ImagickRenderingTest extends TestCase
  21. {
  22. use MatchesSnapshots;
  23. /**
  24. * @requires extension imagick
  25. */
  26. public function testGenericQrCode() : void
  27. {
  28. $renderer = new ImageRenderer(
  29. new RendererStyle(400),
  30. new ImagickImageBackEnd()
  31. );
  32. $writer = new Writer($renderer);
  33. $tempName = tempnam(sys_get_temp_dir(), 'test') . '.png';
  34. $writer->writeFile('Hello World!', $tempName);
  35. $this->assertMatchesFileSnapshot($tempName);
  36. unlink($tempName);
  37. }
  38. /**
  39. * @requires extension imagick
  40. */
  41. public function testIssue79() : void
  42. {
  43. $eye = SquareEye::instance();
  44. $squareModule = SquareModule::instance();
  45. $eyeFill = new EyeFill(new Rgb(100, 100, 55), new Rgb(100, 100, 255));
  46. $gradient = new Gradient(new Rgb(100, 100, 55), new Rgb(100, 100, 255), GradientType::HORIZONTAL());
  47. $renderer = new ImageRenderer(
  48. new RendererStyle(
  49. 400,
  50. 2,
  51. $squareModule,
  52. $eye,
  53. Fill::withForegroundGradient(new Rgb(255, 255, 255), $gradient, $eyeFill, $eyeFill, $eyeFill)
  54. ),
  55. new ImagickImageBackEnd()
  56. );
  57. $writer = new Writer($renderer);
  58. $tempName = tempnam(sys_get_temp_dir(), 'test') . '.png';
  59. $writer->writeFile('https://apiroad.net/very-long-url', $tempName);
  60. $this->assertMatchesFileSnapshot($tempName);
  61. unlink($tempName);
  62. }
  63. }