memory_leak_test.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. # phpunit has memory leak by itself. Thus, it cannot be used to test memory leak.
  3. require_once('generated/Bar/TestInclude.php');
  4. require_once('generated/Foo/TestEnum.php');
  5. require_once('generated/Foo/TestMessage.php');
  6. require_once('generated/Foo/TestMessage_Sub.php');
  7. require_once('generated/Foo/TestPackedMessage.php');
  8. require_once('generated/Foo/TestPhpDoc.php');
  9. require_once('generated/Foo/TestUnpackedMessage.php');
  10. require_once('generated/GPBMetadata/Proto/Test.php');
  11. require_once('generated/GPBMetadata/Proto/TestInclude.php');
  12. require_once('test_util.php');
  13. use Google\Protobuf\Internal\RepeatedField;
  14. use Google\Protobuf\Internal\GPBType;
  15. use Foo\TestMessage;
  16. use Foo\TestMessage_Sub;
  17. $from = new TestMessage();
  18. TestUtil::setTestMessage($from);
  19. TestUtil::assertTestMessage($from);
  20. $data = $from->encode();
  21. $to = new TestMessage();
  22. $to->decode($data);
  23. TestUtil::assertTestMessage($to);
  24. $from->setRecursive($from);
  25. $arr = new RepeatedField(GPBType::MESSAGE, TestMessage::class);
  26. $arr []= new TestMessage;
  27. $arr[0]->SetRepeatedRecursive($arr);
  28. // Test oneof fields.
  29. $m = new TestMessage();
  30. $m->setOneofInt32(1);
  31. assert(1 === $m->getOneofInt32());
  32. assert(0.0 === $m->getOneofFloat());
  33. assert('' === $m->getOneofString());
  34. assert(NULL === $m->getOneofMessage());
  35. $data = $m->encode();
  36. $n = new TestMessage();
  37. $n->decode($data);
  38. assert(1 === $n->getOneofInt32());
  39. $m->setOneofFloat(2.0);
  40. assert(0 === $m->getOneofInt32());
  41. assert(2.0 === $m->getOneofFloat());
  42. assert('' === $m->getOneofString());
  43. assert(NULL === $m->getOneofMessage());
  44. $data = $m->encode();
  45. $n = new TestMessage();
  46. $n->decode($data);
  47. assert(2.0 === $n->getOneofFloat());
  48. $m->setOneofString('abc');
  49. assert(0 === $m->getOneofInt32());
  50. assert(0.0 === $m->getOneofFloat());
  51. assert('abc' === $m->getOneofString());
  52. assert(NULL === $m->getOneofMessage());
  53. $data = $m->encode();
  54. $n = new TestMessage();
  55. $n->decode($data);
  56. assert('abc' === $n->getOneofString());
  57. $sub_m = new TestMessage_Sub();
  58. $sub_m->setA(1);
  59. $m->setOneofMessage($sub_m);
  60. assert(0 === $m->getOneofInt32());
  61. assert(0.0 === $m->getOneofFloat());
  62. assert('' === $m->getOneofString());
  63. assert(1 === $m->getOneofMessage()->getA());
  64. $data = $m->encode();
  65. $n = new TestMessage();
  66. $n->decode($data);
  67. assert(1 === $n->getOneofMessage()->getA());