| OLD | NEW |
| 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 Array<int32_t> array(4); | 154 Array<int32_t> array(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 EXPECT_EQ(mojo::internal::ValidationError::VALIDATION_ERROR_NONE, |
| 165 SerializeArray_(&array, &buf, &data, &validate_params)); |
| 165 | 166 |
| 166 Array<int32_t> array2; | 167 Array<int32_t> array2; |
| 167 Deserialize_(data, &array2); | 168 Deserialize_(data, &array2); |
| 168 | 169 |
| 169 EXPECT_EQ(4U, array2.size()); | 170 EXPECT_EQ(4U, array2.size()); |
| 170 for (size_t i = 0; i < array2.size(); ++i) | 171 for (size_t i = 0; i < array2.size(); ++i) |
| 171 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); | 172 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); |
| 172 } | 173 } |
| 173 | 174 |
| 174 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) { | 175 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) { |
| 175 Array<int32_t> array(0); | 176 Array<int32_t> array(0); |
| 176 size_t size = GetSerializedSize_(array); | 177 size_t size = GetSerializedSize_(array); |
| 177 EXPECT_EQ(8U, size); | 178 EXPECT_EQ(8U, size); |
| 178 | 179 |
| 179 FixedBufferForTesting buf(size); | 180 FixedBufferForTesting buf(size); |
| 180 Array_Data<int32_t>* data; | 181 Array_Data<int32_t>* data; |
| 181 ArrayValidateParams validate_params(0, false, nullptr); | 182 ArrayValidateParams validate_params(0, false, nullptr); |
| 182 SerializeArray_(&array, &buf, &data, &validate_params); | 183 EXPECT_EQ(mojo::internal::ValidationError::VALIDATION_ERROR_NONE, |
| 184 SerializeArray_(&array, &buf, &data, &validate_params)); |
| 183 | 185 |
| 184 Array<int32_t> array2; | 186 Array<int32_t> array2; |
| 185 Deserialize_(data, &array2); | 187 Deserialize_(data, &array2); |
| 186 EXPECT_EQ(0U, array2.size()); | 188 EXPECT_EQ(0U, array2.size()); |
| 187 } | 189 } |
| 188 | 190 |
| 189 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) { | 191 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) { |
| 190 Array<Array<int32_t>> array(2); | 192 Array<Array<int32_t>> array(2); |
| 191 for (size_t j = 0; j < array.size(); ++j) { | 193 for (size_t j = 0; j < array.size(); ++j) { |
| 192 Array<int32_t> inner(4); | 194 Array<int32_t> inner(4); |
| 193 for (size_t i = 0; i < inner.size(); ++i) | 195 for (size_t i = 0; i < inner.size(); ++i) |
| 194 inner[i] = static_cast<int32_t>(i + (j * 10)); | 196 inner[i] = static_cast<int32_t>(i + (j * 10)); |
| 195 array[j] = inner.Pass(); | 197 array[j] = inner.Pass(); |
| 196 } | 198 } |
| 197 | 199 |
| 198 size_t size = GetSerializedSize_(array); | 200 size_t size = GetSerializedSize_(array); |
| 199 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); | 201 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); |
| 200 | 202 |
| 201 FixedBufferForTesting buf(size); | 203 FixedBufferForTesting buf(size); |
| 202 Array_Data<Array_Data<int32_t>*>* data; | 204 Array_Data<Array_Data<int32_t>*>* data; |
| 203 ArrayValidateParams validate_params( | 205 ArrayValidateParams validate_params( |
| 204 0, false, new ArrayValidateParams(0, false, nullptr)); | 206 0, false, new ArrayValidateParams(0, false, nullptr)); |
| 205 SerializeArray_(&array, &buf, &data, &validate_params); | 207 EXPECT_EQ(mojo::internal::ValidationError::VALIDATION_ERROR_NONE, |
| 208 SerializeArray_(&array, &buf, &data, &validate_params)); |
| 206 | 209 |
| 207 Array<Array<int32_t>> array2; | 210 Array<Array<int32_t>> array2; |
| 208 Deserialize_(data, &array2); | 211 Deserialize_(data, &array2); |
| 209 | 212 |
| 210 EXPECT_EQ(2U, array2.size()); | 213 EXPECT_EQ(2U, array2.size()); |
| 211 for (size_t j = 0; j < array2.size(); ++j) { | 214 for (size_t j = 0; j < array2.size(); ++j) { |
| 212 const Array<int32_t>& inner = array2[j]; | 215 const Array<int32_t>& inner = array2[j]; |
| 213 EXPECT_EQ(4U, inner.size()); | 216 EXPECT_EQ(4U, inner.size()); |
| 214 for (size_t i = 0; i < inner.size(); ++i) | 217 for (size_t i = 0; i < inner.size(); ++i) |
| 215 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); | 218 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); |
| 216 } | 219 } |
| 217 } | 220 } |
| 218 | 221 |
| 219 TEST_F(ArrayTest, Serialization_ArrayOfBool) { | 222 TEST_F(ArrayTest, Serialization_ArrayOfBool) { |
| 220 Array<bool> array(10); | 223 Array<bool> array(10); |
| 221 for (size_t i = 0; i < array.size(); ++i) | 224 for (size_t i = 0; i < array.size(); ++i) |
| 222 array[i] = i % 2 ? true : false; | 225 array[i] = i % 2 ? true : false; |
| 223 | 226 |
| 224 size_t size = GetSerializedSize_(array); | 227 size_t size = GetSerializedSize_(array); |
| 225 EXPECT_EQ(8U + 8U, size); | 228 EXPECT_EQ(8U + 8U, size); |
| 226 | 229 |
| 227 FixedBufferForTesting buf(size); | 230 FixedBufferForTesting buf(size); |
| 228 Array_Data<bool>* data; | 231 Array_Data<bool>* data; |
| 229 ArrayValidateParams validate_params(0, false, nullptr); | 232 ArrayValidateParams validate_params(0, false, nullptr); |
| 230 SerializeArray_(&array, &buf, &data, &validate_params); | 233 EXPECT_EQ(mojo::internal::ValidationError::VALIDATION_ERROR_NONE, |
| 234 SerializeArray_(&array, &buf, &data, &validate_params)); |
| 231 | 235 |
| 232 Array<bool> array2; | 236 Array<bool> array2; |
| 233 Deserialize_(data, &array2); | 237 Deserialize_(data, &array2); |
| 234 | 238 |
| 235 EXPECT_EQ(10U, array2.size()); | 239 EXPECT_EQ(10U, array2.size()); |
| 236 for (size_t i = 0; i < array2.size(); ++i) | 240 for (size_t i = 0; i < array2.size(); ++i) |
| 237 EXPECT_EQ(i % 2 ? true : false, array2[i]); | 241 EXPECT_EQ(i % 2 ? true : false, array2[i]); |
| 238 } | 242 } |
| 239 | 243 |
| 240 TEST_F(ArrayTest, Serialization_ArrayOfString) { | 244 TEST_F(ArrayTest, Serialization_ArrayOfString) { |
| 241 Array<String> array(10); | 245 Array<String> array(10); |
| 242 for (size_t i = 0; i < array.size(); ++i) { | 246 for (size_t i = 0; i < array.size(); ++i) { |
| 243 char c = 'A' + static_cast<char>(i); | 247 char c = 'A' + static_cast<char>(i); |
| 244 array[i] = String(&c, 1); | 248 array[i] = String(&c, 1); |
| 245 } | 249 } |
| 246 | 250 |
| 247 size_t size = GetSerializedSize_(array); | 251 size_t size = GetSerializedSize_(array); |
| 248 EXPECT_EQ(8U + // array header | 252 EXPECT_EQ(8U + // array header |
| 249 10 * 8U + // array payload (10 pointers) | 253 10 * 8U + // array payload (10 pointers) |
| 250 10 * (8U + // string header | 254 10 * (8U + // string header |
| 251 8U), // string length of 1 padded to 8 | 255 8U), // string length of 1 padded to 8 |
| 252 size); | 256 size); |
| 253 | 257 |
| 254 FixedBufferForTesting buf(size); | 258 FixedBufferForTesting buf(size); |
| 255 Array_Data<String_Data*>* data; | 259 Array_Data<String_Data*>* data; |
| 256 ArrayValidateParams validate_params( | 260 ArrayValidateParams validate_params( |
| 257 0, false, new ArrayValidateParams(0, false, nullptr)); | 261 0, false, new ArrayValidateParams(0, false, nullptr)); |
| 258 SerializeArray_(&array, &buf, &data, &validate_params); | 262 EXPECT_EQ(mojo::internal::ValidationError::VALIDATION_ERROR_NONE, |
| 263 SerializeArray_(&array, &buf, &data, &validate_params)); |
| 259 | 264 |
| 260 Array<String> array2; | 265 Array<String> array2; |
| 261 Deserialize_(data, &array2); | 266 Deserialize_(data, &array2); |
| 262 | 267 |
| 263 EXPECT_EQ(10U, array2.size()); | 268 EXPECT_EQ(10U, array2.size()); |
| 264 for (size_t i = 0; i < array2.size(); ++i) { | 269 for (size_t i = 0; i < array2.size(); ++i) { |
| 265 char c = 'A' + static_cast<char>(i); | 270 char c = 'A' + static_cast<char>(i); |
| 266 EXPECT_EQ(String(&c, 1), array2[i]); | 271 EXPECT_EQ(String(&c, 1), array2[i]); |
| 267 } | 272 } |
| 268 } | 273 } |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 { | 491 { |
| 487 SCOPED_TRACE("Array iterator bidirectionality test."); | 492 SCOPED_TRACE("Array iterator bidirectionality test."); |
| 488 ExpectBidiIteratorConcept(arr.begin(), arr.end(), values); | 493 ExpectBidiIteratorConcept(arr.begin(), arr.end(), values); |
| 489 ExpectBidiMutableIteratorConcept(arr.begin(), arr.end(), values); | 494 ExpectBidiMutableIteratorConcept(arr.begin(), arr.end(), values); |
| 490 } | 495 } |
| 491 } | 496 } |
| 492 | 497 |
| 493 } // namespace | 498 } // namespace |
| 494 } // namespace test | 499 } // namespace test |
| 495 } // namespace mojo | 500 } // namespace mojo |
| OLD | NEW |