xref: /aosp_15_r20/external/protobuf/php/tests/MapFieldTest.php (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker<?php
2*1b3f573fSAndroid Build Coastguard Worker
3*1b3f573fSAndroid Build Coastguard Workerrequire_once('test_base.php');
4*1b3f573fSAndroid Build Coastguard Workerrequire_once('test_util.php');
5*1b3f573fSAndroid Build Coastguard Worker
6*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\GPBType;
7*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\MapField;
8*1b3f573fSAndroid Build Coastguard Workeruse Foo\TestMessage;
9*1b3f573fSAndroid Build Coastguard Workeruse Foo\TestMessage\Sub;
10*1b3f573fSAndroid Build Coastguard Worker
11*1b3f573fSAndroid Build Coastguard Workerclass MapFieldTest extends TestBase {
12*1b3f573fSAndroid Build Coastguard Worker
13*1b3f573fSAndroid Build Coastguard Worker    #########################################################
14*1b3f573fSAndroid Build Coastguard Worker    # Test int32 field.
15*1b3f573fSAndroid Build Coastguard Worker    #########################################################
16*1b3f573fSAndroid Build Coastguard Worker
17*1b3f573fSAndroid Build Coastguard Worker    public function testInt32() {
18*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT32, GPBType::INT32);
19*1b3f573fSAndroid Build Coastguard Worker
20*1b3f573fSAndroid Build Coastguard Worker        // Test integer argument.
21*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_INT32] = MAX_INT32;
22*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MAX_INT32, $arr[MAX_INT32]);
23*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_INT32] = MIN_INT32;
24*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MIN_INT32, $arr[MIN_INT32]);
25*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(2, count($arr));
26*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr[MAX_INT32]));
27*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr[MIN_INT32]));
28*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_INT32]);
29*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_INT32]);
30*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
31*1b3f573fSAndroid Build Coastguard Worker
32*1b3f573fSAndroid Build Coastguard Worker        // Test float argument.
33*1b3f573fSAndroid Build Coastguard Worker        $arr[1.9] = 1.9;
34*1b3f573fSAndroid Build Coastguard Worker        $arr[2.1] = 2.1;
35*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(1, $arr[1]);
36*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(2, $arr[2]);
37*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_INT32_FLOAT] = MAX_INT32_FLOAT;
38*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MAX_INT32, $arr[MAX_INT32]);
39*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_INT32_FLOAT] = MIN_INT32_FLOAT;
40*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MIN_INT32, $arr[MIN_INT32]);
41*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(4, count($arr));
42*1b3f573fSAndroid Build Coastguard Worker        unset($arr[1.9]);
43*1b3f573fSAndroid Build Coastguard Worker        unset($arr[2.9]);
44*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_INT32_FLOAT]);
45*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_INT32_FLOAT]);
46*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
47*1b3f573fSAndroid Build Coastguard Worker
48*1b3f573fSAndroid Build Coastguard Worker        // Test string argument.
49*1b3f573fSAndroid Build Coastguard Worker        $arr['2'] = '2';
50*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(2, $arr[2]);
51*1b3f573fSAndroid Build Coastguard Worker        $arr['3.1'] = '3.1';
52*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(3, $arr[3]);
53*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_INT32_STRING] = MAX_INT32_STRING;
54*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MAX_INT32, $arr[MAX_INT32]);
55*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(3, count($arr));
56*1b3f573fSAndroid Build Coastguard Worker        unset($arr['2']);
57*1b3f573fSAndroid Build Coastguard Worker        unset($arr['3.1']);
58*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_INT32_STRING]);
59*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
60*1b3f573fSAndroid Build Coastguard Worker
61*1b3f573fSAndroid Build Coastguard Worker        // Test foreach.
62*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT32, GPBType::INT32);
63*1b3f573fSAndroid Build Coastguard Worker        for ($i = 0; $i < 3; $i++) {
64*1b3f573fSAndroid Build Coastguard Worker          $arr[$i] = $i;
65*1b3f573fSAndroid Build Coastguard Worker        }
66*1b3f573fSAndroid Build Coastguard Worker        $i = 0;
67*1b3f573fSAndroid Build Coastguard Worker        $arr_test = [];
68*1b3f573fSAndroid Build Coastguard Worker        foreach ($arr as $key => $val) {
69*1b3f573fSAndroid Build Coastguard Worker          $this->assertSame($key, $val);
70*1b3f573fSAndroid Build Coastguard Worker          $arr_test[] = $key;
71*1b3f573fSAndroid Build Coastguard Worker          $i++;
72*1b3f573fSAndroid Build Coastguard Worker        }
73*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr_test[0]));
74*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr_test[1]));
75*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr_test[2]));
76*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(3, $i);
77*1b3f573fSAndroid Build Coastguard Worker    }
78*1b3f573fSAndroid Build Coastguard Worker
79*1b3f573fSAndroid Build Coastguard Worker    #########################################################
80*1b3f573fSAndroid Build Coastguard Worker    # Test uint32 field.
81*1b3f573fSAndroid Build Coastguard Worker    #########################################################
82*1b3f573fSAndroid Build Coastguard Worker
83*1b3f573fSAndroid Build Coastguard Worker    public function testUint32() {
84*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::UINT32, GPBType::UINT32);
85*1b3f573fSAndroid Build Coastguard Worker
86*1b3f573fSAndroid Build Coastguard Worker        // Test integer argument.
87*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_UINT32] = MAX_UINT32;
88*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(-1, $arr[-1]);
89*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
90*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_UINT32]);
91*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
92*1b3f573fSAndroid Build Coastguard Worker
93*1b3f573fSAndroid Build Coastguard Worker        $arr[-1] = -1;
94*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(-1, $arr[-1]);
95*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_UINT32] = MIN_UINT32;
96*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MIN_UINT32, $arr[MIN_UINT32]);
97*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(2, count($arr));
98*1b3f573fSAndroid Build Coastguard Worker        unset($arr[-1]);
99*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_UINT32]);
100*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
101*1b3f573fSAndroid Build Coastguard Worker
102*1b3f573fSAndroid Build Coastguard Worker        // Test float argument.
103*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_UINT32_FLOAT] = MAX_UINT32_FLOAT;
104*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(-1, $arr[-1]);
105*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
106*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_UINT32_FLOAT]);
107*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
108*1b3f573fSAndroid Build Coastguard Worker
109*1b3f573fSAndroid Build Coastguard Worker        $arr[3.1] = 3.1;
110*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(3, $arr[3]);
111*1b3f573fSAndroid Build Coastguard Worker        $arr[-1.0] = -1.0;
112*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(-1, $arr[-1]);
113*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_UINT32_FLOAT] = MIN_UINT32_FLOAT;
114*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MIN_UINT32, $arr[MIN_UINT32]);
115*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(3, count($arr));
116*1b3f573fSAndroid Build Coastguard Worker        unset($arr[3.1]);
117*1b3f573fSAndroid Build Coastguard Worker        unset($arr[-1.0]);
118*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_UINT32_FLOAT]);
119*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
120*1b3f573fSAndroid Build Coastguard Worker
121*1b3f573fSAndroid Build Coastguard Worker        // Test string argument.
122*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_UINT32_STRING] = MAX_UINT32_STRING;
123*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(-1, $arr[-1]);
124*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
125*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_UINT32_STRING]);
126*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
127*1b3f573fSAndroid Build Coastguard Worker
128*1b3f573fSAndroid Build Coastguard Worker        $arr['7'] = '7';
129*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(7, $arr[7]);
130*1b3f573fSAndroid Build Coastguard Worker        $arr['3.1'] = '3.1';
131*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(3, $arr[3]);
132*1b3f573fSAndroid Build Coastguard Worker        $arr['-1.0'] = '-1.0';
133*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(-1, $arr[-1]);
134*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_UINT32_STRING] = MIN_UINT32_STRING;
135*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(MIN_UINT32, $arr[MIN_UINT32]);
136*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(4, count($arr));
137*1b3f573fSAndroid Build Coastguard Worker        unset($arr['7']);
138*1b3f573fSAndroid Build Coastguard Worker        unset($arr['3.1']);
139*1b3f573fSAndroid Build Coastguard Worker        unset($arr['-1.0']);
140*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_UINT32_STRING]);
141*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
142*1b3f573fSAndroid Build Coastguard Worker    }
143*1b3f573fSAndroid Build Coastguard Worker
144*1b3f573fSAndroid Build Coastguard Worker    #########################################################
145*1b3f573fSAndroid Build Coastguard Worker    # Test int64 field.
146*1b3f573fSAndroid Build Coastguard Worker    #########################################################
147*1b3f573fSAndroid Build Coastguard Worker
148*1b3f573fSAndroid Build Coastguard Worker    public function testInt64() {
149*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT64, GPBType::INT64);
150*1b3f573fSAndroid Build Coastguard Worker
151*1b3f573fSAndroid Build Coastguard Worker        // Test integer argument.
152*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_INT64] = MAX_INT64;
153*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_INT64] = MIN_INT64;
154*1b3f573fSAndroid Build Coastguard Worker        if (PHP_INT_SIZE == 4) {
155*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_INT64_STRING, $arr[MAX_INT64_STRING]);
156*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MIN_INT64_STRING, $arr[MIN_INT64_STRING]);
157*1b3f573fSAndroid Build Coastguard Worker        } else {
158*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_INT64, $arr[MAX_INT64]);
159*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MIN_INT64, $arr[MIN_INT64]);
160*1b3f573fSAndroid Build Coastguard Worker        }
161*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(2, count($arr));
162*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_INT64]);
163*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_INT64]);
164*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
165*1b3f573fSAndroid Build Coastguard Worker
166*1b3f573fSAndroid Build Coastguard Worker        // Test float argument.
167*1b3f573fSAndroid Build Coastguard Worker        $arr[1.1] = 1.1;
168*1b3f573fSAndroid Build Coastguard Worker        if (PHP_INT_SIZE == 4) {
169*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame('1', $arr['1']);
170*1b3f573fSAndroid Build Coastguard Worker        } else {
171*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(1, $arr[1]);
172*1b3f573fSAndroid Build Coastguard Worker        }
173*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
174*1b3f573fSAndroid Build Coastguard Worker        unset($arr[1.1]);
175*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
176*1b3f573fSAndroid Build Coastguard Worker
177*1b3f573fSAndroid Build Coastguard Worker        // Test string argument.
178*1b3f573fSAndroid Build Coastguard Worker        $arr['2'] = '2';
179*1b3f573fSAndroid Build Coastguard Worker        $arr['3.1'] = '3.1';
180*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_INT64_STRING] = MAX_INT64_STRING;
181*1b3f573fSAndroid Build Coastguard Worker        $arr[MIN_INT64_STRING] = MIN_INT64_STRING;
182*1b3f573fSAndroid Build Coastguard Worker        if (PHP_INT_SIZE == 4) {
183*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame('2', $arr['2']);
184*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame('3', $arr['3']);
185*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_INT64_STRING, $arr[MAX_INT64_STRING]);
186*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MIN_INT64_STRING, $arr[MIN_INT64_STRING]);
187*1b3f573fSAndroid Build Coastguard Worker        } else {
188*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(2, $arr[2]);
189*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(3, $arr[3]);
190*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_INT64, $arr[MAX_INT64]);
191*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MIN_INT64, $arr[MIN_INT64]);
192*1b3f573fSAndroid Build Coastguard Worker        }
193*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(4, count($arr));
194*1b3f573fSAndroid Build Coastguard Worker        unset($arr['2']);
195*1b3f573fSAndroid Build Coastguard Worker        unset($arr['3.1']);
196*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_INT64_STRING]);
197*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MIN_INT64_STRING]);
198*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
199*1b3f573fSAndroid Build Coastguard Worker    }
200*1b3f573fSAndroid Build Coastguard Worker
201*1b3f573fSAndroid Build Coastguard Worker    #########################################################
202*1b3f573fSAndroid Build Coastguard Worker    # Test uint64 field.
203*1b3f573fSAndroid Build Coastguard Worker    #########################################################
204*1b3f573fSAndroid Build Coastguard Worker
205*1b3f573fSAndroid Build Coastguard Worker    public function testUint64() {
206*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::UINT64, GPBType::UINT64);
207*1b3f573fSAndroid Build Coastguard Worker
208*1b3f573fSAndroid Build Coastguard Worker        // Test integer argument.
209*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_UINT64] = MAX_UINT64;
210*1b3f573fSAndroid Build Coastguard Worker        if (PHP_INT_SIZE == 4) {
211*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_UINT64_STRING, $arr[MAX_UINT64_STRING]);
212*1b3f573fSAndroid Build Coastguard Worker        } else {
213*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_UINT64, $arr[MAX_UINT64]);
214*1b3f573fSAndroid Build Coastguard Worker        }
215*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
216*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_UINT64]);
217*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
218*1b3f573fSAndroid Build Coastguard Worker
219*1b3f573fSAndroid Build Coastguard Worker        // Test float argument.
220*1b3f573fSAndroid Build Coastguard Worker        $arr[1.1] = 1.1;
221*1b3f573fSAndroid Build Coastguard Worker        if (PHP_INT_SIZE == 4) {
222*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame('1', $arr['1']);
223*1b3f573fSAndroid Build Coastguard Worker        } else {
224*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(1, $arr[1]);
225*1b3f573fSAndroid Build Coastguard Worker        }
226*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
227*1b3f573fSAndroid Build Coastguard Worker        unset($arr[1.1]);
228*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
229*1b3f573fSAndroid Build Coastguard Worker
230*1b3f573fSAndroid Build Coastguard Worker        // Test string argument.
231*1b3f573fSAndroid Build Coastguard Worker        $arr['2'] = '2';
232*1b3f573fSAndroid Build Coastguard Worker        $arr['3.1'] = '3.1';
233*1b3f573fSAndroid Build Coastguard Worker        $arr[MAX_UINT64_STRING] = MAX_UINT64_STRING;
234*1b3f573fSAndroid Build Coastguard Worker
235*1b3f573fSAndroid Build Coastguard Worker        if (PHP_INT_SIZE == 4) {
236*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame('2', $arr['2']);
237*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame('3', $arr['3']);
238*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_UINT64_STRING, $arr[MAX_UINT64_STRING]);
239*1b3f573fSAndroid Build Coastguard Worker        } else {
240*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(2, $arr[2]);
241*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(3, $arr[3]);
242*1b3f573fSAndroid Build Coastguard Worker            $this->assertSame(MAX_UINT64, $arr[MAX_UINT64]);
243*1b3f573fSAndroid Build Coastguard Worker        }
244*1b3f573fSAndroid Build Coastguard Worker
245*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(3, count($arr));
246*1b3f573fSAndroid Build Coastguard Worker        unset($arr['2']);
247*1b3f573fSAndroid Build Coastguard Worker        unset($arr['3.1']);
248*1b3f573fSAndroid Build Coastguard Worker        unset($arr[MAX_UINT64_STRING]);
249*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
250*1b3f573fSAndroid Build Coastguard Worker    }
251*1b3f573fSAndroid Build Coastguard Worker
252*1b3f573fSAndroid Build Coastguard Worker    #########################################################
253*1b3f573fSAndroid Build Coastguard Worker    # Test float field.
254*1b3f573fSAndroid Build Coastguard Worker    #########################################################
255*1b3f573fSAndroid Build Coastguard Worker
256*1b3f573fSAndroid Build Coastguard Worker    public function testFloat() {
257*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT32, GPBType::FLOAT);
258*1b3f573fSAndroid Build Coastguard Worker
259*1b3f573fSAndroid Build Coastguard Worker        // Test set.
260*1b3f573fSAndroid Build Coastguard Worker        $arr[0] = 1;
261*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(1.0, $arr[0], MAX_FLOAT_DIFF);
262*1b3f573fSAndroid Build Coastguard Worker
263*1b3f573fSAndroid Build Coastguard Worker        $arr[1] = 1.1;
264*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(1.1, $arr[1], MAX_FLOAT_DIFF);
265*1b3f573fSAndroid Build Coastguard Worker
266*1b3f573fSAndroid Build Coastguard Worker        $arr[2] = '2';
267*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(2.0, $arr[2], MAX_FLOAT_DIFF);
268*1b3f573fSAndroid Build Coastguard Worker        $arr[3] = '3.1';
269*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(3.1, $arr[3], MAX_FLOAT_DIFF);
270*1b3f573fSAndroid Build Coastguard Worker
271*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(4, count($arr));
272*1b3f573fSAndroid Build Coastguard Worker    }
273*1b3f573fSAndroid Build Coastguard Worker
274*1b3f573fSAndroid Build Coastguard Worker    #########################################################
275*1b3f573fSAndroid Build Coastguard Worker    # Test double field.
276*1b3f573fSAndroid Build Coastguard Worker    #########################################################
277*1b3f573fSAndroid Build Coastguard Worker
278*1b3f573fSAndroid Build Coastguard Worker    public function testDouble() {
279*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT32, GPBType::DOUBLE);
280*1b3f573fSAndroid Build Coastguard Worker
281*1b3f573fSAndroid Build Coastguard Worker        // Test set.
282*1b3f573fSAndroid Build Coastguard Worker        $arr[0] = 1;
283*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(1.0, $arr[0], MAX_FLOAT_DIFF);
284*1b3f573fSAndroid Build Coastguard Worker
285*1b3f573fSAndroid Build Coastguard Worker        $arr[1] = 1.1;
286*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(1.1, $arr[1], MAX_FLOAT_DIFF);
287*1b3f573fSAndroid Build Coastguard Worker
288*1b3f573fSAndroid Build Coastguard Worker        $arr[2] = '2';
289*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(2.0, $arr[2], MAX_FLOAT_DIFF);
290*1b3f573fSAndroid Build Coastguard Worker        $arr[3] = '3.1';
291*1b3f573fSAndroid Build Coastguard Worker        $this->assertFloatEquals(3.1, $arr[3], MAX_FLOAT_DIFF);
292*1b3f573fSAndroid Build Coastguard Worker
293*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(4, count($arr));
294*1b3f573fSAndroid Build Coastguard Worker    }
295*1b3f573fSAndroid Build Coastguard Worker
296*1b3f573fSAndroid Build Coastguard Worker    #########################################################
297*1b3f573fSAndroid Build Coastguard Worker    # Test bool field.
298*1b3f573fSAndroid Build Coastguard Worker    #########################################################
299*1b3f573fSAndroid Build Coastguard Worker
300*1b3f573fSAndroid Build Coastguard Worker    public function testBool() {
301*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::BOOL, GPBType::BOOL);
302*1b3f573fSAndroid Build Coastguard Worker
303*1b3f573fSAndroid Build Coastguard Worker        // Test boolean.
304*1b3f573fSAndroid Build Coastguard Worker        $arr[True] = True;
305*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(True, $arr[True]);
306*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
307*1b3f573fSAndroid Build Coastguard Worker        unset($arr[True]);
308*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
309*1b3f573fSAndroid Build Coastguard Worker
310*1b3f573fSAndroid Build Coastguard Worker        $arr[False] = False;
311*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(False, $arr[False]);
312*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
313*1b3f573fSAndroid Build Coastguard Worker        unset($arr[False]);
314*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
315*1b3f573fSAndroid Build Coastguard Worker
316*1b3f573fSAndroid Build Coastguard Worker        // Test integer.
317*1b3f573fSAndroid Build Coastguard Worker        $arr[-1] = -1;
318*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(True, $arr[True]);
319*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
320*1b3f573fSAndroid Build Coastguard Worker        unset($arr[-1]);
321*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
322*1b3f573fSAndroid Build Coastguard Worker
323*1b3f573fSAndroid Build Coastguard Worker        $arr[0] = 0;
324*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(False, $arr[False]);
325*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
326*1b3f573fSAndroid Build Coastguard Worker        unset($arr[0]);
327*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
328*1b3f573fSAndroid Build Coastguard Worker
329*1b3f573fSAndroid Build Coastguard Worker        // Test float.
330*1b3f573fSAndroid Build Coastguard Worker        $arr[1.1] = 1.1;
331*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(True, $arr[True]);
332*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
333*1b3f573fSAndroid Build Coastguard Worker        unset($arr[1.1]);
334*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
335*1b3f573fSAndroid Build Coastguard Worker
336*1b3f573fSAndroid Build Coastguard Worker        $arr[0.0] = 0.0;
337*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(False, $arr[False]);
338*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
339*1b3f573fSAndroid Build Coastguard Worker        unset($arr[0.0]);
340*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
341*1b3f573fSAndroid Build Coastguard Worker
342*1b3f573fSAndroid Build Coastguard Worker        // Test string.
343*1b3f573fSAndroid Build Coastguard Worker        $arr['a'] = 'a';
344*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(True, $arr[True]);
345*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
346*1b3f573fSAndroid Build Coastguard Worker        unset($arr['a']);
347*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
348*1b3f573fSAndroid Build Coastguard Worker
349*1b3f573fSAndroid Build Coastguard Worker        $arr[''] = '';
350*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(False, $arr[False]);
351*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
352*1b3f573fSAndroid Build Coastguard Worker        unset($arr['']);
353*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
354*1b3f573fSAndroid Build Coastguard Worker    }
355*1b3f573fSAndroid Build Coastguard Worker
356*1b3f573fSAndroid Build Coastguard Worker    #########################################################
357*1b3f573fSAndroid Build Coastguard Worker    # Test string field.
358*1b3f573fSAndroid Build Coastguard Worker    #########################################################
359*1b3f573fSAndroid Build Coastguard Worker
360*1b3f573fSAndroid Build Coastguard Worker    public function testString() {
361*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::STRING, GPBType::STRING);
362*1b3f573fSAndroid Build Coastguard Worker
363*1b3f573fSAndroid Build Coastguard Worker        // Test set.
364*1b3f573fSAndroid Build Coastguard Worker        $arr['abc'] = 'abc';
365*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame('abc', $arr['abc']);
366*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
367*1b3f573fSAndroid Build Coastguard Worker        unset($arr['abc']);
368*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
369*1b3f573fSAndroid Build Coastguard Worker
370*1b3f573fSAndroid Build Coastguard Worker        $arr[1] = 1;
371*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame('1', $arr['1']);
372*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
373*1b3f573fSAndroid Build Coastguard Worker        unset($arr[1]);
374*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
375*1b3f573fSAndroid Build Coastguard Worker
376*1b3f573fSAndroid Build Coastguard Worker        $arr[1.1] = 1.1;
377*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame('1.1', $arr['1.1']);
378*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
379*1b3f573fSAndroid Build Coastguard Worker        unset($arr[1.1]);
380*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
381*1b3f573fSAndroid Build Coastguard Worker
382*1b3f573fSAndroid Build Coastguard Worker        $arr[True] = True;
383*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame('1', $arr['1']);
384*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
385*1b3f573fSAndroid Build Coastguard Worker        unset($arr[True]);
386*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(0, count($arr));
387*1b3f573fSAndroid Build Coastguard Worker
388*1b3f573fSAndroid Build Coastguard Worker        // Test foreach.
389*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::STRING, GPBType::STRING);
390*1b3f573fSAndroid Build Coastguard Worker        for ($i = 0; $i < 3; $i++) {
391*1b3f573fSAndroid Build Coastguard Worker          $arr[$i] = $i;
392*1b3f573fSAndroid Build Coastguard Worker        }
393*1b3f573fSAndroid Build Coastguard Worker        $i = 0;
394*1b3f573fSAndroid Build Coastguard Worker        $arr_test = [];
395*1b3f573fSAndroid Build Coastguard Worker        foreach ($arr as $key => $val) {
396*1b3f573fSAndroid Build Coastguard Worker          $this->assertSame($key, $val);
397*1b3f573fSAndroid Build Coastguard Worker          $arr_test[] = $key;
398*1b3f573fSAndroid Build Coastguard Worker          $i++;
399*1b3f573fSAndroid Build Coastguard Worker        }
400*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr_test['0']));
401*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr_test['1']));
402*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($arr_test['2']));
403*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(3, $i);
404*1b3f573fSAndroid Build Coastguard Worker    }
405*1b3f573fSAndroid Build Coastguard Worker
406*1b3f573fSAndroid Build Coastguard Worker    #########################################################
407*1b3f573fSAndroid Build Coastguard Worker    # Test message field.
408*1b3f573fSAndroid Build Coastguard Worker    #########################################################
409*1b3f573fSAndroid Build Coastguard Worker
410*1b3f573fSAndroid Build Coastguard Worker    public function testMessage() {
411*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT32,
412*1b3f573fSAndroid Build Coastguard Worker            GPBType::MESSAGE, Sub::class);
413*1b3f573fSAndroid Build Coastguard Worker
414*1b3f573fSAndroid Build Coastguard Worker        // Test append.
415*1b3f573fSAndroid Build Coastguard Worker        $sub_m = new Sub();
416*1b3f573fSAndroid Build Coastguard Worker        $sub_m->setA(1);
417*1b3f573fSAndroid Build Coastguard Worker        $arr[0] = $sub_m;
418*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(1, $arr[0]->getA());
419*1b3f573fSAndroid Build Coastguard Worker
420*1b3f573fSAndroid Build Coastguard Worker        $this->assertEquals(1, count($arr));
421*1b3f573fSAndroid Build Coastguard Worker
422*1b3f573fSAndroid Build Coastguard Worker        // Test foreach.
423*1b3f573fSAndroid Build Coastguard Worker        $arr = new MapField(GPBType::INT32,
424*1b3f573fSAndroid Build Coastguard Worker            GPBType::MESSAGE, Sub::class);
425*1b3f573fSAndroid Build Coastguard Worker        for ($i = 0; $i < 3; $i++) {
426*1b3f573fSAndroid Build Coastguard Worker          $arr[$i] = new Sub();;
427*1b3f573fSAndroid Build Coastguard Worker          $arr[$i]->setA($i);
428*1b3f573fSAndroid Build Coastguard Worker        }
429*1b3f573fSAndroid Build Coastguard Worker        $i = 0;
430*1b3f573fSAndroid Build Coastguard Worker        $key_test = [];
431*1b3f573fSAndroid Build Coastguard Worker        $value_test = [];
432*1b3f573fSAndroid Build Coastguard Worker        foreach ($arr as $key => $val) {
433*1b3f573fSAndroid Build Coastguard Worker          $key_test[] = $key;
434*1b3f573fSAndroid Build Coastguard Worker          $value_test[] = $val->getA();
435*1b3f573fSAndroid Build Coastguard Worker          $i++;
436*1b3f573fSAndroid Build Coastguard Worker        }
437*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($key_test['0']));
438*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($key_test['1']));
439*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($key_test['2']));
440*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($value_test['0']));
441*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($value_test['1']));
442*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(isset($value_test['2']));
443*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame(3, $i);
444*1b3f573fSAndroid Build Coastguard Worker    }
445*1b3f573fSAndroid Build Coastguard Worker
446*1b3f573fSAndroid Build Coastguard Worker    #########################################################
447*1b3f573fSAndroid Build Coastguard Worker    # Test reference in map
448*1b3f573fSAndroid Build Coastguard Worker    #########################################################
449*1b3f573fSAndroid Build Coastguard Worker
450*1b3f573fSAndroid Build Coastguard Worker    public function testMapElementIsReference()
451*1b3f573fSAndroid Build Coastguard Worker    {
452*1b3f573fSAndroid Build Coastguard Worker        // Bool elements
453*1b3f573fSAndroid Build Coastguard Worker        $values = [true => true];
454*1b3f573fSAndroid Build Coastguard Worker        array_walk($values, function (&$value) {});
455*1b3f573fSAndroid Build Coastguard Worker        $m = new TestMessage();
456*1b3f573fSAndroid Build Coastguard Worker        $m->setMapBoolBool($values);
457*1b3f573fSAndroid Build Coastguard Worker
458*1b3f573fSAndroid Build Coastguard Worker        // Int32 elements
459*1b3f573fSAndroid Build Coastguard Worker        $values = [1 => 1];
460*1b3f573fSAndroid Build Coastguard Worker        array_walk($values, function (&$value) {});
461*1b3f573fSAndroid Build Coastguard Worker        $m = new TestMessage();
462*1b3f573fSAndroid Build Coastguard Worker        $m->setMapInt32Int32($values);
463*1b3f573fSAndroid Build Coastguard Worker
464*1b3f573fSAndroid Build Coastguard Worker        // Double elements
465*1b3f573fSAndroid Build Coastguard Worker        $values = [1 => 1.0];
466*1b3f573fSAndroid Build Coastguard Worker        array_walk($values, function (&$value) {});
467*1b3f573fSAndroid Build Coastguard Worker        $m = new TestMessage();
468*1b3f573fSAndroid Build Coastguard Worker        $m->setMapInt32Double($values);
469*1b3f573fSAndroid Build Coastguard Worker
470*1b3f573fSAndroid Build Coastguard Worker        // String elements
471*1b3f573fSAndroid Build Coastguard Worker        $values = ['a' => 'a'];
472*1b3f573fSAndroid Build Coastguard Worker        array_walk($values, function (&$value) {});
473*1b3f573fSAndroid Build Coastguard Worker        $m = new TestMessage();
474*1b3f573fSAndroid Build Coastguard Worker        $m->setMapStringString($values);
475*1b3f573fSAndroid Build Coastguard Worker
476*1b3f573fSAndroid Build Coastguard Worker        // Message elements
477*1b3f573fSAndroid Build Coastguard Worker        $values = [1 => new Sub()];
478*1b3f573fSAndroid Build Coastguard Worker        array_walk($values, function (&$value) {});
479*1b3f573fSAndroid Build Coastguard Worker        $m = new TestMessage();
480*1b3f573fSAndroid Build Coastguard Worker        $m->setMapInt32Message($values);
481*1b3f573fSAndroid Build Coastguard Worker
482*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue(true);
483*1b3f573fSAndroid Build Coastguard Worker    }
484*1b3f573fSAndroid Build Coastguard Worker
485*1b3f573fSAndroid Build Coastguard Worker    #########################################################
486*1b3f573fSAndroid Build Coastguard Worker    # Test equality
487*1b3f573fSAndroid Build Coastguard Worker    #########################################################
488*1b3f573fSAndroid Build Coastguard Worker
489*1b3f573fSAndroid Build Coastguard Worker    public function testEquality()
490*1b3f573fSAndroid Build Coastguard Worker    {
491*1b3f573fSAndroid Build Coastguard Worker        $map = new MapField(GPBType::INT32, GPBType::INT32);
492*1b3f573fSAndroid Build Coastguard Worker        $map2 = new MapField(GPBType::INT32, GPBType::INT32);
493*1b3f573fSAndroid Build Coastguard Worker
494*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue($map == $map2);
495*1b3f573fSAndroid Build Coastguard Worker
496*1b3f573fSAndroid Build Coastguard Worker        $map[1] = 2;
497*1b3f573fSAndroid Build Coastguard Worker
498*1b3f573fSAndroid Build Coastguard Worker        $this->assertFalse($map == $map2);
499*1b3f573fSAndroid Build Coastguard Worker
500*1b3f573fSAndroid Build Coastguard Worker        $map2[1] = 2;
501*1b3f573fSAndroid Build Coastguard Worker
502*1b3f573fSAndroid Build Coastguard Worker        $this->assertTrue($map == $map2);
503*1b3f573fSAndroid Build Coastguard Worker
504*1b3f573fSAndroid Build Coastguard Worker        // Arrays of different types always compare false.
505*1b3f573fSAndroid Build Coastguard Worker        $this->assertFalse(new MapField(GPBType::INT32, GPBType::INT32) ==
506*1b3f573fSAndroid Build Coastguard Worker                           new MapField(GPBType::INT32, GPBType::INT64));
507*1b3f573fSAndroid Build Coastguard Worker        $this->assertFalse(new MapField(GPBType::INT32, GPBType::INT32) ==
508*1b3f573fSAndroid Build Coastguard Worker                           new MapField(GPBType::INT64, GPBType::INT32));
509*1b3f573fSAndroid Build Coastguard Worker        $this->assertFalse(
510*1b3f573fSAndroid Build Coastguard Worker            new MapField(GPBType::INT32, GPBType::MESSAGE, TestMessage::class) ==
511*1b3f573fSAndroid Build Coastguard Worker            new MapField(GPBType::INT32, GPBType::MESSAGE, Sub::class));
512*1b3f573fSAndroid Build Coastguard Worker    }
513*1b3f573fSAndroid Build Coastguard Worker
514*1b3f573fSAndroid Build Coastguard Worker    #########################################################
515*1b3f573fSAndroid Build Coastguard Worker    # Test clone
516*1b3f573fSAndroid Build Coastguard Worker    #########################################################
517*1b3f573fSAndroid Build Coastguard Worker
518*1b3f573fSAndroid Build Coastguard Worker    public function testClone()
519*1b3f573fSAndroid Build Coastguard Worker    {
520*1b3f573fSAndroid Build Coastguard Worker        $map = new MapField(GPBType::INT32,
521*1b3f573fSAndroid Build Coastguard Worker            GPBType::MESSAGE, Sub::class);
522*1b3f573fSAndroid Build Coastguard Worker
523*1b3f573fSAndroid Build Coastguard Worker        // Test append.
524*1b3f573fSAndroid Build Coastguard Worker        $sub_m = new Sub();
525*1b3f573fSAndroid Build Coastguard Worker        $sub_m->setA(1);
526*1b3f573fSAndroid Build Coastguard Worker        $map[0] = $sub_m;
527*1b3f573fSAndroid Build Coastguard Worker
528*1b3f573fSAndroid Build Coastguard Worker        $map2 = clone $map;
529*1b3f573fSAndroid Build Coastguard Worker        $this->assertSame($map[0], $map2[0]);
530*1b3f573fSAndroid Build Coastguard Worker    }
531*1b3f573fSAndroid Build Coastguard Worker
532*1b3f573fSAndroid Build Coastguard Worker    #########################################################
533*1b3f573fSAndroid Build Coastguard Worker    # Test memory leak
534*1b3f573fSAndroid Build Coastguard Worker    #########################################################
535*1b3f573fSAndroid Build Coastguard Worker
536*1b3f573fSAndroid Build Coastguard Worker    // TODO(teboring): Add it back.
537*1b3f573fSAndroid Build Coastguard Worker    // public function testCycleLeak()
538*1b3f573fSAndroid Build Coastguard Worker    // {
539*1b3f573fSAndroid Build Coastguard Worker    //     $arr = new MapField(GPBType::INT32,
540*1b3f573fSAndroid Build Coastguard Worker    //         GPBType::MESSAGE, TestMessage::class);
541*1b3f573fSAndroid Build Coastguard Worker    //     $arr[0] = new TestMessage;
542*1b3f573fSAndroid Build Coastguard Worker    //     $arr[0]->SetMapRecursive($arr);
543*1b3f573fSAndroid Build Coastguard Worker
544*1b3f573fSAndroid Build Coastguard Worker    //     // Clean up memory before test.
545*1b3f573fSAndroid Build Coastguard Worker    //     gc_collect_cycles();
546*1b3f573fSAndroid Build Coastguard Worker    //     $start = memory_get_usage();
547*1b3f573fSAndroid Build Coastguard Worker    //     unset($arr);
548*1b3f573fSAndroid Build Coastguard Worker
549*1b3f573fSAndroid Build Coastguard Worker    //     // Explicitly trigger garbage collection.
550*1b3f573fSAndroid Build Coastguard Worker    //     gc_collect_cycles();
551*1b3f573fSAndroid Build Coastguard Worker
552*1b3f573fSAndroid Build Coastguard Worker    //     $end = memory_get_usage();
553*1b3f573fSAndroid Build Coastguard Worker    //     $this->assertLessThan($start, $end);
554*1b3f573fSAndroid Build Coastguard Worker    // }
555*1b3f573fSAndroid Build Coastguard Worker}
556