97 CCASSERT(vec.empty(),
"vec should be empty.");
98 CCASSERT(vec.capacity() == 0,
"vec.capacity should be 0.");
99 CCASSERT(vec.size() == 0,
"vec.size should be 0.");
100 CCASSERT(vec.max_size() > 0,
"vec.max_size should > 0.");
102 auto node1 = Node::create();
105 CCASSERT(node1->getReferenceCount() == 2,
"node1->getReferenceCount should be 2.");
107 auto node2 = Node::create();
110 CCASSERT(vec.getIndex(node1) == 0,
"node1 should at index 0 in vec.");
111 CCASSERT(vec.getIndex(node2) == 1,
"node2 should at index 1 in vec.");
113 auto node3 = Node::create();
115 vec.insert(1, node3);
116 CCASSERT(vec.at(0)->getTag() == 1,
"The element at 0, tag should be 1.");
117 CCASSERT(vec.at(1)->getTag() == 3,
"The element at 1, tag should be 3.");
118 CCASSERT(vec.at(2)->getTag() == 2,
"The element at 2, tag should be 2.");
121 Vector<Node*> vec2(vec);
122 CCASSERT(vec2.size() == vec.size(),
"vec2 and vec should have equal size.");
123 ssize_t size = vec.size();
124 for (ssize_t i = 0; i < size; ++i)
126 CCASSERT(vec2.at(i) == vec.at(i),
"The element at the same index in vec2 and vec2 should be equal.");
127 CCASSERT(vec.at(i)->getReferenceCount() == 3,
"The reference count of element in vec is 3. ");
128 CCASSERT(vec2.at(i)->getReferenceCount() == 3,
"The reference count of element in vec2 is 3. ");
134 CCASSERT(vec3.size() == vec2.size(),
"vec3 and vec2 should have equal size.");
136 for (ssize_t i = 0; i < size; ++i)
138 CCASSERT(vec3.at(i) == vec2.at(i),
"The element at the same index in vec3 and vec2 should be equal.");
139 CCASSERT(vec3.at(i)->getReferenceCount() == 4,
"The reference count of element in vec3 is 4. ");
140 CCASSERT(vec2.at(i)->getReferenceCount() == 4,
"The reference count of element in vec2 is 4. ");
141 CCASSERT(vec.at(i)->getReferenceCount() == 4,
"The reference count of element in vec is 4. ");
146 auto createVector = [](){
149 for (
int i = 0; i < 20; i++)
151 ret.pushBack(Node::create());
155 for (
auto& child : ret)
163 Vector<Node*> vec4(createVector());
164 for (
const auto& child : vec4)
166 CC_UNUSED_PARAM(child);
167 CCASSERT(child->getReferenceCount() == 2,
"child's reference count should be 2.");
171 Vector<Node*> vec5(10);
172 CCASSERT(vec5.capacity() == 10,
"vec5's capacity should be 10.");
174 CCASSERT(vec5.capacity() == 20,
"vec5's capacity should be 20.");
176 CCASSERT(vec5.size() == 0,
"vec5's size should be 0.");
177 CCASSERT(vec5.empty(),
"vec5 is empty now.");
179 auto toRemovedNode = Node::create();
180 vec5.pushBack(toRemovedNode);
181 CCASSERT(toRemovedNode->getReferenceCount() == 2,
"toRemovedNode's reference count is 2.");
184 vec5 = createVector();
185 CCASSERT(toRemovedNode->getReferenceCount() == 1,
"toRemovedNode's reference count is 1.");
186 CCASSERT(vec5.size() == 20,
"size should be 20");
188 for (
const auto& child : vec5)
190 CC_UNUSED_PARAM(child);
191 CCASSERT(child->getReferenceCount() == 2,
"child's reference count is 2.");
195 CCASSERT(vec.find(node3) == (vec.begin() + 1),
"node3 is the 2nd element in vec.");
196 CCASSERT(std::find(std::begin(vec), std::end(vec), node2) == (vec.begin() + 2),
"node2 is the 3rd element in vec.");
198 CCASSERT(vec.front()->getTag() == 1,
"vec's front element's tag is 1.");
199 CCASSERT(vec.back()->getTag() == 2,
"vec's back element's tag is 2.");
201 CCASSERT(vec.getRandomObject(),
"vec getRandomObject should return true.");
202 CCASSERT(!vec.contains(Node::create()),
"vec doesn't contain a empty Node instance.");
203 CCASSERT(vec.contains(node1),
"vec contains node1.");
204 CCASSERT(vec.contains(node2),
"vec contains node2.");
205 CCASSERT(vec.contains(node3),
"vec contains node3.");
206 CCASSERT(vec.equals(vec2),
"vec is equal to vec2.");
207 CCASSERT(vec.equals(vec3),
"vec is equal to vec3.");
210 vec5.insert(2, node1);
211 CCASSERT(vec5.at(2)->getTag() == 1,
"vec5's 3rd element's tag is 1.");
212 CCASSERT(vec5.size() == 21,
"vec5's size is 21.");
213 vec5.back()->setTag(100);
215 CCASSERT(vec5.size() == 20,
"vec5's size is 20.");
216 CCASSERT(vec5.back()->getTag() != 100,
"the back element of vec5's tag is 100.");
219 Vector<Node*> vec6 = createVector();
220 Vector<Node*> vec7 = vec6;
222 CCASSERT(vec6.size() == 20,
"vec6's size is 20.");
223 vec6.erase(vec6.begin() + 1);
224 CCASSERT(vec6.size() == 19,
"vec6's size is 19.");
225 CCASSERT((*(vec6.begin() + 1))->getTag() == 1002,
"The 2rd element in vec6's tag is 1002.");
226 vec6.erase(vec6.begin() + 2, vec6.begin() + 10);
227 CCASSERT(vec6.size() == 11,
"vec6's size is 11.");
228 CCASSERT(vec6.at(0)->getTag() == 1000,
"vec6's first element's tag is 1000.");
229 CCASSERT(vec6.at(1)->getTag() == 1002,
"vec6's second element's tag is 1002.");
230 CCASSERT(vec6.at(2)->getTag() == 1011,
"vec6's third element's tag is 1011.");
231 CCASSERT(vec6.at(3)->getTag() == 1012,
"vec6's fouth element's tag is 1012.");
233 CCASSERT(vec6.at(3)->getTag() == 1013,
"vec6's 4th element's tag is 1013.");
234 vec6.eraseObject(vec6.at(2));
235 CCASSERT(vec6.at(2)->getTag() == 1013,
"vec6's 3rd element's tag is 1013.");
238 auto objA = Node::create();
239 auto objB = Node::create();
240 auto objC = Node::create();
242 Vector<Node*> array1;
243 Vector<Node*> array2;
246 array1.pushBack(objA);
247 array1.pushBack(objA);
248 array1.pushBack(objA);
250 array2.pushBack(objA);
251 array2.pushBack(objB);
252 array2.pushBack(objC);
254 for (
auto obj : array1) {
255 array2.eraseObject(obj);
257 CCASSERT(objA->getReferenceCount() == 4,
"objA's reference count is 4.");
259 CCASSERT(objA->getReferenceCount() == 1,
"objA's reference count is 1.");
262 Vector<Node*> array1;
264 array1.pushBack(objA);
265 array1.pushBack(objA);
266 array1.pushBack(objA);
267 CCASSERT(objA->getReferenceCount() == 4,
"objA's reference count is 4.");
268 array1.eraseObject(objA,
true);
269 CCASSERT(objA->getReferenceCount() == 1,
"objA's reference count is 1.");
271 array1.pushBack(objA);
272 array1.pushBack(objA);
273 array1.pushBack(objA);
275 array1.eraseObject(objA,
false);
276 CCASSERT(objA->getReferenceCount() == 3,
"objA's reference count is 3.");
280 CCASSERT(vec7.size() == 20,
"vec7's size is 20.");
281 for (
const auto& child : vec7)
283 CC_UNUSED_PARAM(child);
284 CCASSERT(child->getReferenceCount() == 2,
"child's reference count is 2.");
288 Vector<Node*> vecForSort = createVector();
289 std::sort(vecForSort.begin(), vecForSort.end(), [](Node* a, Node* b){
290 return a->getTag() >= b->getTag();
293 for (
int i = 0; i < 20; ++i)
295 CCASSERT(vecForSort.at(i)->getTag() - 1000 == (19 - i),
"vecForSort's element's tag is invalid.");
299 vecForSort.reverse();
300 for (
int i = 0; i < 20; ++i)
302 CCASSERT(vecForSort.at(i)->getTag() - 1000 == i,
"vecForSort's element's tag is invalid.");
306 Vector<Node*> vecForSwap = createVector();
307 vecForSwap.swap(2, 4);
308 CCASSERT(vecForSwap.at(2)->getTag() == 1004,
"vecForSwap's 3nd element's tag is 1004.");
309 CCASSERT(vecForSwap.at(4)->getTag() == 1002,
"vecForSwap's 5rd element's tag is 1002.");
310 vecForSwap.swap(vecForSwap.at(2), vecForSwap.at(4));
311 CCASSERT(vecForSwap.at(2)->getTag() == 1002,
"vecForSwap's 3rd element's tag is 1002.");
312 CCASSERT(vecForSwap.at(4)->getTag() == 1004,
"vecForSwap's 5rd element's tag is 1004.");
315 Vector<Node*> vecForShrink = createVector();
316 vecForShrink.reserve(100);
317 CCASSERT(vecForShrink.capacity() == 100,
"vecForShrink's capacity is 100.");
318 vecForShrink.pushBack(Node::create());
319 vecForShrink.shrinkToFit();
320 CCASSERT(vecForShrink.capacity() == 21,
"vecForShrink's capacity is 21.");
324 std::srand((
unsigned)time(
nullptr));
325 Vector<Node*> vecForRandom = createVector();
326 log(
"<--- begin ---->");
327 for (
int i = 0; i < vecForRandom.size(); ++i)
329 log(
"Vector: random object tag = %d", vecForRandom.getRandomObject()->getTag());
331 log(
"<---- end ---->");
334 Vector<Node*> vecSelfAssign = createVector();
335 vecSelfAssign = vecSelfAssign;
336 CCASSERT(vecSelfAssign.size() == 20,
"vecSelfAssign's size is 20.");
338 for (
const auto& child : vecSelfAssign)
340 CC_UNUSED_PARAM(child);
341 CCASSERT(child->getReferenceCount() == 2,
"child's reference count is 2.");
344 vecSelfAssign = std::move(vecSelfAssign);
345 CCASSERT(vecSelfAssign.size() == 20,
"vecSelfAssign's size is 20.");
347 for (
const auto& child : vecSelfAssign)
349 CC_UNUSED_PARAM(child);
350 CCASSERT(child->getReferenceCount() == 2,
"child's reference count is 2.");
354 Vector<Node*> vecConstAt = createVector();
void constFunc(const cocos2d::Vector< Node * > &vec) const
virtual void onEnter() override