EnumCaseTest.php 2.1 KB

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