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