DataTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. *
  4. * @filesource DataTest.php
  5. * @created 08.02.2016
  6. * @author Smiley <smiley@chillerlan.net>
  7. * @copyright 2015 Smiley
  8. * @license MIT
  9. */
  10. namespace chillerlan\QRCodeTest\Data;
  11. use chillerlan\QRCode\BitBuffer;
  12. use chillerlan\QRCode\QRConst;
  13. use chillerlan\QRCode\Data\AlphaNum;
  14. use chillerlan\QRCode\Data\Byte;
  15. use chillerlan\QRCode\Data\Kanji;
  16. use chillerlan\QRCode\Data\Number;
  17. class DataTest extends \PHPUnit_Framework_TestCase{
  18. /**
  19. * @var \chillerlan\QRCode\BitBuffer
  20. */
  21. protected $bitBuffer;
  22. /**
  23. * @var \chillerlan\QRCode\Data\QRDataInterface
  24. */
  25. protected $module;
  26. public function bitProvider(){
  27. return [
  28. [QRConst::MODE_NUMBER, Number::class, '123456789'],
  29. [QRConst::MODE_NUMBER, Number::class, '1234567890'],
  30. [QRConst::MODE_NUMBER, Number::class, '12345678901'],
  31. [QRConst::MODE_ALPHANUM, AlphaNum::class, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 $%*+-./:'],
  32. [QRConst::MODE_BYTE, Byte::class, '#\\'],
  33. [QRConst::MODE_KANJI, Kanji::class, '茗荷'],
  34. ];
  35. }
  36. protected function setUp(){
  37. $this->bitBuffer = new BitBuffer;
  38. }
  39. /**
  40. * @dataProvider bitProvider
  41. */
  42. public function testMode($mode, $class, $data){
  43. $this->module = new $class($data);
  44. $this->assertEquals($mode, $this->module->mode);
  45. }
  46. /**
  47. * @dataProvider bitProvider
  48. */
  49. public function testWrite($mode, $class, $data){
  50. $this->bitBuffer->clear();
  51. $this->module = new $class($data);
  52. $this->module->write($this->bitBuffer);
  53. }
  54. /**
  55. * @expectedException \chillerlan\QRCode\Data\QRCodeDataException
  56. * @expectedExceptionMessage illegal char: 92
  57. */
  58. public function testAlphaNumCharException(){
  59. $this->bitBuffer->clear();
  60. $this->module = new AlphaNum('\\');
  61. $this->module->write($this->bitBuffer);
  62. }
  63. /**
  64. * @expectedException \chillerlan\QRCode\Data\QRCodeDataException
  65. * @expectedExceptionMessage illegal char at 7 (50051)
  66. */
  67. public function testKanjiCharExceptionA(){
  68. $this->bitBuffer->clear();
  69. $this->module = new Kanji('茗荷Ã');
  70. $this->module->write($this->bitBuffer);
  71. }
  72. /**
  73. * @expectedException \chillerlan\QRCode\Data\QRCodeDataException
  74. * @expectedExceptionMessage illegal char at 7
  75. */
  76. public function testKanjiCharExceptionB(){
  77. $this->bitBuffer->clear();
  78. $this->module = new Kanji('茗荷\\');
  79. $this->module->write($this->bitBuffer);
  80. }
  81. /**
  82. * @expectedException \chillerlan\QRCode\Data\QRCodeDataException
  83. * @expectedExceptionMessage illegal char: 92
  84. */
  85. public function testNumberCharException(){
  86. $this->bitBuffer->clear();
  87. $this->module = new Number('\\');
  88. $this->module->write($this->bitBuffer);
  89. }
  90. }