EnumCaseTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php declare(strict_types=1);
  2. namespace PhpParser\Builder;
  3. use PhpParser\Comment;
  4. use PhpParser\Node\Arg;
  5. use PhpParser\Node\Attribute;
  6. use PhpParser\Node\AttributeGroup;
  7. use PhpParser\Node\Identifier;
  8. use PhpParser\Node\Name;
  9. use PhpParser\Node\Scalar;
  10. use PhpParser\Node\Scalar\LNumber;
  11. use PhpParser\Node\Stmt;
  12. class EnumCaseTest extends \PHPUnit\Framework\TestCase
  13. {
  14. public function createEnumCaseBuilder($name) {
  15. return new EnumCase($name);
  16. }
  17. public function testDocComment() {
  18. $node = $this->createEnumCaseBuilder('TEST')
  19. ->setDocComment('/** Test */')
  20. ->getNode();
  21. $this->assertEquals(
  22. new Stmt\EnumCase(
  23. "TEST",
  24. null,
  25. [],
  26. [
  27. 'comments' => [new Comment\Doc('/** Test */')]
  28. ]
  29. ),
  30. $node
  31. );
  32. }
  33. public function testAddAttribute() {
  34. $attribute = new Attribute(
  35. new Name('Attr'),
  36. [new Arg(new LNumber(1), false, false, [], new Identifier('name'))]
  37. );
  38. $attributeGroup = new AttributeGroup([$attribute]);
  39. $node = $this->createEnumCaseBuilder('ATTR_GROUP')
  40. ->addAttribute($attributeGroup)
  41. ->getNode();
  42. $this->assertEquals(
  43. new Stmt\EnumCase(
  44. "ATTR_GROUP",
  45. null,
  46. [$attributeGroup]
  47. ),
  48. $node
  49. );
  50. }
  51. /**
  52. * @dataProvider provideTestDefaultValues
  53. */
  54. public function testValues($value, $expectedValueNode) {
  55. $node = $this->createEnumCaseBuilder('TEST')
  56. ->setValue($value)
  57. ->getNode()
  58. ;
  59. $this->assertEquals($expectedValueNode, $node->expr);
  60. }
  61. public function provideTestDefaultValues() {
  62. return [
  63. [
  64. 31415,
  65. new Scalar\LNumber(31415)
  66. ],
  67. [
  68. 'Hallo World',
  69. new Scalar\String_('Hallo World')
  70. ],
  71. ];
  72. }
  73. }