Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: mojo/public/cpp/bindings/tests/array_unittest.cc

Issue 1358353002: * Change C++ serialization/deserialization to not be move-only operations (with the except of |Ha… (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698