OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "mojo/public/cpp/bindings/lib/array_internal.h" | 9 #include "mojo/public/cpp/bindings/lib/array_internal.h" |
10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" | 10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 ArrayType<int32_t> array(4); | 165 ArrayType<int32_t> array(4); |
166 for (size_t i = 0; i < array.size(); ++i) | 166 for (size_t i = 0; i < array.size(); ++i) |
167 array[i] = static_cast<int32_t>(i); | 167 array[i] = static_cast<int32_t>(i); |
168 | 168 |
169 size_t size = | 169 size_t size = |
170 mojo::internal::PrepareToSerialize<Array<int32_t>>(array, nullptr); | 170 mojo::internal::PrepareToSerialize<Array<int32_t>>(array, nullptr); |
171 EXPECT_EQ(8U + 4 * 4U, size); | 171 EXPECT_EQ(8U + 4 * 4U, size); |
172 | 172 |
173 mojo::internal::FixedBufferForTesting buf(size); | 173 mojo::internal::FixedBufferForTesting buf(size); |
174 mojo::internal::Array_Data<int32_t>* data; | 174 mojo::internal::Array_Data<int32_t>* data; |
175 mojo::internal::ArrayValidateParams validate_params(0, false, nullptr); | 175 mojo::internal::ContainerValidateParams validate_params(0, false, nullptr); |
176 mojo::internal::Serialize<Array<int32_t>>(array, &buf, &data, | 176 mojo::internal::Serialize<Array<int32_t>>(array, &buf, &data, |
177 &validate_params, nullptr); | 177 &validate_params, nullptr); |
178 | 178 |
179 ArrayType<int32_t> array2; | 179 ArrayType<int32_t> array2; |
180 mojo::internal::Deserialize<Array<int32_t>>(data, &array2, nullptr); | 180 mojo::internal::Deserialize<Array<int32_t>>(data, &array2, nullptr); |
181 | 181 |
182 EXPECT_EQ(4U, array2.size()); | 182 EXPECT_EQ(4U, array2.size()); |
183 for (size_t i = 0; i < array2.size(); ++i) | 183 for (size_t i = 0; i < array2.size(); ++i) |
184 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); | 184 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); |
185 } | 185 } |
186 | 186 |
187 static void Serialization_EmptyArrayOfPOD() { | 187 static void Serialization_EmptyArrayOfPOD() { |
188 ArrayType<int32_t> array; | 188 ArrayType<int32_t> array; |
189 size_t size = | 189 size_t size = |
190 mojo::internal::PrepareToSerialize<Array<int32_t>>(array, nullptr); | 190 mojo::internal::PrepareToSerialize<Array<int32_t>>(array, nullptr); |
191 EXPECT_EQ(8U, size); | 191 EXPECT_EQ(8U, size); |
192 | 192 |
193 mojo::internal::FixedBufferForTesting buf(size); | 193 mojo::internal::FixedBufferForTesting buf(size); |
194 mojo::internal::Array_Data<int32_t>* data; | 194 mojo::internal::Array_Data<int32_t>* data; |
195 mojo::internal::ArrayValidateParams validate_params(0, false, nullptr); | 195 mojo::internal::ContainerValidateParams validate_params(0, false, nullptr); |
196 mojo::internal::Serialize<Array<int32_t>>(array, &buf, &data, | 196 mojo::internal::Serialize<Array<int32_t>>(array, &buf, &data, |
197 &validate_params, nullptr); | 197 &validate_params, nullptr); |
198 | 198 |
199 ArrayType<int32_t> array2; | 199 ArrayType<int32_t> array2; |
200 mojo::internal::Deserialize<Array<int32_t>>(data, &array2, nullptr); | 200 mojo::internal::Deserialize<Array<int32_t>>(data, &array2, nullptr); |
201 EXPECT_EQ(0U, array2.size()); | 201 EXPECT_EQ(0U, array2.size()); |
202 } | 202 } |
203 | 203 |
204 static void Serialization_ArrayOfArrayOfPOD() { | 204 static void Serialization_ArrayOfArrayOfPOD() { |
205 ArrayType<ArrayType<int32_t>> array(2); | 205 ArrayType<ArrayType<int32_t>> array(2); |
206 for (size_t j = 0; j < array.size(); ++j) { | 206 for (size_t j = 0; j < array.size(); ++j) { |
207 ArrayType<int32_t> inner(4); | 207 ArrayType<int32_t> inner(4); |
208 for (size_t i = 0; i < inner.size(); ++i) | 208 for (size_t i = 0; i < inner.size(); ++i) |
209 inner[i] = static_cast<int32_t>(i + (j * 10)); | 209 inner[i] = static_cast<int32_t>(i + (j * 10)); |
210 array[j] = std::move(inner); | 210 array[j] = std::move(inner); |
211 } | 211 } |
212 | 212 |
213 size_t size = mojo::internal::PrepareToSerialize<Array<Array<int32_t>>>( | 213 size_t size = mojo::internal::PrepareToSerialize<Array<Array<int32_t>>>( |
214 array, nullptr); | 214 array, nullptr); |
215 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); | 215 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); |
216 | 216 |
217 mojo::internal::FixedBufferForTesting buf(size); | 217 mojo::internal::FixedBufferForTesting buf(size); |
218 mojo::internal::Array_Data<mojo::internal::Array_Data<int32_t>*>* data; | 218 mojo::internal::Array_Data<mojo::internal::Array_Data<int32_t>*>* data; |
219 mojo::internal::ArrayValidateParams validate_params( | 219 mojo::internal::ContainerValidateParams validate_params( |
220 0, false, new mojo::internal::ArrayValidateParams(0, false, nullptr)); | 220 0, false, |
| 221 new mojo::internal::ContainerValidateParams(0, false, nullptr)); |
221 mojo::internal::Serialize<Array<Array<int32_t>>>(array, &buf, &data, | 222 mojo::internal::Serialize<Array<Array<int32_t>>>(array, &buf, &data, |
222 &validate_params, nullptr); | 223 &validate_params, nullptr); |
223 | 224 |
224 ArrayType<ArrayType<int32_t>> array2; | 225 ArrayType<ArrayType<int32_t>> array2; |
225 mojo::internal::Deserialize<Array<Array<int32_t>>>(data, &array2, nullptr); | 226 mojo::internal::Deserialize<Array<Array<int32_t>>>(data, &array2, nullptr); |
226 | 227 |
227 EXPECT_EQ(2U, array2.size()); | 228 EXPECT_EQ(2U, array2.size()); |
228 for (size_t j = 0; j < array2.size(); ++j) { | 229 for (size_t j = 0; j < array2.size(); ++j) { |
229 const ArrayType<int32_t>& inner = array2[j]; | 230 const ArrayType<int32_t>& inner = array2[j]; |
230 EXPECT_EQ(4U, inner.size()); | 231 EXPECT_EQ(4U, inner.size()); |
231 for (size_t i = 0; i < inner.size(); ++i) | 232 for (size_t i = 0; i < inner.size(); ++i) |
232 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); | 233 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); |
233 } | 234 } |
234 } | 235 } |
235 | 236 |
236 static void Serialization_ArrayOfBool() { | 237 static void Serialization_ArrayOfBool() { |
237 ArrayType<bool> array(10); | 238 ArrayType<bool> array(10); |
238 for (size_t i = 0; i < array.size(); ++i) | 239 for (size_t i = 0; i < array.size(); ++i) |
239 array[i] = i % 2 ? true : false; | 240 array[i] = i % 2 ? true : false; |
240 | 241 |
241 size_t size = | 242 size_t size = |
242 mojo::internal::PrepareToSerialize<Array<bool>>(array, nullptr); | 243 mojo::internal::PrepareToSerialize<Array<bool>>(array, nullptr); |
243 EXPECT_EQ(8U + 8U, size); | 244 EXPECT_EQ(8U + 8U, size); |
244 | 245 |
245 mojo::internal::FixedBufferForTesting buf(size); | 246 mojo::internal::FixedBufferForTesting buf(size); |
246 mojo::internal::Array_Data<bool>* data; | 247 mojo::internal::Array_Data<bool>* data; |
247 mojo::internal::ArrayValidateParams validate_params(0, false, nullptr); | 248 mojo::internal::ContainerValidateParams validate_params(0, false, nullptr); |
248 mojo::internal::Serialize<Array<bool>>(array, &buf, &data, &validate_params, | 249 mojo::internal::Serialize<Array<bool>>(array, &buf, &data, &validate_params, |
249 nullptr); | 250 nullptr); |
250 | 251 |
251 ArrayType<bool> array2; | 252 ArrayType<bool> array2; |
252 mojo::internal::Deserialize<Array<bool>>(data, &array2, nullptr); | 253 mojo::internal::Deserialize<Array<bool>>(data, &array2, nullptr); |
253 | 254 |
254 EXPECT_EQ(10U, array2.size()); | 255 EXPECT_EQ(10U, array2.size()); |
255 for (size_t i = 0; i < array2.size(); ++i) | 256 for (size_t i = 0; i < array2.size(); ++i) |
256 EXPECT_EQ(i % 2 ? true : false, array2[i]); | 257 EXPECT_EQ(i % 2 ? true : false, array2[i]); |
257 } | 258 } |
258 | 259 |
259 static void Serialization_ArrayOfString() { | 260 static void Serialization_ArrayOfString() { |
260 ArrayType<String> array(10); | 261 ArrayType<String> array(10); |
261 for (size_t i = 0; i < array.size(); ++i) { | 262 for (size_t i = 0; i < array.size(); ++i) { |
262 char c = 'A' + static_cast<char>(i); | 263 char c = 'A' + static_cast<char>(i); |
263 array[i] = String(&c, 1); | 264 array[i] = String(&c, 1); |
264 } | 265 } |
265 | 266 |
266 size_t size = | 267 size_t size = |
267 mojo::internal::PrepareToSerialize<Array<String>>(array, nullptr); | 268 mojo::internal::PrepareToSerialize<Array<String>>(array, nullptr); |
268 EXPECT_EQ(8U + // array header | 269 EXPECT_EQ(8U + // array header |
269 10 * 8U + // array payload (10 pointers) | 270 10 * 8U + // array payload (10 pointers) |
270 10 * (8U + // string header | 271 10 * (8U + // string header |
271 8U), // string length of 1 padded to 8 | 272 8U), // string length of 1 padded to 8 |
272 size); | 273 size); |
273 | 274 |
274 mojo::internal::FixedBufferForTesting buf(size); | 275 mojo::internal::FixedBufferForTesting buf(size); |
275 mojo::internal::Array_Data<mojo::internal::String_Data*>* data; | 276 mojo::internal::Array_Data<mojo::internal::String_Data*>* data; |
276 mojo::internal::ArrayValidateParams validate_params( | 277 mojo::internal::ContainerValidateParams validate_params( |
277 0, false, new mojo::internal::ArrayValidateParams(0, false, nullptr)); | 278 0, false, |
| 279 new mojo::internal::ContainerValidateParams(0, false, nullptr)); |
278 mojo::internal::Serialize<Array<String>>(array, &buf, &data, | 280 mojo::internal::Serialize<Array<String>>(array, &buf, &data, |
279 &validate_params, nullptr); | 281 &validate_params, nullptr); |
280 | 282 |
281 ArrayType<String> array2; | 283 ArrayType<String> array2; |
282 mojo::internal::Deserialize<Array<String>>(data, &array2, nullptr); | 284 mojo::internal::Deserialize<Array<String>>(data, &array2, nullptr); |
283 | 285 |
284 EXPECT_EQ(10U, array2.size()); | 286 EXPECT_EQ(10U, array2.size()); |
285 for (size_t i = 0; i < array2.size(); ++i) { | 287 for (size_t i = 0; i < array2.size(); ++i) { |
286 char c = 'A' + static_cast<char>(i); | 288 char c = 'A' + static_cast<char>(i); |
287 EXPECT_EQ(String(&c, 1), array2[i]); | 289 EXPECT_EQ(String(&c, 1), array2[i]); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 } | 395 } |
394 }; | 396 }; |
395 | 397 |
396 #define ARRAY_COMMON_TEST(ArrayType, test_name) \ | 398 #define ARRAY_COMMON_TEST(ArrayType, test_name) \ |
397 TEST_F(ArrayType##Test, test_name) { \ | 399 TEST_F(ArrayType##Test, test_name) { \ |
398 ArrayCommonTest<ArrayType>::test_name(); \ | 400 ArrayCommonTest<ArrayType>::test_name(); \ |
399 } | 401 } |
400 | 402 |
401 } // namespace test | 403 } // namespace test |
402 } // namespace mojo | 404 } // namespace mojo |
OLD | NEW |