BitBufferTest.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * Class BitBufferTest
  4. *
  5. * @created 08.02.2016
  6. * @author Smiley <smiley@chillerlan.net>
  7. * @copyright 2015 Smiley
  8. * @license MIT
  9. */
  10. declare(strict_types=1);
  11. namespace chillerlan\QRCodeTest\Common;
  12. use chillerlan\QRCode\QRCodeException;
  13. use chillerlan\QRCode\Common\{BitBuffer, Mode};
  14. use PHPUnit\Framework\Attributes\{Test, TestWith};
  15. use PHPUnit\Framework\TestCase;
  16. /**
  17. * BitBuffer coverage test
  18. */
  19. final class BitBufferTest extends TestCase{
  20. private BitBuffer $bitBuffer;
  21. protected function setUp():void{
  22. $this->bitBuffer = new BitBuffer;
  23. }
  24. #[Test]
  25. #[TestWith([Mode::NUMBER, 16], 'number')]
  26. #[TestWith([Mode::ALPHANUM, 32], 'alphanum')]
  27. #[TestWith([Mode::BYTE, 64], 'byte')]
  28. #[TestWith([Mode::KANJI, 128], 'kanji')]
  29. #[TestWith([Mode::HANZI, 208], 'hanzi')]
  30. public function put(int $data, int $expected):void{
  31. $this->bitBuffer->put($data, 4);
  32. $this::assertSame($expected, $this->bitBuffer->getBuffer()[0]);
  33. $this::assertSame(4, $this->bitBuffer->getLength());
  34. }
  35. #[Test]
  36. public function readException():void{
  37. $this->expectException(QRCodeException::class);
  38. $this->expectExceptionMessage('invalid $numBits');
  39. $this->bitBuffer->put(Mode::KANJI, 4);
  40. $this->bitBuffer->read($this->bitBuffer->available() + 1);
  41. }
  42. }