TemplateFactoryTest.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitWasp\Buffertools\Tests;
  4. use BitWasp\Buffertools\TemplateFactory;
  5. use BitWasp\Buffertools\Types\VarInt;
  6. use BitWasp\Buffertools\Types\VarString;
  7. use BitWasp\Buffertools\Types\Vector;
  8. class TemplateFactoryTest extends BinaryTest
  9. {
  10. /**
  11. * @return array
  12. */
  13. public function getTestVectors(): array
  14. {
  15. $vectors = [];
  16. for ($i = 8; $i <= 256; $i = $i * 2) {
  17. foreach (array('', 'le') as $byteOrder) {
  18. $vectors[] = [
  19. 'uint' . $i . $byteOrder,
  20. '\BitWasp\Buffertools\Types\Uint' . $i,
  21. ];
  22. $vectors[] = [
  23. 'int' . $i . $byteOrder,
  24. '\BitWasp\Buffertools\Types\Int' . $i,
  25. ];
  26. }
  27. }
  28. $vectors[] = [
  29. 'varint',
  30. VarInt::class
  31. ];
  32. $vectors[] = [
  33. 'varstring',
  34. VarString::class
  35. ];
  36. return $vectors;
  37. }
  38. /**
  39. * @dataProvider getTestVectors
  40. * @param string $function
  41. * @param string $eClass
  42. */
  43. public function testTemplateUint(string $function, string $eClass)
  44. {
  45. $factory = new TemplateFactory(null);
  46. $factory->$function();
  47. $template = $factory->getTemplate();
  48. $this->assertEquals(1, count($template));
  49. $template = $factory->getTemplate()->getItems();
  50. $this->assertInstanceOf($eClass, $template[0]);
  51. }
  52. public function testVector()
  53. {
  54. $factory = new TemplateFactory(null);
  55. $factory->vector(
  56. function () {
  57. return;
  58. }
  59. );
  60. $template = $factory->getTemplate();
  61. $this->assertEquals(1, count($template));
  62. $template = $factory->getTemplate()->getItems();
  63. $this->assertInstanceOf(Vector::class, $template[0]);
  64. }
  65. }