encode_decode_test.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. require_once('test_base.php');
  3. require_once('test_util.php');
  4. use Google\Protobuf\RepeatedField;
  5. use Google\Protobuf\GPBType;
  6. use Foo\TestEnum;
  7. use Foo\TestMessage;
  8. use Foo\TestMessage_Sub;
  9. use Foo\TestPackedMessage;
  10. use Foo\TestUnpackedMessage;
  11. class EncodeDecodeTest extends TestBase
  12. {
  13. public function testEncode()
  14. {
  15. $from = new TestMessage();
  16. $this->expectEmptyFields($from);
  17. $this->setFields($from);
  18. $this->expectFields($from);
  19. $data = $from->encode();
  20. $this->assertSame(TestUtil::getGoldenTestMessage(), $data);
  21. }
  22. public function testDecode()
  23. {
  24. $to = new TestMessage();
  25. $to->decode(TestUtil::getGoldenTestMessage());
  26. $this->expectFields($to);
  27. }
  28. public function testEncodeDecode()
  29. {
  30. $from = new TestMessage();
  31. $this->expectEmptyFields($from);
  32. $this->setFields($from);
  33. $this->expectFields($from);
  34. $data = $from->encode();
  35. $to = new TestMessage();
  36. $to->decode($data);
  37. $this->expectFields($to);
  38. }
  39. public function testEncodeDecodeEmpty()
  40. {
  41. $from = new TestMessage();
  42. $this->expectEmptyFields($from);
  43. $data = $from->encode();
  44. $to = new TestMessage();
  45. $to->decode($data);
  46. $this->expectEmptyFields($to);
  47. }
  48. public function testEncodeDecodeOneof()
  49. {
  50. $m = new TestMessage();
  51. $m->setOneofInt32(1);
  52. $data = $m->encode();
  53. $n = new TestMessage();
  54. $n->decode($data);
  55. $this->assertSame(1, $n->getOneofInt32());
  56. $m->setOneofFloat(2.0);
  57. $data = $m->encode();
  58. $n = new TestMessage();
  59. $n->decode($data);
  60. $this->assertSame(2.0, $n->getOneofFloat());
  61. $m->setOneofString('abc');
  62. $data = $m->encode();
  63. $n = new TestMessage();
  64. $n->decode($data);
  65. $this->assertSame('abc', $n->getOneofString());
  66. $sub_m = new TestMessage_Sub();
  67. $sub_m->setA(1);
  68. $m->setOneofMessage($sub_m);
  69. $data = $m->encode();
  70. $n = new TestMessage();
  71. $n->decode($data);
  72. $this->assertSame(1, $n->getOneofMessage()->getA());
  73. }
  74. public function testPackedEncode()
  75. {
  76. $from = new TestPackedMessage();
  77. TestUtil::setTestPackedMessage($from);
  78. $this->assertSame(TestUtil::getGoldenTestPackedMessage(),
  79. $from->encode());
  80. }
  81. public function testPackedDecodePacked()
  82. {
  83. $to = new TestPackedMessage();
  84. $to->decode(TestUtil::getGoldenTestPackedMessage());
  85. TestUtil::assertTestPackedMessage($to);
  86. }
  87. public function testPackedDecodeUnpacked()
  88. {
  89. $to = new TestPackedMessage();
  90. $to->decode(TestUtil::getGoldenTestUnpackedMessage());
  91. TestUtil::assertTestPackedMessage($to);
  92. }
  93. public function testUnpackedEncode()
  94. {
  95. $from = new TestUnpackedMessage();
  96. TestUtil::setTestPackedMessage($from);
  97. $this->assertSame(TestUtil::getGoldenTestUnpackedMessage(),
  98. $from->encode());
  99. }
  100. public function testUnpackedDecodePacked()
  101. {
  102. $to = new TestUnpackedMessage();
  103. $to->decode(TestUtil::getGoldenTestPackedMessage());
  104. TestUtil::assertTestPackedMessage($to);
  105. }
  106. public function testUnpackedDecodeUnpacked()
  107. {
  108. $to = new TestUnpackedMessage();
  109. $to->decode(TestUtil::getGoldenTestUnpackedMessage());
  110. TestUtil::assertTestPackedMessage($to);
  111. }
  112. }