memory_leak_test.php 1.8 KB

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