memory_leak_test.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. # phpunit has memory leak by itself. Thus, it cannot be used to test memory leak.
  3. require_once('generated/NoNamespaceEnum.php');
  4. require_once('generated/NoNamespaceMessage.php');
  5. require_once('generated/NoNamespaceMessage_NestedEnum.php');
  6. require_once('generated/PrefixEmpty.php');
  7. require_once('generated/PrefixTestPrefix.php');
  8. require_once('generated/TestEmptyNamespace.php');
  9. require_once('generated/Bar/TestInclude.php');
  10. require_once('generated/Foo/PBARRAY.php');
  11. require_once('generated/Foo/PBEmpty.php');
  12. require_once('generated/Foo/TestEnum.php');
  13. require_once('generated/Foo/TestIncludeNamespaceMessage.php');
  14. require_once('generated/Foo/TestIncludePrefixMessage.php');
  15. require_once('generated/Foo/TestMessage.php');
  16. require_once('generated/Foo/TestMessage_Empty.php');
  17. require_once('generated/Foo/TestMessage_NestedEnum.php');
  18. require_once('generated/Foo/TestMessage_Sub.php');
  19. require_once('generated/Foo/TestPackedMessage.php');
  20. require_once('generated/Foo/TestPhpDoc.php');
  21. require_once('generated/Foo/TestRandomFieldOrder.php');
  22. require_once('generated/Foo/TestReverseFieldOrder.php');
  23. require_once('generated/Foo/TestUnpackedMessage.php');
  24. require_once('generated/GPBMetadata/Proto/Test.php');
  25. require_once('generated/GPBMetadata/Proto/TestEmptyPhpNamespace.php');
  26. require_once('generated/GPBMetadata/Proto/TestInclude.php');
  27. require_once('generated/GPBMetadata/Proto/TestNoNamespace.php');
  28. require_once('generated/GPBMetadata/Proto/TestPhpNamespace.php');
  29. require_once('generated/GPBMetadata/Proto/TestPrefix.php');
  30. require_once('generated/Php/Test/TestNamespace.php');
  31. require_once('test_util.php');
  32. use Google\Protobuf\Internal\RepeatedField;
  33. use Google\Protobuf\Internal\GPBType;
  34. use Foo\TestMessage;
  35. use Foo\TestMessage_Sub;
  36. $from = new TestMessage();
  37. TestUtil::setTestMessage($from);
  38. TestUtil::assertTestMessage($from);
  39. $data = $from->serializeToString();
  40. $to = new TestMessage();
  41. $to->mergeFromString($data);
  42. TestUtil::assertTestMessage($to);
  43. $from->setRecursive($from);
  44. $arr = new RepeatedField(GPBType::MESSAGE, TestMessage::class);
  45. $arr[] = new TestMessage;
  46. $arr[0]->SetRepeatedRecursive($arr);
  47. // Test oneof fields.
  48. $m = new TestMessage();
  49. $m->setOneofInt32(1);
  50. assert(1 === $m->getOneofInt32());
  51. assert(0.0 === $m->getOneofFloat());
  52. assert('' === $m->getOneofString());
  53. assert(NULL === $m->getOneofMessage());
  54. $data = $m->serializeToString();
  55. $n = new TestMessage();
  56. $n->mergeFromString($data);
  57. assert(1 === $n->getOneofInt32());
  58. $m->setOneofFloat(2.0);
  59. assert(0 === $m->getOneofInt32());
  60. assert(2.0 === $m->getOneofFloat());
  61. assert('' === $m->getOneofString());
  62. assert(NULL === $m->getOneofMessage());
  63. $data = $m->serializeToString();
  64. $n = new TestMessage();
  65. $n->mergeFromString($data);
  66. assert(2.0 === $n->getOneofFloat());
  67. $m->setOneofString('abc');
  68. assert(0 === $m->getOneofInt32());
  69. assert(0.0 === $m->getOneofFloat());
  70. assert('abc' === $m->getOneofString());
  71. assert(NULL === $m->getOneofMessage());
  72. $data = $m->serializeToString();
  73. $n = new TestMessage();
  74. $n->mergeFromString($data);
  75. assert('abc' === $n->getOneofString());
  76. $sub_m = new TestMessage_Sub();
  77. $sub_m->setA(1);
  78. $m->setOneofMessage($sub_m);
  79. assert(0 === $m->getOneofInt32());
  80. assert(0.0 === $m->getOneofFloat());
  81. assert('' === $m->getOneofString());
  82. assert(1 === $m->getOneofMessage()->getA());
  83. $data = $m->serializeToString();
  84. $n = new TestMessage();
  85. $n->mergeFromString($data);
  86. assert(1 === $n->getOneofMessage()->getA());
  87. # $from = new TestMessage();
  88. # $to = new TestMessage();
  89. # TestUtil::setTestMessage($from);
  90. # $to->mergeFrom($from);
  91. # TestUtil::assertTestMessage($to);