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.Pass(), &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 Array<int32_t> array(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.Pass(), &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 Array<Array<int32_t>> array(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 Array<int32_t> inner(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.Pass(), &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 Array<bool> array(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.Pass(), &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 Array<String> array(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 |
252 size); | 252 size); |
253 | 253 |
254 FixedBufferForTesting buf(size); | 254 FixedBufferForTesting buf(size); |
255 Array_Data<String_Data*>* data; | 255 Array_Data<String_Data*>* data; |
256 ArrayValidateParams validate_params( | 256 ArrayValidateParams validate_params( |
257 0, false, new ArrayValidateParams(0, false, nullptr)); | 257 0, false, new ArrayValidateParams(0, false, nullptr)); |
258 SerializeArray_(array.Pass(), &buf, &data, &validate_params); | 258 SerializeArray_(&array, &buf, &data, &validate_params); |
259 | 259 |
260 Array<String> array2; | 260 Array<String> array2; |
261 Deserialize_(data, &array2); | 261 Deserialize_(data, &array2); |
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 } |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |
OLD | NEW |