|
@@ -1375,6 +1375,78 @@ class GeneratedClassTest extends TestBase
|
|
|
$this->assertTrue(true);
|
|
|
}
|
|
|
|
|
|
+ public function testReferenceInArrayConstructor()
|
|
|
+ {
|
|
|
+ $keys = [[
|
|
|
+ 'optional_bool' => true,
|
|
|
+ 'repeated_bool' => [true],
|
|
|
+ 'map_bool_bool' => [true => true],
|
|
|
+ 'optional_double' => 1.0,
|
|
|
+ 'repeated_double' => [1.0],
|
|
|
+ 'map_int32_double' => [1 => 1.0],
|
|
|
+ 'optional_int32' => 1,
|
|
|
+ 'repeated_int32' => [1],
|
|
|
+ 'map_int32_int32' => [1 => 1],
|
|
|
+ 'optional_string' => 'a',
|
|
|
+ 'repeated_string' => ['a'],
|
|
|
+ 'map_string_string' => ['a' => 'a'],
|
|
|
+ 'optional_message' => ['a' => 1],
|
|
|
+ 'repeated_message' => [['a' => 1]],
|
|
|
+ 'map_int32_message' => [1 => ['a' => 1]],
|
|
|
+ ]];
|
|
|
+
|
|
|
+ foreach ($keys as &$key) {
|
|
|
+ foreach ($key as $id => &$value) {
|
|
|
+ if ($id === 'repeated_bool') {
|
|
|
+ foreach ($value as &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'map_bool_bool') {
|
|
|
+ foreach ($value as $mapKey => &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'repeated_double') {
|
|
|
+ foreach ($value as &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'map_int32_double') {
|
|
|
+ foreach ($value as $mapKey => &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'repeated_int32') {
|
|
|
+ foreach ($value as &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'map_int32_int32') {
|
|
|
+ foreach ($value as $mapKey => &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'repeated_string') {
|
|
|
+ foreach ($value as &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'map_string_string') {
|
|
|
+ foreach ($value as $mapKey => &$element) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'optional_message') {
|
|
|
+ $value = new Sub($value);
|
|
|
+ }
|
|
|
+ if ($id === 'repeated_message') {
|
|
|
+ foreach ($value as &$element) {
|
|
|
+ $element = new Sub($element);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($id === 'map_int32_message') {
|
|
|
+ foreach ($value as $mapKey => &$element) {
|
|
|
+ $element = new Sub($element);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $key = new TestMessage($key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
#########################################################
|
|
|
# Test message equals.
|
|
|
#########################################################
|
|
@@ -1387,4 +1459,35 @@ class GeneratedClassTest extends TestBase
|
|
|
TestUtil::setTestMessage($n);
|
|
|
$this->assertEquals($m, $n);
|
|
|
}
|
|
|
+
|
|
|
+ #########################################################
|
|
|
+ # Test reference of value
|
|
|
+ #########################################################
|
|
|
+
|
|
|
+ public function testValueIsReference()
|
|
|
+ {
|
|
|
+ // Bool element
|
|
|
+ $values = [true];
|
|
|
+ array_walk($values, function (&$value) {});
|
|
|
+ $m = new TestMessage();
|
|
|
+ $m->setOptionalBool($values[0]);
|
|
|
+
|
|
|
+ // Int32 element
|
|
|
+ $values = [1];
|
|
|
+ array_walk($values, function (&$value) {});
|
|
|
+ $m = new TestMessage();
|
|
|
+ $m->setOptionalInt32($values[0]);
|
|
|
+
|
|
|
+ // Double element
|
|
|
+ $values = [1.0];
|
|
|
+ array_walk($values, function (&$value) {});
|
|
|
+ $m = new TestMessage();
|
|
|
+ $m->setOptionalDouble($values[0]);
|
|
|
+
|
|
|
+ // String element
|
|
|
+ $values = ['a'];
|
|
|
+ array_walk($values, function (&$value) {});
|
|
|
+ $m = new TestMessage();
|
|
|
+ $m->setOptionalString($values[0]);
|
|
|
+ }
|
|
|
}
|