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