Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: mojo/public/cpp/bindings/tests/array_unittest.cc

Issue 1397133002: Remove callers of mojo::Array<size_t> constructor in favor of ::New (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/public/cpp/bindings/array.h" 5 #include "mojo/public/cpp/bindings/array.h"
6 #include "mojo/public/cpp/bindings/lib/array_internal.h" 6 #include "mojo/public/cpp/bindings/lib/array_internal.h"
7 #include "mojo/public/cpp/bindings/lib/array_serialization.h" 7 #include "mojo/public/cpp/bindings/lib/array_serialization.h"
8 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" 8 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h"
9 #include "mojo/public/cpp/bindings/tests/container_test_util.h" 9 #include "mojo/public/cpp/bindings/tests/container_test_util.h"
10 #include "mojo/public/cpp/bindings/tests/iterator_test_util.h" 10 #include "mojo/public/cpp/bindings/tests/iterator_test_util.h"
(...skipping 13 matching lines...) Expand all
24 class ArrayTest : public testing::Test { 24 class ArrayTest : public testing::Test {
25 public: 25 public:
26 ~ArrayTest() override {} 26 ~ArrayTest() override {}
27 27
28 private: 28 private:
29 Environment env_; 29 Environment env_;
30 }; 30 };
31 31
32 // Tests that basic Array operations work. 32 // Tests that basic Array operations work.
33 TEST_F(ArrayTest, Basic) { 33 TEST_F(ArrayTest, Basic) {
34 Array<char> array(8); 34 auto array = Array<char>::New(8);
35 for (size_t i = 0; i < array.size(); ++i) { 35 for (size_t i = 0; i < array.size(); ++i) {
36 char val = static_cast<char>(i * 2); 36 char val = static_cast<char>(i * 2);
37 array[i] = val; 37 array[i] = val;
38 EXPECT_EQ(val, array.at(i)); 38 EXPECT_EQ(val, array.at(i));
39 } 39 }
40 } 40 }
41 41
42 // Tests that basic Array<bool> operations work. 42 // Tests that basic Array<bool> operations work.
43 TEST_F(ArrayTest, Bool) { 43 TEST_F(ArrayTest, Bool) {
44 Array<bool> array(64); 44 auto array = Array<bool>::New(64);
45 for (size_t i = 0; i < array.size(); ++i) { 45 for (size_t i = 0; i < array.size(); ++i) {
46 bool val = i % 3 == 0; 46 bool val = i % 3 == 0;
47 array[i] = val; 47 array[i] = val;
48 EXPECT_EQ(val, array.at(i)); 48 EXPECT_EQ(val, array.at(i));
49 } 49 }
50 } 50 }
51 51
52 // Tests that Array<ScopedMessagePipeHandle> supports transferring handles. 52 // Tests that Array<ScopedMessagePipeHandle> supports transferring handles.
53 TEST_F(ArrayTest, Handle) { 53 TEST_F(ArrayTest, Handle) {
54 MessagePipe pipe; 54 MessagePipe pipe;
55 Array<ScopedMessagePipeHandle> handles(2); 55 auto handles = Array<ScopedMessagePipeHandle>::New(2);
56 handles[0] = pipe.handle0.Pass(); 56 handles[0] = pipe.handle0.Pass();
57 handles[1].reset(pipe.handle1.release()); 57 handles[1].reset(pipe.handle1.release());
58 58
59 EXPECT_FALSE(pipe.handle0.is_valid()); 59 EXPECT_FALSE(pipe.handle0.is_valid());
60 EXPECT_FALSE(pipe.handle1.is_valid()); 60 EXPECT_FALSE(pipe.handle1.is_valid());
61 61
62 Array<ScopedMessagePipeHandle> handles2 = handles.Pass(); 62 Array<ScopedMessagePipeHandle> handles2 = handles.Pass();
63 EXPECT_TRUE(handles2[0].is_valid()); 63 EXPECT_TRUE(handles2[0].is_valid());
64 EXPECT_TRUE(handles2[1].is_valid()); 64 EXPECT_TRUE(handles2[1].is_valid());
65 65
66 ScopedMessagePipeHandle pipe_handle = handles2[0].Pass(); 66 ScopedMessagePipeHandle pipe_handle = handles2[0].Pass();
67 EXPECT_TRUE(pipe_handle.is_valid()); 67 EXPECT_TRUE(pipe_handle.is_valid());
68 EXPECT_FALSE(handles2[0].is_valid()); 68 EXPECT_FALSE(handles2[0].is_valid());
69 } 69 }
70 70
71 // Tests that Array<ScopedMessagePipeHandle> supports closing handles. 71 // Tests that Array<ScopedMessagePipeHandle> supports closing handles.
72 TEST_F(ArrayTest, HandlesAreClosed) { 72 TEST_F(ArrayTest, HandlesAreClosed) {
73 MessagePipe pipe; 73 MessagePipe pipe;
74 MojoHandle pipe0_value = pipe.handle0.get().value(); 74 MojoHandle pipe0_value = pipe.handle0.get().value();
75 MojoHandle pipe1_value = pipe.handle0.get().value(); 75 MojoHandle pipe1_value = pipe.handle0.get().value();
76 76
77 { 77 {
78 Array<ScopedMessagePipeHandle> handles(2); 78 auto handles = Array<ScopedMessagePipeHandle>::New(2);
79 handles[0] = pipe.handle0.Pass(); 79 handles[0] = pipe.handle0.Pass();
80 handles[1].reset(pipe.handle0.release()); 80 handles[1].reset(pipe.handle0.release());
81 } 81 }
82 82
83 // We expect the pipes to have been closed. 83 // We expect the pipes to have been closed.
84 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe0_value)); 84 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe0_value));
85 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe1_value)); 85 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe1_value));
86 } 86 }
87 87
88 TEST_F(ArrayTest, Clone) { 88 TEST_F(ArrayTest, Clone) {
89 { 89 {
90 // Test POD. 90 // Test POD.
91 Array<int32_t> array(3); 91 auto array = Array<int32_t>::New(3);
92 for (size_t i = 0; i < array.size(); ++i) 92 for (size_t i = 0; i < array.size(); ++i)
93 array[i] = static_cast<int32_t>(i); 93 array[i] = static_cast<int32_t>(i);
94 94
95 Array<int32_t> clone_array = array.Clone(); 95 Array<int32_t> clone_array = array.Clone();
96 EXPECT_EQ(array.size(), clone_array.size()); 96 EXPECT_EQ(array.size(), clone_array.size());
97 for (size_t i = 0; i < array.size(); ++i) 97 for (size_t i = 0; i < array.size(); ++i)
98 EXPECT_EQ(array[i], clone_array[i]); 98 EXPECT_EQ(array[i], clone_array[i]);
99 } 99 }
100 100
101 { 101 {
102 // Test copyable object. 102 // Test copyable object.
103 Array<String> array(2); 103 auto array = Array<String>::New(2);
104 array[0] = "hello"; 104 array[0] = "hello";
105 array[1] = "world"; 105 array[1] = "world";
106 106
107 Array<String> clone_array = array.Clone(); 107 Array<String> clone_array = array.Clone();
108 EXPECT_EQ(array.size(), clone_array.size()); 108 EXPECT_EQ(array.size(), clone_array.size());
109 for (size_t i = 0; i < array.size(); ++i) 109 for (size_t i = 0; i < array.size(); ++i)
110 EXPECT_EQ(array[i], clone_array[i]); 110 EXPECT_EQ(array[i], clone_array[i]);
111 } 111 }
112 112
113 { 113 {
114 // Test struct. 114 // Test struct.
115 Array<RectPtr> array(2); 115 auto array = Array<RectPtr>::New(2);
116 array[1] = Rect::New(); 116 array[1] = Rect::New();
117 array[1]->x = 1; 117 array[1]->x = 1;
118 array[1]->y = 2; 118 array[1]->y = 2;
119 array[1]->width = 3; 119 array[1]->width = 3;
120 array[1]->height = 4; 120 array[1]->height = 4;
121 121
122 Array<RectPtr> clone_array = array.Clone(); 122 Array<RectPtr> clone_array = array.Clone();
123 EXPECT_EQ(array.size(), clone_array.size()); 123 EXPECT_EQ(array.size(), clone_array.size());
124 EXPECT_TRUE(clone_array[0].is_null()); 124 EXPECT_TRUE(clone_array[0].is_null());
125 EXPECT_EQ(array[1]->x, clone_array[1]->x); 125 EXPECT_EQ(array[1]->x, clone_array[1]->x);
126 EXPECT_EQ(array[1]->y, clone_array[1]->y); 126 EXPECT_EQ(array[1]->y, clone_array[1]->y);
127 EXPECT_EQ(array[1]->width, clone_array[1]->width); 127 EXPECT_EQ(array[1]->width, clone_array[1]->width);
128 EXPECT_EQ(array[1]->height, clone_array[1]->height); 128 EXPECT_EQ(array[1]->height, clone_array[1]->height);
129 } 129 }
130 130
131 { 131 {
132 // Test array of array. 132 // Test array of array.
133 Array<Array<int8_t>> array(2); 133 auto array = Array<Array<int8_t>>::New(2);
134 array[1] = Array<int8_t>(2); 134 array[1] = Array<int8_t>::New(2);
135 array[1][0] = 0; 135 array[1][0] = 0;
136 array[1][1] = 1; 136 array[1][1] = 1;
137 137
138 Array<Array<int8_t>> clone_array = array.Clone(); 138 Array<Array<int8_t>> clone_array = array.Clone();
139 EXPECT_EQ(array.size(), clone_array.size()); 139 EXPECT_EQ(array.size(), clone_array.size());
140 EXPECT_TRUE(clone_array[0].is_null()); 140 EXPECT_TRUE(clone_array[0].is_null());
141 EXPECT_EQ(array[1].size(), clone_array[1].size()); 141 EXPECT_EQ(array[1].size(), clone_array[1].size());
142 EXPECT_EQ(array[1][0], clone_array[1][0]); 142 EXPECT_EQ(array[1][0], clone_array[1][0]);
143 EXPECT_EQ(array[1][1], clone_array[1][1]); 143 EXPECT_EQ(array[1][1], clone_array[1][1]);
144 } 144 }
145 145
146 { 146 {
147 // Test that array of handles still works although Clone() is not available. 147 // Test that array of handles still works although Clone() is not available.
148 Array<ScopedMessagePipeHandle> array(10); 148 auto array = Array<ScopedMessagePipeHandle>::New(10);
149 EXPECT_FALSE(array[0].is_valid()); 149 EXPECT_FALSE(array[0].is_valid());
150 } 150 }
151 } 151 }
152 152
153 TEST_F(ArrayTest, Serialization_ArrayOfPOD) { 153 TEST_F(ArrayTest, Serialization_ArrayOfPOD) {
154 Array<int32_t> array(4); 154 auto array = Array<int32_t>::New(4);
155 for (size_t i = 0; i < array.size(); ++i) 155 for (size_t i = 0; i < array.size(); ++i)
156 array[i] = static_cast<int32_t>(i); 156 array[i] = static_cast<int32_t>(i);
157 157
158 size_t size = GetSerializedSize_(array); 158 size_t size = GetSerializedSize_(array);
159 EXPECT_EQ(8U + 4 * 4U, size); 159 EXPECT_EQ(8U + 4 * 4U, size);
160 160
161 FixedBufferForTesting buf(size); 161 FixedBufferForTesting buf(size);
162 Array_Data<int32_t>* data; 162 Array_Data<int32_t>* data;
163 ArrayValidateParams validate_params(0, false, nullptr); 163 ArrayValidateParams validate_params(0, false, nullptr);
164 SerializeArray_(&array, &buf, &data, &validate_params); 164 SerializeArray_(&array, &buf, &data, &validate_params);
165 165
166 Array<int32_t> array2; 166 Array<int32_t> array2;
167 Deserialize_(data, &array2); 167 Deserialize_(data, &array2);
168 168
169 EXPECT_EQ(4U, array2.size()); 169 EXPECT_EQ(4U, array2.size());
170 for (size_t i = 0; i < array2.size(); ++i) 170 for (size_t i = 0; i < array2.size(); ++i)
171 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); 171 EXPECT_EQ(static_cast<int32_t>(i), array2[i]);
172 } 172 }
173 173
174 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) { 174 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) {
175 Array<int32_t> array(0); 175 auto array = Array<int32_t>::New(0);
176 size_t size = GetSerializedSize_(array); 176 size_t size = GetSerializedSize_(array);
177 EXPECT_EQ(8U, size); 177 EXPECT_EQ(8U, size);
178 178
179 FixedBufferForTesting buf(size); 179 FixedBufferForTesting buf(size);
180 Array_Data<int32_t>* data; 180 Array_Data<int32_t>* data;
181 ArrayValidateParams validate_params(0, false, nullptr); 181 ArrayValidateParams validate_params(0, false, nullptr);
182 SerializeArray_(&array, &buf, &data, &validate_params); 182 SerializeArray_(&array, &buf, &data, &validate_params);
183 183
184 Array<int32_t> array2; 184 Array<int32_t> array2;
185 Deserialize_(data, &array2); 185 Deserialize_(data, &array2);
186 EXPECT_EQ(0U, array2.size()); 186 EXPECT_EQ(0U, array2.size());
187 } 187 }
188 188
189 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) { 189 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) {
190 Array<Array<int32_t>> array(2); 190 auto array = Array<Array<int32_t>>::New(2);
191 for (size_t j = 0; j < array.size(); ++j) { 191 for (size_t j = 0; j < array.size(); ++j) {
192 Array<int32_t> inner(4); 192 auto inner = Array<int32_t>::New(4);
193 for (size_t i = 0; i < inner.size(); ++i) 193 for (size_t i = 0; i < inner.size(); ++i)
194 inner[i] = static_cast<int32_t>(i + (j * 10)); 194 inner[i] = static_cast<int32_t>(i + (j * 10));
195 array[j] = inner.Pass(); 195 array[j] = inner.Pass();
196 } 196 }
197 197
198 size_t size = GetSerializedSize_(array); 198 size_t size = GetSerializedSize_(array);
199 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); 199 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size);
200 200
201 FixedBufferForTesting buf(size); 201 FixedBufferForTesting buf(size);
202 Array_Data<Array_Data<int32_t>*>* data; 202 Array_Data<Array_Data<int32_t>*>* data;
203 ArrayValidateParams validate_params( 203 ArrayValidateParams validate_params(
204 0, false, new ArrayValidateParams(0, false, nullptr)); 204 0, false, new ArrayValidateParams(0, false, nullptr));
205 SerializeArray_(&array, &buf, &data, &validate_params); 205 SerializeArray_(&array, &buf, &data, &validate_params);
206 206
207 Array<Array<int32_t>> array2; 207 Array<Array<int32_t>> array2;
208 Deserialize_(data, &array2); 208 Deserialize_(data, &array2);
209 209
210 EXPECT_EQ(2U, array2.size()); 210 EXPECT_EQ(2U, array2.size());
211 for (size_t j = 0; j < array2.size(); ++j) { 211 for (size_t j = 0; j < array2.size(); ++j) {
212 const Array<int32_t>& inner = array2[j]; 212 const Array<int32_t>& inner = array2[j];
213 EXPECT_EQ(4U, inner.size()); 213 EXPECT_EQ(4U, inner.size());
214 for (size_t i = 0; i < inner.size(); ++i) 214 for (size_t i = 0; i < inner.size(); ++i)
215 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); 215 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]);
216 } 216 }
217 } 217 }
218 218
219 TEST_F(ArrayTest, Serialization_ArrayOfBool) { 219 TEST_F(ArrayTest, Serialization_ArrayOfBool) {
220 Array<bool> array(10); 220 auto array = Array<bool>::New(10);
221 for (size_t i = 0; i < array.size(); ++i) 221 for (size_t i = 0; i < array.size(); ++i)
222 array[i] = i % 2 ? true : false; 222 array[i] = i % 2 ? true : false;
223 223
224 size_t size = GetSerializedSize_(array); 224 size_t size = GetSerializedSize_(array);
225 EXPECT_EQ(8U + 8U, size); 225 EXPECT_EQ(8U + 8U, size);
226 226
227 FixedBufferForTesting buf(size); 227 FixedBufferForTesting buf(size);
228 Array_Data<bool>* data; 228 Array_Data<bool>* data;
229 ArrayValidateParams validate_params(0, false, nullptr); 229 ArrayValidateParams validate_params(0, false, nullptr);
230 SerializeArray_(&array, &buf, &data, &validate_params); 230 SerializeArray_(&array, &buf, &data, &validate_params);
231 231
232 Array<bool> array2; 232 Array<bool> array2;
233 Deserialize_(data, &array2); 233 Deserialize_(data, &array2);
234 234
235 EXPECT_EQ(10U, array2.size()); 235 EXPECT_EQ(10U, array2.size());
236 for (size_t i = 0; i < array2.size(); ++i) 236 for (size_t i = 0; i < array2.size(); ++i)
237 EXPECT_EQ(i % 2 ? true : false, array2[i]); 237 EXPECT_EQ(i % 2 ? true : false, array2[i]);
238 } 238 }
239 239
240 TEST_F(ArrayTest, Serialization_ArrayOfString) { 240 TEST_F(ArrayTest, Serialization_ArrayOfString) {
241 Array<String> array(10); 241 auto array = Array<String>::New(10);
242 for (size_t i = 0; i < array.size(); ++i) { 242 for (size_t i = 0; i < array.size(); ++i) {
243 char c = 'A' + static_cast<char>(i); 243 char c = 'A' + static_cast<char>(i);
244 array[i] = String(&c, 1); 244 array[i] = String(&c, 1);
245 } 245 }
246 246
247 size_t size = GetSerializedSize_(array); 247 size_t size = GetSerializedSize_(array);
248 EXPECT_EQ(8U + // array header 248 EXPECT_EQ(8U + // array header
249 10 * 8U + // array payload (10 pointers) 249 10 * 8U + // array payload (10 pointers)
250 10 * (8U + // string header 250 10 * (8U + // string header
251 8U), // string length of 1 padded to 8 251 8U), // string length of 1 padded to 8
(...skipping 10 matching lines...) Expand all
262 262
263 EXPECT_EQ(10U, array2.size()); 263 EXPECT_EQ(10U, array2.size());
264 for (size_t i = 0; i < array2.size(); ++i) { 264 for (size_t i = 0; i < array2.size(); ++i) {
265 char c = 'A' + static_cast<char>(i); 265 char c = 'A' + static_cast<char>(i);
266 EXPECT_EQ(String(&c, 1), array2[i]); 266 EXPECT_EQ(String(&c, 1), array2[i]);
267 } 267 }
268 } 268 }
269 269
270 TEST_F(ArrayTest, Resize_Copyable) { 270 TEST_F(ArrayTest, Resize_Copyable) {
271 ASSERT_EQ(0u, CopyableType::num_instances()); 271 ASSERT_EQ(0u, CopyableType::num_instances());
272 mojo::Array<CopyableType> array(3); 272 auto array = mojo::Array<CopyableType>::New(3);
273 std::vector<CopyableType*> value_ptrs; 273 std::vector<CopyableType*> value_ptrs;
274 value_ptrs.push_back(array[0].ptr()); 274 value_ptrs.push_back(array[0].ptr());
275 value_ptrs.push_back(array[1].ptr()); 275 value_ptrs.push_back(array[1].ptr());
276 276
277 for (size_t i = 0; i < array.size(); i++) 277 for (size_t i = 0; i < array.size(); i++)
278 array[i].ResetCopied(); 278 array[i].ResetCopied();
279 279
280 array.resize(2); 280 array.resize(2);
281 ASSERT_EQ(2u, array.size()); 281 ASSERT_EQ(2u, array.size());
282 EXPECT_EQ(array.size(), CopyableType::num_instances()); 282 EXPECT_EQ(array.size(), CopyableType::num_instances());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 array.reset(); 314 array.reset();
315 EXPECT_EQ(0u, CopyableType::num_instances()); 315 EXPECT_EQ(0u, CopyableType::num_instances());
316 EXPECT_FALSE(array); 316 EXPECT_FALSE(array);
317 array.resize(0); 317 array.resize(0);
318 EXPECT_EQ(0u, CopyableType::num_instances()); 318 EXPECT_EQ(0u, CopyableType::num_instances());
319 EXPECT_TRUE(array); 319 EXPECT_TRUE(array);
320 } 320 }
321 321
322 TEST_F(ArrayTest, Resize_MoveOnly) { 322 TEST_F(ArrayTest, Resize_MoveOnly) {
323 ASSERT_EQ(0u, MoveOnlyType::num_instances()); 323 ASSERT_EQ(0u, MoveOnlyType::num_instances());
324 mojo::Array<MoveOnlyType> array(3); 324 auto array = mojo::Array<MoveOnlyType>::New(3);
325 std::vector<MoveOnlyType*> value_ptrs; 325 std::vector<MoveOnlyType*> value_ptrs;
326 value_ptrs.push_back(array[0].ptr()); 326 value_ptrs.push_back(array[0].ptr());
327 value_ptrs.push_back(array[1].ptr()); 327 value_ptrs.push_back(array[1].ptr());
328 328
329 for (size_t i = 0; i < array.size(); i++) 329 for (size_t i = 0; i < array.size(); i++)
330 EXPECT_FALSE(array[i].moved()); 330 EXPECT_FALSE(array[i].moved());
331 331
332 array.resize(2); 332 array.resize(2);
333 ASSERT_EQ(2u, array.size()); 333 ASSERT_EQ(2u, array.size());
334 EXPECT_EQ(array.size(), MoveOnlyType::num_instances()); 334 EXPECT_EQ(array.size(), MoveOnlyType::num_instances());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 array.reset(); 366 array.reset();
367 EXPECT_EQ(0u, MoveOnlyType::num_instances()); 367 EXPECT_EQ(0u, MoveOnlyType::num_instances());
368 EXPECT_FALSE(array); 368 EXPECT_FALSE(array);
369 array.resize(0); 369 array.resize(0);
370 EXPECT_EQ(0u, MoveOnlyType::num_instances()); 370 EXPECT_EQ(0u, MoveOnlyType::num_instances());
371 EXPECT_TRUE(array); 371 EXPECT_TRUE(array);
372 } 372 }
373 373
374 TEST_F(ArrayTest, PushBack_Copyable) { 374 TEST_F(ArrayTest, PushBack_Copyable) {
375 ASSERT_EQ(0u, CopyableType::num_instances()); 375 ASSERT_EQ(0u, CopyableType::num_instances());
376 mojo::Array<CopyableType> array(2); 376 auto array = mojo::Array<CopyableType>::New(2);
377 array.reset(); 377 array.reset();
378 std::vector<CopyableType*> value_ptrs; 378 std::vector<CopyableType*> value_ptrs;
379 size_t capacity = array.storage().capacity(); 379 size_t capacity = array.storage().capacity();
380 for (size_t i = 0; i < capacity; i++) { 380 for (size_t i = 0; i < capacity; i++) {
381 CopyableType value; 381 CopyableType value;
382 value_ptrs.push_back(value.ptr()); 382 value_ptrs.push_back(value.ptr());
383 array.push_back(value); 383 array.push_back(value);
384 ASSERT_EQ(i + 1, array.size()); 384 ASSERT_EQ(i + 1, array.size());
385 ASSERT_EQ(i + 1, value_ptrs.size()); 385 ASSERT_EQ(i + 1, value_ptrs.size());
386 EXPECT_EQ(array.size() + 1, CopyableType::num_instances()); 386 EXPECT_EQ(array.size() + 1, CopyableType::num_instances());
(...skipping 14 matching lines...) Expand all
401 for (size_t i = 0; i < array.size(); i++) { 401 for (size_t i = 0; i < array.size(); i++) {
402 EXPECT_TRUE(array[i].copied()); 402 EXPECT_TRUE(array[i].copied());
403 EXPECT_EQ(value_ptrs[i], array[i].ptr()); 403 EXPECT_EQ(value_ptrs[i], array[i].ptr());
404 } 404 }
405 array.reset(); 405 array.reset();
406 EXPECT_EQ(0u, CopyableType::num_instances()); 406 EXPECT_EQ(0u, CopyableType::num_instances());
407 } 407 }
408 408
409 TEST_F(ArrayTest, PushBack_MoveOnly) { 409 TEST_F(ArrayTest, PushBack_MoveOnly) {
410 ASSERT_EQ(0u, MoveOnlyType::num_instances()); 410 ASSERT_EQ(0u, MoveOnlyType::num_instances());
411 mojo::Array<MoveOnlyType> array(2); 411 auto array = mojo::Array<MoveOnlyType>::New(2);
412 array.reset(); 412 array.reset();
413 std::vector<MoveOnlyType*> value_ptrs; 413 std::vector<MoveOnlyType*> value_ptrs;
414 size_t capacity = array.storage().capacity(); 414 size_t capacity = array.storage().capacity();
415 for (size_t i = 0; i < capacity; i++) { 415 for (size_t i = 0; i < capacity; i++) {
416 MoveOnlyType value; 416 MoveOnlyType value;
417 value_ptrs.push_back(value.ptr()); 417 value_ptrs.push_back(value.ptr());
418 array.push_back(value.Pass()); 418 array.push_back(value.Pass());
419 ASSERT_EQ(i + 1, array.size()); 419 ASSERT_EQ(i + 1, array.size());
420 ASSERT_EQ(i + 1, value_ptrs.size()); 420 ASSERT_EQ(i + 1, value_ptrs.size());
421 EXPECT_EQ(array.size() + 1, MoveOnlyType::num_instances()); 421 EXPECT_EQ(array.size() + 1, MoveOnlyType::num_instances());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 { 486 {
487 SCOPED_TRACE("Array iterator bidirectionality test."); 487 SCOPED_TRACE("Array iterator bidirectionality test.");
488 ExpectBidiIteratorConcept(arr.begin(), arr.end(), values); 488 ExpectBidiIteratorConcept(arr.begin(), arr.end(), values);
489 ExpectBidiMutableIteratorConcept(arr.begin(), arr.end(), values); 489 ExpectBidiMutableIteratorConcept(arr.begin(), arr.end(), values);
490 } 490 }
491 } 491 }
492 492
493 } // namespace 493 } // namespace
494 } // namespace test 494 } // namespace test
495 } // namespace mojo 495 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/lib/array_serialization.h ('k') | mojo/public/cpp/bindings/tests/handle_passing_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698