generated_class_test.php 23 KB

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