1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements C++ Base Library
3*35238bceSAndroid Build Coastguard Worker * -----------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Array template backed by memory pool.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "dePoolArray.hpp"
25*35238bceSAndroid Build Coastguard Worker
26*35238bceSAndroid Build Coastguard Worker #include <algorithm>
27*35238bceSAndroid Build Coastguard Worker #include <vector>
28*35238bceSAndroid Build Coastguard Worker
29*35238bceSAndroid Build Coastguard Worker namespace de
30*35238bceSAndroid Build Coastguard Worker {
31*35238bceSAndroid Build Coastguard Worker
intArrayTest(void)32*35238bceSAndroid Build Coastguard Worker static void intArrayTest(void)
33*35238bceSAndroid Build Coastguard Worker {
34*35238bceSAndroid Build Coastguard Worker MemPool pool;
35*35238bceSAndroid Build Coastguard Worker PoolArray<int> arr(&pool);
36*35238bceSAndroid Build Coastguard Worker PoolArray<uint16_t> arr16(&pool);
37*35238bceSAndroid Build Coastguard Worker int i;
38*35238bceSAndroid Build Coastguard Worker
39*35238bceSAndroid Build Coastguard Worker /* Test pushBack(). */
40*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
41*35238bceSAndroid Build Coastguard Worker {
42*35238bceSAndroid Build Coastguard Worker /* Unused alloc to try to break alignments. */
43*35238bceSAndroid Build Coastguard Worker pool.alloc(1);
44*35238bceSAndroid Build Coastguard Worker
45*35238bceSAndroid Build Coastguard Worker arr.pushBack(i);
46*35238bceSAndroid Build Coastguard Worker arr16.pushBack((int16_t)i);
47*35238bceSAndroid Build Coastguard Worker }
48*35238bceSAndroid Build Coastguard Worker
49*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 5000);
50*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.size() == 5000);
51*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
52*35238bceSAndroid Build Coastguard Worker {
53*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == i);
54*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16[i] == i);
55*35238bceSAndroid Build Coastguard Worker }
56*35238bceSAndroid Build Coastguard Worker
57*35238bceSAndroid Build Coastguard Worker /* Test popBack(). */
58*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 1000; i++)
59*35238bceSAndroid Build Coastguard Worker {
60*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.popBack() == (4999 - i));
61*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.popBack() == (4999 - i));
62*35238bceSAndroid Build Coastguard Worker }
63*35238bceSAndroid Build Coastguard Worker
64*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 4000);
65*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.size() == 4000);
66*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 4000; i++)
67*35238bceSAndroid Build Coastguard Worker {
68*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == i);
69*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16[i] == i);
70*35238bceSAndroid Build Coastguard Worker }
71*35238bceSAndroid Build Coastguard Worker
72*35238bceSAndroid Build Coastguard Worker /* Test resize(). */
73*35238bceSAndroid Build Coastguard Worker arr.resize(1000);
74*35238bceSAndroid Build Coastguard Worker arr16.resize(1000);
75*35238bceSAndroid Build Coastguard Worker for (i = 1000; i < 5000; i++)
76*35238bceSAndroid Build Coastguard Worker {
77*35238bceSAndroid Build Coastguard Worker arr.pushBack(i);
78*35238bceSAndroid Build Coastguard Worker arr16.pushBack((int16_t)i);
79*35238bceSAndroid Build Coastguard Worker }
80*35238bceSAndroid Build Coastguard Worker
81*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 5000);
82*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.size() == 5000);
83*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
84*35238bceSAndroid Build Coastguard Worker {
85*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == i);
86*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16[i] == i);
87*35238bceSAndroid Build Coastguard Worker }
88*35238bceSAndroid Build Coastguard Worker
89*35238bceSAndroid Build Coastguard Worker /* Test set() and pushBack() with reserve(). */
90*35238bceSAndroid Build Coastguard Worker PoolArray<int> arr2(&pool);
91*35238bceSAndroid Build Coastguard Worker arr2.resize(1500);
92*35238bceSAndroid Build Coastguard Worker arr2.reserve(2000);
93*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 1500; i++)
94*35238bceSAndroid Build Coastguard Worker arr2[i] = i;
95*35238bceSAndroid Build Coastguard Worker for (; i < 5000; i++)
96*35238bceSAndroid Build Coastguard Worker arr2.pushBack(i);
97*35238bceSAndroid Build Coastguard Worker
98*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr2.size() == 5000);
99*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
100*35238bceSAndroid Build Coastguard Worker {
101*35238bceSAndroid Build Coastguard Worker int val = arr2[i];
102*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(val == i);
103*35238bceSAndroid Build Coastguard Worker }
104*35238bceSAndroid Build Coastguard Worker }
105*35238bceSAndroid Build Coastguard Worker
alignedIntArrayTest(void)106*35238bceSAndroid Build Coastguard Worker static void alignedIntArrayTest(void)
107*35238bceSAndroid Build Coastguard Worker {
108*35238bceSAndroid Build Coastguard Worker MemPool pool;
109*35238bceSAndroid Build Coastguard Worker PoolArray<int, 16> arr(&pool);
110*35238bceSAndroid Build Coastguard Worker PoolArray<uint16_t, 8> arr16(&pool);
111*35238bceSAndroid Build Coastguard Worker int i;
112*35238bceSAndroid Build Coastguard Worker
113*35238bceSAndroid Build Coastguard Worker /* Test pushBack(). */
114*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
115*35238bceSAndroid Build Coastguard Worker {
116*35238bceSAndroid Build Coastguard Worker /* Unused alloc to try to break alignments. */
117*35238bceSAndroid Build Coastguard Worker pool.alloc(1);
118*35238bceSAndroid Build Coastguard Worker
119*35238bceSAndroid Build Coastguard Worker arr.pushBack(i);
120*35238bceSAndroid Build Coastguard Worker arr16.pushBack((int16_t)i);
121*35238bceSAndroid Build Coastguard Worker }
122*35238bceSAndroid Build Coastguard Worker
123*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 5000);
124*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.size() == 5000);
125*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
126*35238bceSAndroid Build Coastguard Worker {
127*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == i);
128*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16[i] == i);
129*35238bceSAndroid Build Coastguard Worker }
130*35238bceSAndroid Build Coastguard Worker
131*35238bceSAndroid Build Coastguard Worker /* Test popBack(). */
132*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 1000; i++)
133*35238bceSAndroid Build Coastguard Worker {
134*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.popBack() == (4999 - i));
135*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.popBack() == (4999 - i));
136*35238bceSAndroid Build Coastguard Worker }
137*35238bceSAndroid Build Coastguard Worker
138*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 4000);
139*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.size() == 4000);
140*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 4000; i++)
141*35238bceSAndroid Build Coastguard Worker {
142*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == i);
143*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16[i] == i);
144*35238bceSAndroid Build Coastguard Worker }
145*35238bceSAndroid Build Coastguard Worker
146*35238bceSAndroid Build Coastguard Worker /* Test resize(). */
147*35238bceSAndroid Build Coastguard Worker arr.resize(1000);
148*35238bceSAndroid Build Coastguard Worker arr16.resize(1000);
149*35238bceSAndroid Build Coastguard Worker for (i = 1000; i < 5000; i++)
150*35238bceSAndroid Build Coastguard Worker {
151*35238bceSAndroid Build Coastguard Worker arr.pushBack(i);
152*35238bceSAndroid Build Coastguard Worker arr16.pushBack((int16_t)i);
153*35238bceSAndroid Build Coastguard Worker }
154*35238bceSAndroid Build Coastguard Worker
155*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 5000);
156*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16.size() == 5000);
157*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
158*35238bceSAndroid Build Coastguard Worker {
159*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == i);
160*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr16[i] == i);
161*35238bceSAndroid Build Coastguard Worker }
162*35238bceSAndroid Build Coastguard Worker
163*35238bceSAndroid Build Coastguard Worker arr.resize(0);
164*35238bceSAndroid Build Coastguard Worker arr.resize(100, -123);
165*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.size() == 100);
166*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 100; i++)
167*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[i] == -123);
168*35238bceSAndroid Build Coastguard Worker
169*35238bceSAndroid Build Coastguard Worker /* Test set() and pushBack() with reserve(). */
170*35238bceSAndroid Build Coastguard Worker PoolArray<int, 32> arr2(&pool);
171*35238bceSAndroid Build Coastguard Worker arr2.resize(1500);
172*35238bceSAndroid Build Coastguard Worker arr2.reserve(2000);
173*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 1500; i++)
174*35238bceSAndroid Build Coastguard Worker arr2[i] = i;
175*35238bceSAndroid Build Coastguard Worker for (; i < 5000; i++)
176*35238bceSAndroid Build Coastguard Worker arr2.pushBack(i);
177*35238bceSAndroid Build Coastguard Worker
178*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr2.size() == 5000);
179*35238bceSAndroid Build Coastguard Worker for (i = 0; i < 5000; i++)
180*35238bceSAndroid Build Coastguard Worker {
181*35238bceSAndroid Build Coastguard Worker int val = arr2[i];
182*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(val == i);
183*35238bceSAndroid Build Coastguard Worker }
184*35238bceSAndroid Build Coastguard Worker }
185*35238bceSAndroid Build Coastguard Worker
186*35238bceSAndroid Build Coastguard Worker namespace
187*35238bceSAndroid Build Coastguard Worker {
188*35238bceSAndroid Build Coastguard Worker
189*35238bceSAndroid Build Coastguard Worker class RefCount
190*35238bceSAndroid Build Coastguard Worker {
191*35238bceSAndroid Build Coastguard Worker public:
RefCount(void)192*35238bceSAndroid Build Coastguard Worker RefCount(void) : m_count(DE_NULL)
193*35238bceSAndroid Build Coastguard Worker {
194*35238bceSAndroid Build Coastguard Worker }
195*35238bceSAndroid Build Coastguard Worker
RefCount(int * count)196*35238bceSAndroid Build Coastguard Worker RefCount(int *count) : m_count(count)
197*35238bceSAndroid Build Coastguard Worker {
198*35238bceSAndroid Build Coastguard Worker *m_count += 1;
199*35238bceSAndroid Build Coastguard Worker }
200*35238bceSAndroid Build Coastguard Worker
RefCount(const RefCount & other)201*35238bceSAndroid Build Coastguard Worker RefCount(const RefCount &other) : m_count(other.m_count)
202*35238bceSAndroid Build Coastguard Worker {
203*35238bceSAndroid Build Coastguard Worker if (m_count)
204*35238bceSAndroid Build Coastguard Worker *m_count += 1;
205*35238bceSAndroid Build Coastguard Worker }
206*35238bceSAndroid Build Coastguard Worker
~RefCount(void)207*35238bceSAndroid Build Coastguard Worker ~RefCount(void)
208*35238bceSAndroid Build Coastguard Worker {
209*35238bceSAndroid Build Coastguard Worker if (m_count)
210*35238bceSAndroid Build Coastguard Worker *m_count -= 1;
211*35238bceSAndroid Build Coastguard Worker }
212*35238bceSAndroid Build Coastguard Worker
operator =(const RefCount & other)213*35238bceSAndroid Build Coastguard Worker RefCount &operator=(const RefCount &other)
214*35238bceSAndroid Build Coastguard Worker {
215*35238bceSAndroid Build Coastguard Worker if (this == &other)
216*35238bceSAndroid Build Coastguard Worker return *this;
217*35238bceSAndroid Build Coastguard Worker
218*35238bceSAndroid Build Coastguard Worker if (m_count)
219*35238bceSAndroid Build Coastguard Worker *m_count -= 1;
220*35238bceSAndroid Build Coastguard Worker
221*35238bceSAndroid Build Coastguard Worker m_count = other.m_count;
222*35238bceSAndroid Build Coastguard Worker
223*35238bceSAndroid Build Coastguard Worker if (m_count)
224*35238bceSAndroid Build Coastguard Worker *m_count += 1;
225*35238bceSAndroid Build Coastguard Worker
226*35238bceSAndroid Build Coastguard Worker return *this;
227*35238bceSAndroid Build Coastguard Worker }
228*35238bceSAndroid Build Coastguard Worker
229*35238bceSAndroid Build Coastguard Worker private:
230*35238bceSAndroid Build Coastguard Worker int *m_count;
231*35238bceSAndroid Build Coastguard Worker };
232*35238bceSAndroid Build Coastguard Worker
233*35238bceSAndroid Build Coastguard Worker } // namespace
234*35238bceSAndroid Build Coastguard Worker
sideEffectTest(void)235*35238bceSAndroid Build Coastguard Worker static void sideEffectTest(void)
236*35238bceSAndroid Build Coastguard Worker {
237*35238bceSAndroid Build Coastguard Worker MemPool pool;
238*35238bceSAndroid Build Coastguard Worker PoolArray<RefCount> arr(&pool);
239*35238bceSAndroid Build Coastguard Worker int count = 0;
240*35238bceSAndroid Build Coastguard Worker RefCount counter(&count);
241*35238bceSAndroid Build Coastguard Worker
242*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 1);
243*35238bceSAndroid Build Coastguard Worker
244*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 127; i++)
245*35238bceSAndroid Build Coastguard Worker arr.pushBack(counter);
246*35238bceSAndroid Build Coastguard Worker
247*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 128);
248*35238bceSAndroid Build Coastguard Worker
249*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 10; i++)
250*35238bceSAndroid Build Coastguard Worker arr.popBack();
251*35238bceSAndroid Build Coastguard Worker
252*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 118);
253*35238bceSAndroid Build Coastguard Worker
254*35238bceSAndroid Build Coastguard Worker arr.resize(150);
255*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 118);
256*35238bceSAndroid Build Coastguard Worker
257*35238bceSAndroid Build Coastguard Worker arr.resize(18);
258*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 19);
259*35238bceSAndroid Build Coastguard Worker
260*35238bceSAndroid Build Coastguard Worker arr.resize(19);
261*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 19);
262*35238bceSAndroid Build Coastguard Worker
263*35238bceSAndroid Build Coastguard Worker arr.clear();
264*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(count == 1);
265*35238bceSAndroid Build Coastguard Worker }
266*35238bceSAndroid Build Coastguard Worker
iteratorTest(void)267*35238bceSAndroid Build Coastguard Worker static void iteratorTest(void)
268*35238bceSAndroid Build Coastguard Worker {
269*35238bceSAndroid Build Coastguard Worker MemPool pool;
270*35238bceSAndroid Build Coastguard Worker PoolArray<int> arr(&pool);
271*35238bceSAndroid Build Coastguard Worker
272*35238bceSAndroid Build Coastguard Worker for (int ndx = 0; ndx < 128; ndx++)
273*35238bceSAndroid Build Coastguard Worker arr.pushBack(ndx);
274*35238bceSAndroid Build Coastguard Worker
275*35238bceSAndroid Build Coastguard Worker // ConstIterator
276*35238bceSAndroid Build Coastguard Worker {
277*35238bceSAndroid Build Coastguard Worker const PoolArray<int> &cRef = arr;
278*35238bceSAndroid Build Coastguard Worker int ndx = 0;
279*35238bceSAndroid Build Coastguard Worker for (PoolArray<int>::ConstIterator iter = cRef.begin(); iter != cRef.end(); iter++, ndx++)
280*35238bceSAndroid Build Coastguard Worker {
281*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(*iter == ndx);
282*35238bceSAndroid Build Coastguard Worker }
283*35238bceSAndroid Build Coastguard Worker
284*35238bceSAndroid Build Coastguard Worker // Cast & interop with non-const array.
285*35238bceSAndroid Build Coastguard Worker ndx = 0;
286*35238bceSAndroid Build Coastguard Worker for (PoolArray<int>::ConstIterator iter = arr.begin(); iter != arr.end(); iter++, ndx++)
287*35238bceSAndroid Build Coastguard Worker {
288*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(*iter == ndx);
289*35238bceSAndroid Build Coastguard Worker }
290*35238bceSAndroid Build Coastguard Worker }
291*35238bceSAndroid Build Coastguard Worker
292*35238bceSAndroid Build Coastguard Worker // Arithmetics.
293*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.end() - arr.begin() == 128);
294*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(*(arr.begin() + 3) == 3);
295*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin()[4] == 4);
296*35238bceSAndroid Build Coastguard Worker
297*35238bceSAndroid Build Coastguard Worker // Relational
298*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() != arr.begin() + 1);
299*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() == arr.begin());
300*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() != arr.end());
301*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() < arr.end());
302*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() < arr.begin() + 1);
303*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() <= arr.begin());
304*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.end() > arr.begin());
305*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr.begin() >= arr.begin());
306*35238bceSAndroid Build Coastguard Worker
307*35238bceSAndroid Build Coastguard Worker // Compatibility with stl.
308*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(std::distance(arr.begin(), arr.end()) == 128);
309*35238bceSAndroid Build Coastguard Worker
310*35238bceSAndroid Build Coastguard Worker std::vector<int> vecCopy(arr.size());
311*35238bceSAndroid Build Coastguard Worker std::copy(arr.begin(), arr.end(), vecCopy.begin());
312*35238bceSAndroid Build Coastguard Worker for (int ndx = 0; ndx < (int)vecCopy.size(); ndx++)
313*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(vecCopy[ndx] == ndx);
314*35238bceSAndroid Build Coastguard Worker
315*35238bceSAndroid Build Coastguard Worker std::fill(arr.begin(), arr.end(), -1);
316*35238bceSAndroid Build Coastguard Worker for (int ndx = 0; ndx < (int)arr.size(); ndx++)
317*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[ndx] == -1);
318*35238bceSAndroid Build Coastguard Worker
319*35238bceSAndroid Build Coastguard Worker std::copy(vecCopy.begin(), vecCopy.end(), arr.begin());
320*35238bceSAndroid Build Coastguard Worker for (int ndx = 0; ndx < (int)arr.size(); ndx++)
321*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[ndx] == ndx);
322*35238bceSAndroid Build Coastguard Worker
323*35238bceSAndroid Build Coastguard Worker // Iterator
324*35238bceSAndroid Build Coastguard Worker {
325*35238bceSAndroid Build Coastguard Worker int ndx = 0;
326*35238bceSAndroid Build Coastguard Worker for (PoolArray<int>::Iterator iter = arr.begin(); iter != arr.end(); iter++, ndx++)
327*35238bceSAndroid Build Coastguard Worker {
328*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(*iter == ndx);
329*35238bceSAndroid Build Coastguard Worker if (ndx == 4)
330*35238bceSAndroid Build Coastguard Worker *iter = 0;
331*35238bceSAndroid Build Coastguard Worker else if (ndx == 7)
332*35238bceSAndroid Build Coastguard Worker *(iter - 1) = 1;
333*35238bceSAndroid Build Coastguard Worker }
334*35238bceSAndroid Build Coastguard Worker }
335*35238bceSAndroid Build Coastguard Worker
336*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[4] == 0);
337*35238bceSAndroid Build Coastguard Worker DE_TEST_ASSERT(arr[6] == 1);
338*35238bceSAndroid Build Coastguard Worker }
339*35238bceSAndroid Build Coastguard Worker
PoolArray_selfTest(void)340*35238bceSAndroid Build Coastguard Worker void PoolArray_selfTest(void)
341*35238bceSAndroid Build Coastguard Worker {
342*35238bceSAndroid Build Coastguard Worker intArrayTest();
343*35238bceSAndroid Build Coastguard Worker alignedIntArrayTest();
344*35238bceSAndroid Build Coastguard Worker sideEffectTest();
345*35238bceSAndroid Build Coastguard Worker iteratorTest();
346*35238bceSAndroid Build Coastguard Worker }
347*35238bceSAndroid Build Coastguard Worker
348*35238bceSAndroid Build Coastguard Worker } // namespace de
349