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/environment/environment.h" | 10 #include "mojo/public/cpp/environment/environment.h" |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 Array<int32_t> array(4); | 153 Array<int32_t> array(4); |
154 for (size_t i = 0; i < array.size(); ++i) | 154 for (size_t i = 0; i < array.size(); ++i) |
155 array[i] = static_cast<int32_t>(i); | 155 array[i] = static_cast<int32_t>(i); |
156 | 156 |
157 size_t size = GetSerializedSize_(array); | 157 size_t size = GetSerializedSize_(array); |
158 EXPECT_EQ(8U + 4 * 4U, size); | 158 EXPECT_EQ(8U + 4 * 4U, size); |
159 | 159 |
160 FixedBufferForTesting buf(size); | 160 FixedBufferForTesting buf(size); |
161 Array_Data<int32_t>* data; | 161 Array_Data<int32_t>* data; |
162 ArrayValidateParams validate_params(0, false, nullptr); | 162 ArrayValidateParams validate_params(0, false, nullptr); |
163 SerializeArray_(array.Pass(), &buf, &data, &validate_params); | 163 SerializeArray_(&array, &buf, &data, &validate_params); |
164 | 164 |
165 Array<int32_t> array2; | 165 Array<int32_t> array2; |
166 Deserialize_(data, &array2); | 166 Deserialize_(data, &array2); |
167 | 167 |
168 EXPECT_EQ(4U, array2.size()); | 168 EXPECT_EQ(4U, array2.size()); |
169 for (size_t i = 0; i < array2.size(); ++i) | 169 for (size_t i = 0; i < array2.size(); ++i) |
170 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); | 170 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); |
171 } | 171 } |
172 | 172 |
173 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) { | 173 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) { |
174 Array<int32_t> array(0); | 174 Array<int32_t> array(0); |
175 size_t size = GetSerializedSize_(array); | 175 size_t size = GetSerializedSize_(array); |
176 EXPECT_EQ(8U, size); | 176 EXPECT_EQ(8U, size); |
177 | 177 |
178 FixedBufferForTesting buf(size); | 178 FixedBufferForTesting buf(size); |
179 Array_Data<int32_t>* data; | 179 Array_Data<int32_t>* data; |
180 ArrayValidateParams validate_params(0, false, nullptr); | 180 ArrayValidateParams validate_params(0, false, nullptr); |
181 SerializeArray_(array.Pass(), &buf, &data, &validate_params); | 181 SerializeArray_(&array, &buf, &data, &validate_params); |
182 | 182 |
183 Array<int32_t> array2; | 183 Array<int32_t> array2; |
184 Deserialize_(data, &array2); | 184 Deserialize_(data, &array2); |
185 EXPECT_EQ(0U, array2.size()); | 185 EXPECT_EQ(0U, array2.size()); |
186 } | 186 } |
187 | 187 |
188 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) { | 188 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) { |
189 Array<Array<int32_t>> array(2); | 189 Array<Array<int32_t>> array(2); |
190 for (size_t j = 0; j < array.size(); ++j) { | 190 for (size_t j = 0; j < array.size(); ++j) { |
191 Array<int32_t> inner(4); | 191 Array<int32_t> inner(4); |
192 for (size_t i = 0; i < inner.size(); ++i) | 192 for (size_t i = 0; i < inner.size(); ++i) |
193 inner[i] = static_cast<int32_t>(i + (j * 10)); | 193 inner[i] = static_cast<int32_t>(i + (j * 10)); |
194 array[j] = inner.Pass(); | 194 array[j] = inner.Pass(); |
195 } | 195 } |
196 | 196 |
197 size_t size = GetSerializedSize_(array); | 197 size_t size = GetSerializedSize_(array); |
198 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); | 198 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); |
199 | 199 |
200 FixedBufferForTesting buf(size); | 200 FixedBufferForTesting buf(size); |
201 Array_Data<Array_Data<int32_t>*>* data; | 201 Array_Data<Array_Data<int32_t>*>* data; |
202 ArrayValidateParams validate_params( | 202 ArrayValidateParams validate_params( |
203 0, false, new ArrayValidateParams(0, false, nullptr)); | 203 0, false, new ArrayValidateParams(0, false, nullptr)); |
204 SerializeArray_(array.Pass(), &buf, &data, &validate_params); | 204 SerializeArray_(&array, &buf, &data, &validate_params); |
205 | 205 |
206 Array<Array<int32_t>> array2; | 206 Array<Array<int32_t>> array2; |
207 Deserialize_(data, &array2); | 207 Deserialize_(data, &array2); |
208 | 208 |
209 EXPECT_EQ(2U, array2.size()); | 209 EXPECT_EQ(2U, array2.size()); |
210 for (size_t j = 0; j < array2.size(); ++j) { | 210 for (size_t j = 0; j < array2.size(); ++j) { |
211 const Array<int32_t>& inner = array2[j]; | 211 const Array<int32_t>& inner = array2[j]; |
212 EXPECT_EQ(4U, inner.size()); | 212 EXPECT_EQ(4U, inner.size()); |
213 for (size_t i = 0; i < inner.size(); ++i) | 213 for (size_t i = 0; i < inner.size(); ++i) |
214 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); | 214 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); |
215 } | 215 } |
216 } | 216 } |
217 | 217 |
218 TEST_F(ArrayTest, Serialization_ArrayOfBool) { | 218 TEST_F(ArrayTest, Serialization_ArrayOfBool) { |
219 Array<bool> array(10); | 219 Array<bool> array(10); |
220 for (size_t i = 0; i < array.size(); ++i) | 220 for (size_t i = 0; i < array.size(); ++i) |
221 array[i] = i % 2 ? true : false; | 221 array[i] = i % 2 ? true : false; |
222 | 222 |
223 size_t size = GetSerializedSize_(array); | 223 size_t size = GetSerializedSize_(array); |
224 EXPECT_EQ(8U + 8U, size); | 224 EXPECT_EQ(8U + 8U, size); |
225 | 225 |
226 FixedBufferForTesting buf(size); | 226 FixedBufferForTesting buf(size); |
227 Array_Data<bool>* data; | 227 Array_Data<bool>* data; |
228 ArrayValidateParams validate_params(0, false, nullptr); | 228 ArrayValidateParams validate_params(0, false, nullptr); |
229 SerializeArray_(array.Pass(), &buf, &data, &validate_params); | 229 SerializeArray_(&array, &buf, &data, &validate_params); |
230 | 230 |
231 Array<bool> array2; | 231 Array<bool> array2; |
232 Deserialize_(data, &array2); | 232 Deserialize_(data, &array2); |
233 | 233 |
234 EXPECT_EQ(10U, array2.size()); | 234 EXPECT_EQ(10U, array2.size()); |
235 for (size_t i = 0; i < array2.size(); ++i) | 235 for (size_t i = 0; i < array2.size(); ++i) |
236 EXPECT_EQ(i % 2 ? true : false, array2[i]); | 236 EXPECT_EQ(i % 2 ? true : false, array2[i]); |
237 } | 237 } |
238 | 238 |
239 TEST_F(ArrayTest, Serialization_ArrayOfString) { | 239 TEST_F(ArrayTest, Serialization_ArrayOfString) { |
240 Array<String> array(10); | 240 Array<String> array(10); |
241 for (size_t i = 0; i < array.size(); ++i) { | 241 for (size_t i = 0; i < array.size(); ++i) { |
242 char c = 'A' + static_cast<char>(i); | 242 char c = 'A' + static_cast<char>(i); |
243 array[i] = String(&c, 1); | 243 array[i] = String(&c, 1); |
244 } | 244 } |
245 | 245 |
246 size_t size = GetSerializedSize_(array); | 246 size_t size = GetSerializedSize_(array); |
247 EXPECT_EQ(8U + // array header | 247 EXPECT_EQ(8U + // array header |
248 10 * 8U + // array payload (10 pointers) | 248 10 * 8U + // array payload (10 pointers) |
249 10 * (8U + // string header | 249 10 * (8U + // string header |
250 8U), // string length of 1 padded to 8 | 250 8U), // string length of 1 padded to 8 |
251 size); | 251 size); |
252 | 252 |
253 FixedBufferForTesting buf(size); | 253 FixedBufferForTesting buf(size); |
254 Array_Data<String_Data*>* data; | 254 Array_Data<String_Data*>* data; |
255 ArrayValidateParams validate_params( | 255 ArrayValidateParams validate_params( |
256 0, false, new ArrayValidateParams(0, false, nullptr)); | 256 0, false, new ArrayValidateParams(0, false, nullptr)); |
257 SerializeArray_(array.Pass(), &buf, &data, &validate_params); | 257 SerializeArray_(&array, &buf, &data, &validate_params); |
258 | 258 |
259 Array<String> array2; | 259 Array<String> array2; |
260 Deserialize_(data, &array2); | 260 Deserialize_(data, &array2); |
261 | 261 |
262 EXPECT_EQ(10U, array2.size()); | 262 EXPECT_EQ(10U, array2.size()); |
263 for (size_t i = 0; i < array2.size(); ++i) { | 263 for (size_t i = 0; i < array2.size(); ++i) { |
264 char c = 'A' + static_cast<char>(i); | 264 char c = 'A' + static_cast<char>(i); |
265 EXPECT_EQ(String(&c, 1), array2[i]); | 265 EXPECT_EQ(String(&c, 1), array2[i]); |
266 } | 266 } |
267 } | 267 } |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 EXPECT_TRUE(array[i].moved()); | 436 EXPECT_TRUE(array[i].moved()); |
437 EXPECT_EQ(value_ptrs[i], array[i].ptr()); | 437 EXPECT_EQ(value_ptrs[i], array[i].ptr()); |
438 } | 438 } |
439 array.reset(); | 439 array.reset(); |
440 EXPECT_EQ(0u, MoveOnlyType::num_instances()); | 440 EXPECT_EQ(0u, MoveOnlyType::num_instances()); |
441 } | 441 } |
442 | 442 |
443 } // namespace | 443 } // namespace |
444 } // namespace test | 444 } // namespace test |
445 } // namespace mojo | 445 } // namespace mojo |
OLD | NEW |