generated_class_test.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. <?php
  2. require_once('generated/NoNamespaceEnum.php');
  3. require_once('generated/NoNamespaceMessage.php');
  4. require_once('test_base.php');
  5. require_once('test_util.php');
  6. use Google\Protobuf\Internal\RepeatedField;
  7. use Google\Protobuf\Internal\MapField;
  8. use Google\Protobuf\Internal\GPBType;
  9. use Foo\TestEnum;
  10. use Foo\TestIncludeNamespaceMessage;
  11. use Foo\TestIncludePrefixMessage;
  12. use Foo\TestMessage;
  13. use Foo\TestMessage_Sub;
  14. use Foo\TestReverseFieldOrder;
  15. use Php\Test\TestNamespace;
  16. class GeneratedClassTest extends TestBase
  17. {
  18. #########################################################
  19. # Test field accessors.
  20. #########################################################
  21. public function testSetterGetter()
  22. {
  23. $m = new TestMessage();
  24. $m->setOptionalInt32(1);
  25. $this->assertSame(1, $m->getOptionalInt32());
  26. }
  27. #########################################################
  28. # Test int32 field.
  29. #########################################################
  30. public function testInt32Field()
  31. {
  32. $m = new TestMessage();
  33. // Set integer.
  34. $m->setOptionalInt32(MAX_INT32);
  35. $this->assertSame(MAX_INT32, $m->getOptionalInt32());
  36. $m->setOptionalInt32(MIN_INT32);
  37. $this->assertSame(MIN_INT32, $m->getOptionalInt32());
  38. // Set float.
  39. $m->setOptionalInt32(1.1);
  40. $this->assertSame(1, $m->getOptionalInt32());
  41. $m->setOptionalInt32(MAX_INT32_FLOAT);
  42. $this->assertSame(MAX_INT32, $m->getOptionalInt32());
  43. $m->setOptionalInt32(MIN_INT32_FLOAT);
  44. $this->assertSame(MIN_INT32, $m->getOptionalInt32());
  45. // Set string.
  46. $m->setOptionalInt32('2');
  47. $this->assertSame(2, $m->getOptionalInt32());
  48. $m->setOptionalInt32('3.1');
  49. $this->assertSame(3, $m->getOptionalInt32());
  50. $m->setOptionalInt32(MAX_INT32_STRING);
  51. $this->assertSame(MAX_INT32, $m->getOptionalInt32());
  52. $m->setOptionalInt32(MIN_INT32_STRING);
  53. $this->assertSame(MIN_INT32, $m->getOptionalInt32());
  54. }
  55. #########################################################
  56. # Test uint32 field.
  57. #########################################################
  58. public function testUint32Field()
  59. {
  60. $m = new TestMessage();
  61. // Set integer.
  62. $m->setOptionalUint32(MAX_UINT32);
  63. $this->assertSame(-1, $m->getOptionalUint32());
  64. $m->setOptionalUint32(-1);
  65. $this->assertSame(-1, $m->getOptionalUint32());
  66. $m->setOptionalUint32(MIN_UINT32);
  67. $this->assertSame(MIN_INT32, $m->getOptionalUint32());
  68. // Set float.
  69. $m->setOptionalUint32(1.1);
  70. $this->assertSame(1, $m->getOptionalUint32());
  71. $m->setOptionalUint32(MAX_UINT32_FLOAT);
  72. $this->assertSame(-1, $m->getOptionalUint32());
  73. $m->setOptionalUint32(-1.0);
  74. $this->assertSame(-1, $m->getOptionalUint32());
  75. $m->setOptionalUint32(MIN_UINT32_FLOAT);
  76. $this->assertSame(MIN_INT32, $m->getOptionalUint32());
  77. // Set string.
  78. $m->setOptionalUint32('2');
  79. $this->assertSame(2, $m->getOptionalUint32());
  80. $m->setOptionalUint32('3.1');
  81. $this->assertSame(3, $m->getOptionalUint32());
  82. $m->setOptionalUint32(MAX_UINT32_STRING);
  83. $this->assertSame(-1, $m->getOptionalUint32());
  84. $m->setOptionalUint32('-1.0');
  85. $this->assertSame(-1, $m->getOptionalUint32());
  86. $m->setOptionalUint32(MIN_UINT32_STRING);
  87. $this->assertSame(MIN_INT32, $m->getOptionalUint32());
  88. }
  89. #########################################################
  90. # Test int64 field.
  91. #########################################################
  92. public function testInt64Field()
  93. {
  94. $m = new TestMessage();
  95. // Set integer.
  96. $m->setOptionalInt64(MAX_INT64);
  97. $this->assertSame(MAX_INT64, $m->getOptionalInt64());
  98. $m->setOptionalInt64(MIN_INT64);
  99. $this->assertEquals(MIN_INT64, $m->getOptionalInt64());
  100. // Set float.
  101. $m->setOptionalInt64(1.1);
  102. if (PHP_INT_SIZE == 4) {
  103. $this->assertSame('1', $m->getOptionalInt64());
  104. } else {
  105. $this->assertSame(1, $m->getOptionalInt64());
  106. }
  107. // Set string.
  108. $m->setOptionalInt64('2');
  109. if (PHP_INT_SIZE == 4) {
  110. $this->assertSame('2', $m->getOptionalInt64());
  111. } else {
  112. $this->assertSame(2, $m->getOptionalInt64());
  113. }
  114. $m->setOptionalInt64('3.1');
  115. if (PHP_INT_SIZE == 4) {
  116. $this->assertSame('3', $m->getOptionalInt64());
  117. } else {
  118. $this->assertSame(3, $m->getOptionalInt64());
  119. }
  120. $m->setOptionalInt64(MAX_INT64_STRING);
  121. if (PHP_INT_SIZE == 4) {
  122. $this->assertSame(MAX_INT64_STRING, $m->getOptionalInt64());
  123. } else {
  124. $this->assertSame(MAX_INT64, $m->getOptionalInt64());
  125. }
  126. $m->setOptionalInt64(MIN_INT64_STRING);
  127. if (PHP_INT_SIZE == 4) {
  128. $this->assertSame(MIN_INT64_STRING, $m->getOptionalInt64());
  129. } else {
  130. $this->assertSame(MIN_INT64, $m->getOptionalInt64());
  131. }
  132. }
  133. #########################################################
  134. # Test uint64 field.
  135. #########################################################
  136. public function testUint64Field()
  137. {
  138. $m = new TestMessage();
  139. // Set integer.
  140. $m->setOptionalUint64(MAX_UINT64);
  141. if (PHP_INT_SIZE == 4) {
  142. $this->assertSame(MAX_UINT64_STRING, $m->getOptionalUint64());
  143. } else {
  144. $this->assertSame(MAX_UINT64, $m->getOptionalUint64());
  145. }
  146. // Set float.
  147. $m->setOptionalUint64(1.1);
  148. if (PHP_INT_SIZE == 4) {
  149. $this->assertSame('1', $m->getOptionalUint64());
  150. } else {
  151. $this->assertSame(1, $m->getOptionalUint64());
  152. }
  153. // Set string.
  154. $m->setOptionalUint64('2');
  155. if (PHP_INT_SIZE == 4) {
  156. $this->assertSame('2', $m->getOptionalUint64());
  157. } else {
  158. $this->assertSame(2, $m->getOptionalUint64());
  159. }
  160. $m->setOptionalUint64('3.1');
  161. if (PHP_INT_SIZE == 4) {
  162. $this->assertSame('3', $m->getOptionalUint64());
  163. } else {
  164. $this->assertSame(3, $m->getOptionalUint64());
  165. }
  166. $m->setOptionalUint64(MAX_UINT64_STRING);
  167. if (PHP_INT_SIZE == 4) {
  168. $this->assertSame(MAX_UINT64_STRING, $m->getOptionalUint64());
  169. } else {
  170. $this->assertSame(MAX_UINT64, $m->getOptionalUint64());
  171. }
  172. }
  173. #########################################################
  174. # Test enum field.
  175. #########################################################
  176. public function testEnumField()
  177. {
  178. $m = new TestMessage();
  179. // Set enum.
  180. $m->setOptionalEnum(TestEnum::ONE);
  181. $this->assertEquals(TestEnum::ONE, $m->getOptionalEnum());
  182. // Set integer.
  183. $m->setOptionalEnum(1);
  184. $this->assertEquals(TestEnum::ONE, $m->getOptionalEnum());
  185. // Set float.
  186. $m->setOptionalEnum(1.1);
  187. $this->assertEquals(TestEnum::ONE, $m->getOptionalEnum());
  188. // Set string.
  189. $m->setOptionalEnum("1");
  190. $this->assertEquals(TestEnum::ONE, $m->getOptionalEnum());
  191. }
  192. public function testNestedEnum()
  193. {
  194. $m = new TestMessage();
  195. $m->setOptionalNestedEnum(\Foo\TestMessage_NestedEnum::ZERO);
  196. }
  197. #########################################################
  198. # Test float field.
  199. #########################################################
  200. public function testFloatField()
  201. {
  202. $m = new TestMessage();
  203. // Set integer.
  204. $m->setOptionalFloat(1);
  205. $this->assertEquals(1.0, $m->getOptionalFloat(), '', MAX_FLOAT_DIFF);
  206. // Set float.
  207. $m->setOptionalFloat(1.1);
  208. $this->assertEquals(1.1, $m->getOptionalFloat(), '', MAX_FLOAT_DIFF);
  209. // Set string.
  210. $m->setOptionalFloat('2');
  211. $this->assertEquals(2.0, $m->getOptionalFloat(), '', MAX_FLOAT_DIFF);
  212. $m->setOptionalFloat('3.1');
  213. $this->assertEquals(3.1, $m->getOptionalFloat(), '', MAX_FLOAT_DIFF);
  214. }
  215. #########################################################
  216. # Test double field.
  217. #########################################################
  218. public function testDoubleField()
  219. {
  220. $m = new TestMessage();
  221. // Set integer.
  222. $m->setOptionalDouble(1);
  223. $this->assertEquals(1.0, $m->getOptionalDouble(), '', MAX_FLOAT_DIFF);
  224. // Set float.
  225. $m->setOptionalDouble(1.1);
  226. $this->assertEquals(1.1, $m->getOptionalDouble(), '', MAX_FLOAT_DIFF);
  227. // Set string.
  228. $m->setOptionalDouble('2');
  229. $this->assertEquals(2.0, $m->getOptionalDouble(), '', MAX_FLOAT_DIFF);
  230. $m->setOptionalDouble('3.1');
  231. $this->assertEquals(3.1, $m->getOptionalDouble(), '', MAX_FLOAT_DIFF);
  232. }
  233. #########################################################
  234. # Test bool field.
  235. #########################################################
  236. public function testBoolField()
  237. {
  238. $m = new TestMessage();
  239. // Set bool.
  240. $m->setOptionalBool(true);
  241. $this->assertSame(true, $m->getOptionalBool());
  242. // Set integer.
  243. $m->setOptionalBool(-1);
  244. $this->assertSame(true, $m->getOptionalBool());
  245. // Set float.
  246. $m->setOptionalBool(1.1);
  247. $this->assertSame(true, $m->getOptionalBool());
  248. // Set string.
  249. $m->setOptionalBool('');
  250. $this->assertSame(false, $m->getOptionalBool());
  251. }
  252. #########################################################
  253. # Test string field.
  254. #########################################################
  255. public function testStringField()
  256. {
  257. $m = new TestMessage();
  258. // Set string.
  259. $m->setOptionalString('abc');
  260. $this->assertSame('abc', $m->getOptionalString());
  261. // Set integer.
  262. $m->setOptionalString(1);
  263. $this->assertSame('1', $m->getOptionalString());
  264. // Set double.
  265. $m->setOptionalString(1.1);
  266. $this->assertSame('1.1', $m->getOptionalString());
  267. // Set bool.
  268. $m->setOptionalString(true);
  269. $this->assertSame('1', $m->getOptionalString());
  270. }
  271. #########################################################
  272. # Test bytes field.
  273. #########################################################
  274. public function testBytesField()
  275. {
  276. $m = new TestMessage();
  277. // Set string.
  278. $m->setOptionalBytes('abc');
  279. $this->assertSame('abc', $m->getOptionalBytes());
  280. // Set integer.
  281. $m->setOptionalBytes(1);
  282. $this->assertSame('1', $m->getOptionalBytes());
  283. // Set double.
  284. $m->setOptionalBytes(1.1);
  285. $this->assertSame('1.1', $m->getOptionalBytes());
  286. // Set bool.
  287. $m->setOptionalBytes(true);
  288. $this->assertSame('1', $m->getOptionalBytes());
  289. }
  290. public function testBytesFieldInvalidUTF8Success()
  291. {
  292. $m = new TestMessage();
  293. $hex = hex2bin("ff");
  294. $m->setOptionalBytes($hex);
  295. }
  296. #########################################################
  297. # Test message field.
  298. #########################################################
  299. public function testMessageField()
  300. {
  301. $m = new TestMessage();
  302. $sub_m = new TestMessage_Sub();
  303. $sub_m->setA(1);
  304. $m->setOptionalMessage($sub_m);
  305. $this->assertSame(1, $m->getOptionalMessage()->getA());
  306. $null = null;
  307. $m->setOptionalMessage($null);
  308. $this->assertNull($m->getOptionalMessage());
  309. }
  310. #########################################################
  311. # Test repeated field.
  312. #########################################################
  313. public function testRepeatedField()
  314. {
  315. $m = new TestMessage();
  316. $repeated_int32 = new RepeatedField(GPBType::INT32);
  317. $m->setRepeatedInt32($repeated_int32);
  318. $this->assertSame($repeated_int32, $m->getRepeatedInt32());
  319. }
  320. public function testRepeatedFieldViaArray()
  321. {
  322. $m = new TestMessage();
  323. $arr = array();
  324. $m->setRepeatedInt32($arr);
  325. $this->assertSame(0, count($m->getRepeatedInt32()));
  326. $arr = array(1, 2.1, "3");
  327. $m->setRepeatedInt32($arr);
  328. $this->assertTrue($m->getRepeatedInt32() instanceof RepeatedField);
  329. $this->assertSame("Google\Protobuf\Internal\RepeatedField",
  330. get_class($m->getRepeatedInt32()));
  331. $this->assertSame(3, count($m->getRepeatedInt32()));
  332. $this->assertSame(1, $m->getRepeatedInt32()[0]);
  333. $this->assertSame(2, $m->getRepeatedInt32()[1]);
  334. $this->assertSame(3, $m->getRepeatedInt32()[2]);
  335. $this->assertFalse($arr instanceof RepeatedField);
  336. }
  337. #########################################################
  338. # Test map field.
  339. #########################################################
  340. public function testMapField()
  341. {
  342. $m = new TestMessage();
  343. $map_int32_int32 = new MapField(GPBType::INT32, GPBType::INT32);
  344. $m->setMapInt32Int32($map_int32_int32);
  345. $this->assertSame($map_int32_int32, $m->getMapInt32Int32());
  346. }
  347. public function testMapFieldViaArray()
  348. {
  349. $m = new TestMessage();
  350. $dict = array();
  351. $m->setMapInt32Int32($dict);
  352. $this->assertSame(0, count($m->getMapInt32Int32()));
  353. $dict = array(5 => 5, 6.1 => 6.1, "7" => "7");
  354. $m->setMapInt32Int32($dict);
  355. $this->assertTrue($m->getMapInt32Int32() instanceof MapField);
  356. $this->assertSame(3, count($m->getMapInt32Int32()));
  357. $this->assertSame(5, $m->getMapInt32Int32()[5]);
  358. $this->assertSame(6, $m->getMapInt32Int32()[6]);
  359. $this->assertSame(7, $m->getMapInt32Int32()[7]);
  360. $this->assertFalse($dict instanceof MapField);
  361. }
  362. #########################################################
  363. # Test oneof field.
  364. #########################################################
  365. public function testOneofField() {
  366. $m = new TestMessage();
  367. $this->assertSame("", $m->getMyOneof());
  368. $m->setOneofInt32(1);
  369. $this->assertSame(1, $m->getOneofInt32());
  370. $this->assertSame(0.0, $m->getOneofFloat());
  371. $this->assertSame('', $m->getOneofString());
  372. $this->assertSame(NULL, $m->getOneofMessage());
  373. $this->assertSame("oneof_int32", $m->getMyOneof());
  374. $m->setOneofFloat(2.0);
  375. $this->assertSame(0, $m->getOneofInt32());
  376. $this->assertSame(2.0, $m->getOneofFloat());
  377. $this->assertSame('', $m->getOneofString());
  378. $this->assertSame(NULL, $m->getOneofMessage());
  379. $this->assertSame("oneof_float", $m->getMyOneof());
  380. $m->setOneofString('abc');
  381. $this->assertSame(0, $m->getOneofInt32());
  382. $this->assertSame(0.0, $m->getOneofFloat());
  383. $this->assertSame('abc', $m->getOneofString());
  384. $this->assertSame(NULL, $m->getOneofMessage());
  385. $this->assertSame("oneof_string", $m->getMyOneof());
  386. $sub_m = new TestMessage_Sub();
  387. $sub_m->setA(1);
  388. $m->setOneofMessage($sub_m);
  389. $this->assertSame(0, $m->getOneofInt32());
  390. $this->assertSame(0.0, $m->getOneofFloat());
  391. $this->assertSame('', $m->getOneofString());
  392. $this->assertSame(1, $m->getOneofMessage()->getA());
  393. $this->assertSame("oneof_message", $m->getMyOneof());
  394. }
  395. #########################################################
  396. # Test clear method.
  397. #########################################################
  398. public function testMessageClear()
  399. {
  400. $m = new TestMessage();
  401. $this->setFields($m);
  402. $this->expectFields($m);
  403. $m->clear();
  404. $this->expectEmptyFields($m);
  405. }
  406. #########################################################
  407. # Test mergeFrom method.
  408. #########################################################
  409. public function testMessageMergeFrom()
  410. {
  411. $m = new TestMessage();
  412. $this->setFields($m);
  413. $this->expectFields($m);
  414. $arr = $m->getOptionalMessage()->getB();
  415. $arr[] = 1;
  416. $n = new TestMessage();
  417. // Singular
  418. $n->setOptionalInt32(100);
  419. $sub1 = new TestMessage_Sub();
  420. $sub1->setA(101);
  421. $b = $sub1->getB();
  422. $b[] = 102;
  423. $sub1->setB($b);
  424. $n->setOptionalMessage($sub1);
  425. // Repeated
  426. $repeatedInt32 = $n->getRepeatedInt32();
  427. $repeatedInt32[] = 200;
  428. $n->setRepeatedInt32($repeatedInt32);
  429. $repeatedString = $n->getRepeatedString();
  430. $repeatedString[] = 'abc';
  431. $n->setRepeatedString($repeatedString);
  432. $sub2 = new TestMessage_Sub();
  433. $sub2->setA(201);
  434. $repeatedMessage = $n->getRepeatedMessage();
  435. $repeatedMessage[] = $sub2;
  436. $n->setRepeatedMessage($repeatedMessage);
  437. // Map
  438. $mapInt32Int32 = $n->getMapInt32Int32();
  439. $mapInt32Int32[1] = 300;
  440. $mapInt32Int32[-62] = 301;
  441. $n->setMapInt32Int32($mapInt32Int32);
  442. $mapStringString = $n->getMapStringString();
  443. $mapStringString['def'] = 'def';
  444. $n->setMapStringString($mapStringString);
  445. $mapInt32Message = $n->getMapInt32Message();
  446. $mapInt32Message[1] = new TestMessage_Sub();
  447. $mapInt32Message[1]->setA(302);
  448. $mapInt32Message[2] = new TestMessage_Sub();
  449. $mapInt32Message[2]->setA(303);
  450. $n->setMapInt32Message($mapInt32Message);
  451. $m->mergeFrom($n);
  452. $this->assertSame(100, $m->getOptionalInt32());
  453. $this->assertSame(42, $m->getOptionalUint32());
  454. $this->assertSame(101, $m->getOptionalMessage()->getA());
  455. $this->assertSame(2, count($m->getOptionalMessage()->getB()));
  456. $this->assertSame(1, $m->getOptionalMessage()->getB()[0]);
  457. $this->assertSame(102, $m->getOptionalMessage()->getB()[1]);
  458. $this->assertSame(3, count($m->getRepeatedInt32()));
  459. $this->assertSame(200, $m->getRepeatedInt32()[2]);
  460. $this->assertSame(2, count($m->getRepeatedUint32()));
  461. $this->assertSame(3, count($m->getRepeatedString()));
  462. $this->assertSame('abc', $m->getRepeatedString()[2]);
  463. $this->assertSame(3, count($m->getRepeatedMessage()));
  464. $this->assertSame(201, $m->getRepeatedMessage()[2]->getA());
  465. $this->assertSame(2, count($m->getMapInt32Int32()));
  466. $this->assertSame(300, $m->getMapInt32Int32()[1]);
  467. $this->assertSame(301, $m->getMapInt32Int32()[-62]);
  468. $this->assertSame(1, count($m->getMapUint32Uint32()));
  469. $this->assertSame(2, count($m->getMapStringString()));
  470. $this->assertSame('def', $m->getMapStringString()['def']);
  471. $this->assertSame(2, count($m->getMapInt32Message()));
  472. $this->assertSame(302, $m->getMapInt32Message()[1]->getA());
  473. $this->assertSame(303, $m->getMapInt32Message()[2]->getA());
  474. $this->assertSame("", $m->getMyOneof());
  475. // Check sub-messages are copied by value.
  476. $n->getOptionalMessage()->setA(-101);
  477. $this->assertSame(101, $m->getOptionalMessage()->getA());
  478. $repeatedMessage = $n->getRepeatedMessage();
  479. $repeatedMessage[0]->setA(-201);
  480. $n->setRepeatedMessage($repeatedMessage);
  481. $this->assertSame(201, $m->getRepeatedMessage()[2]->getA());
  482. $mapInt32Message = $n->getMapInt32Message();
  483. $mapInt32Message[1]->setA(-302);
  484. $n->setMapInt32Message($mapInt32Message);
  485. $this->assertSame(302, $m->getMapInt32Message()[1]->getA());
  486. // Test merge oneof.
  487. $m = new TestMessage();
  488. $n = new TestMessage();
  489. $n->setOneofInt32(1);
  490. $m->mergeFrom($n);
  491. $this->assertSame(1, $m->getOneofInt32());
  492. $sub = new TestMessage_Sub();
  493. $n->setOneofMessage($sub);
  494. $n->getOneofMessage()->setA(400);
  495. $m->mergeFrom($n);
  496. $this->assertSame(400, $m->getOneofMessage()->getA());
  497. $n->getOneofMessage()->setA(-400);
  498. $this->assertSame(400, $m->getOneofMessage()->getA());
  499. // Test all fields
  500. $m = new TestMessage();
  501. $n = new TestMessage();
  502. $this->setFields($m);
  503. $n->mergeFrom($m);
  504. $this->expectFields($n);
  505. }
  506. #########################################################
  507. # Test message/enum without namespace.
  508. #########################################################
  509. public function testMessageWithoutNamespace()
  510. {
  511. $m = new TestMessage();
  512. $sub = new NoNameSpaceMessage();
  513. $m->setOptionalNoNamespaceMessage($sub);
  514. $repeatedNoNamespaceMessage = $m->getRepeatedNoNamespaceMessage();
  515. $repeatedNoNamespaceMessage[] = new NoNameSpaceMessage();
  516. $m->setRepeatedNoNamespaceMessage($repeatedNoNamespaceMessage);
  517. $n = new NoNamespaceMessage();
  518. $n->setB(NoNamespaceMessage_NestedEnum::ZERO);
  519. }
  520. public function testEnumWithoutNamespace()
  521. {
  522. $m = new TestMessage();
  523. $m->setOptionalNoNamespaceEnum(NoNameSpaceEnum::VALUE_A);
  524. $repeatedNoNamespaceEnum = $m->getRepeatedNoNamespaceEnum();
  525. $repeatedNoNamespaceEnum[] = NoNameSpaceEnum::VALUE_A;
  526. $m->setRepeatedNoNamespaceEnum($repeatedNoNamespaceEnum);
  527. }
  528. #########################################################
  529. # Test message with given prefix.
  530. #########################################################
  531. public function testPrefixMessage()
  532. {
  533. $m = new TestIncludePrefixMessage();
  534. $n = new PrefixTestPrefix();
  535. $n->setA(1);
  536. $m->setPrefixMessage($n);
  537. $this->assertSame(1, $m->getPrefixMessage()->getA());
  538. }
  539. #########################################################
  540. # Test message with given namespace.
  541. #########################################################
  542. public function testNamespaceMessage()
  543. {
  544. $m = new TestIncludeNamespaceMessage();
  545. $n = new TestNamespace();
  546. $n->setA(1);
  547. $m->setNamespaceMessage($n);
  548. $this->assertSame(1, $m->getNamespaceMessage()->getA());
  549. $n = new TestEmptyNamespace();
  550. $n->setA(1);
  551. $m->setEmptyNamespaceMessage($n);
  552. $this->assertSame(1, $m->getEmptyNamespaceMessage()->getA());
  553. }
  554. #########################################################
  555. # Test prefix for reserved words.
  556. #########################################################
  557. public function testPrefixForReservedWords()
  558. {
  559. $m = new \Foo\TestMessage_Empty();
  560. $m = new \Foo\PBEmpty();
  561. $m = new \PrefixEmpty();
  562. $m = new \Foo\PBARRAY();
  563. }
  564. #########################################################
  565. # Test fluent setters.
  566. #########################################################
  567. public function testFluentSetters()
  568. {
  569. $m = (new TestMessage())
  570. ->setOptionalInt32(1)
  571. ->setOptionalUInt32(2);
  572. $this->assertSame(1, $m->getOptionalInt32());
  573. $this->assertSame(2, $m->getOptionalUInt32());
  574. }
  575. #########################################################
  576. # Test Reverse Field Order.
  577. #########################################################
  578. public function testReverseFieldOrder()
  579. {
  580. $m = new TestReverseFieldOrder();
  581. $m->setB("abc");
  582. $this->assertSame("abc", $m->getB());
  583. $this->assertNotSame("abc", $m->getA());
  584. }
  585. }