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_serialization.h" | 6 #include "mojo/public/cpp/bindings/lib/array_serialization.h" |
7 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" | 7 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
| 8 #include "mojo/public/cpp/bindings/lib/map_serialization.h" |
8 #include "mojo/public/cpp/bindings/map.h" | 9 #include "mojo/public/cpp/bindings/map.h" |
9 #include "mojo/public/cpp/bindings/string.h" | 10 #include "mojo/public/cpp/bindings/string.h" |
10 #include "mojo/public/cpp/environment/environment.h" | 11 #include "mojo/public/cpp/environment/environment.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
12 | 13 |
13 namespace mojo { | 14 namespace mojo { |
14 namespace test { | 15 namespace test { |
15 | 16 |
16 namespace { | 17 namespace { |
17 | 18 |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 } | 244 } |
244 | 245 |
245 Map<String, Array<String> > m2 = m.Clone(); | 246 Map<String, Array<String> > m2 = m.Clone(); |
246 | 247 |
247 for (auto it = m2.begin(); it != m2.end(); ++it) { | 248 for (auto it = m2.begin(); it != m2.end(); ++it) { |
248 ASSERT_EQ(1u, it.GetValue().size()); | 249 ASSERT_EQ(1u, it.GetValue().size()); |
249 EXPECT_EQ(it.GetKey(), it.GetValue().at(0)); | 250 EXPECT_EQ(it.GetKey(), it.GetValue().at(0)); |
250 } | 251 } |
251 } | 252 } |
252 | 253 |
| 254 TEST_F(MapTest, ArrayOfMap) { |
| 255 { |
| 256 Array<Map<int32_t, int8_t>> array(1); |
| 257 array[0].insert(1, 42); |
| 258 |
| 259 size_t size = GetSerializedSize_(array); |
| 260 |
| 261 internal::FixedBuffer buf(size); |
| 262 internal::Array_Data<internal::MapPointerPair<int32_t, int8_t>>* data; |
| 263 SerializeArray_< |
| 264 internal::ArrayValidateParams<0, false, |
| 265 internal::ArrayValidateParams<0, false, |
| 266 internal::NoValidateParams>>>(array.Pass(), &buf, &data); |
| 267 |
| 268 Array<Map<int32_t, int8_t>> array2; |
| 269 Deserialize_(data, &array2); |
| 270 ASSERT_EQ(1u, array2.size()); |
| 271 ASSERT_EQ(1u, array2[0].size()); |
| 272 ASSERT_EQ(42, array2[0].at(1)); |
| 273 } |
| 274 |
| 275 { |
| 276 Array<Map<String, Array<bool>>> array(1); |
| 277 Array<bool> map_value(2); |
| 278 map_value[0] = false; |
| 279 map_value[1] = true; |
| 280 |
| 281 array[0].insert("hello world", map_value.Pass()); |
| 282 |
| 283 size_t size = GetSerializedSize_(array); |
| 284 |
| 285 internal::FixedBuffer buf(size); |
| 286 internal::Array_Data< |
| 287 internal::MapPointerPair<internal::String_Data*, |
| 288 internal::Array_Data<bool>*>>* data; |
| 289 SerializeArray_< |
| 290 internal::ArrayValidateParams<0, false, |
| 291 internal::ArrayValidateParams<0, false, |
| 292 internal::ArrayValidateParams<0, false, |
| 293 internal::NoValidateParams>>>>(array.Pass(), &buf, &data); |
| 294 |
| 295 Array<Map<String, Array<bool>>> array2; |
| 296 Deserialize_(data, &array2); |
| 297 ASSERT_EQ(1u, array2.size()); |
| 298 ASSERT_EQ(1u, array2[0].size()); |
| 299 ASSERT_FALSE(array2[0].at("hello world")[0]); |
| 300 ASSERT_TRUE(array2[0].at("hello world")[1]); |
| 301 } |
| 302 |
| 303 // TODO(yzshen): More tests... |
| 304 } |
| 305 |
253 } // namespace | 306 } // namespace |
254 } // namespace test | 307 } // namespace test |
255 } // namespace mojo | 308 } // namespace mojo |
256 | 309 |
OLD | NEW |