TextTest.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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\Encoder;
  10. use BaconQrCode\Common\ErrorCorrectionLevel;
  11. use BaconQrCode\Renderer\Text\Plain;
  12. use BaconQrCode\Writer;
  13. use PHPUnit_Framework_TestCase as TestCase;
  14. class PlainTest extends TestCase
  15. {
  16. /**
  17. * @var Plain
  18. */
  19. protected $renderer;
  20. /**
  21. * @var Writer
  22. */
  23. protected $writer;
  24. public function setUp()
  25. {
  26. $this->renderer = new Plain();
  27. $this->writer = new Writer($this->renderer);
  28. }
  29. public function testBasicRender()
  30. {
  31. $content = 'foobar';
  32. $expected =
  33. " \n" .
  34. " ███████ █████ ███████ \n" .
  35. " █ █ █ █ █ █ \n" .
  36. " █ ███ █ ██ █ ███ █ \n" .
  37. " █ ███ █ ███ █ ███ █ \n" .
  38. " █ ███ █ █ █ █ ███ █ \n" .
  39. " █ █ ██ █ █ \n" .
  40. " ███████ █ █ █ ███████ \n" .
  41. " █████ \n" .
  42. " ██ ██ █ ██ █ █ █ \n" .
  43. " ██ ██ █ █ ██ \n" .
  44. " ████████ █ ██ █ ██ \n" .
  45. " ██ █ █ \n" .
  46. " ██ ███ █ █ █ █ \n" .
  47. " █ ███ █ █ \n" .
  48. " ███████ ██ ██████ \n" .
  49. " █ █ ████ ██ \n" .
  50. " █ ███ █ ██ ██ ██ █ ██ \n" .
  51. " █ ███ █ ██ ██ █ ██ \n" .
  52. " █ ███ █ █ █ ██ ██ \n" .
  53. " █ █ ███ ███ ████ \n" .
  54. " ███████ ████ ██ \n" .
  55. " \n"
  56. ;
  57. $qrCode = Encoder::encode(
  58. $content,
  59. new ErrorCorrectionLevel(ErrorCorrectionLevel::L),
  60. Encoder::DEFAULT_BYTE_MODE_ECODING
  61. );
  62. $this->assertEquals($expected, $this->renderer->render($qrCode));
  63. }
  64. public function testBasicRenderNoMargins()
  65. {
  66. $content = 'foobar';
  67. $expected =
  68. "███████ █████ ███████\n" .
  69. "█ █ █ █ █ █\n" .
  70. "█ ███ █ ██ █ ███ █\n" .
  71. "█ ███ █ ███ █ ███ █\n" .
  72. "█ ███ █ █ █ █ ███ █\n" .
  73. "█ █ ██ █ █\n" .
  74. "███████ █ █ █ ███████\n" .
  75. " █████ \n" .
  76. "██ ██ █ ██ █ █ █\n" .
  77. " ██ ██ █ █ ██ \n" .
  78. " ████████ █ ██ █ ██\n" .
  79. " ██ █ █\n" .
  80. " ██ ███ █ █ █ █\n" .
  81. " █ ███ █ █ \n" .
  82. "███████ ██ ██████ \n" .
  83. "█ █ ████ ██ \n" .
  84. "█ ███ █ ██ ██ ██ █ ██\n" .
  85. "█ ███ █ ██ ██ █ ██ \n" .
  86. "█ ███ █ █ █ ██ ██\n" .
  87. "█ █ ███ ███ ████\n" .
  88. "███████ ████ ██ \n"
  89. ;
  90. $qrCode = Encoder::encode(
  91. $content,
  92. new ErrorCorrectionLevel(ErrorCorrectionLevel::L),
  93. Encoder::DEFAULT_BYTE_MODE_ECODING
  94. );
  95. $this->renderer->setMargin(0);
  96. $this->assertEquals(0, $this->renderer->getMargin());
  97. $this->assertEquals($expected, $this->renderer->render($qrCode));
  98. }
  99. public function testBasicRenderCustomChar()
  100. {
  101. $content = 'foobar';
  102. $expected =
  103. "-----------------------\n" .
  104. "-#######-#####-#######-\n" .
  105. "-#-----#--#-#--#-----#-\n" .
  106. "-#-###-#--##---#-###-#-\n" .
  107. "-#-###-#--###--#-###-#-\n" .
  108. "-#-###-#---#-#-#-###-#-\n" .
  109. "-#-----#----##-#-----#-\n" .
  110. "-#######-#-#-#-#######-\n" .
  111. "---------#####---------\n" .
  112. "-##-##-#--##-#-#-----#-\n" .
  113. "----##----##-#-#-##----\n" .
  114. "--########-#--##-#--##-\n" .
  115. "-----------##------#-#-\n" .
  116. "--##--###--#---#--#--#-\n" .
  117. "---------#-###----#-#--\n" .
  118. "-#######--##-######----\n" .
  119. "-#-----#---####---##---\n" .
  120. "-#-###-#-##-##-##-#-##-\n" .
  121. "-#-###-#-##-##--#-##---\n" .
  122. "-#-###-#---#---#-##-##-\n" .
  123. "-#-----#-###--###-####-\n" .
  124. "-#######-####---##-----\n" .
  125. "-----------------------\n"
  126. ;
  127. $qrCode = Encoder::encode(
  128. $content,
  129. new ErrorCorrectionLevel(ErrorCorrectionLevel::L),
  130. Encoder::DEFAULT_BYTE_MODE_ECODING
  131. );
  132. $this->renderer->setFullBlock('#');
  133. $this->renderer->setEmptyBlock('-');
  134. $this->assertEquals('#', $this->renderer->getFullBlock());
  135. $this->assertEquals('-', $this->renderer->getEmptyBlock());
  136. $this->assertEquals($expected, $this->renderer->render($qrCode));
  137. }
  138. }