| 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 |