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

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

Issue 1683863002: Mojo C++ bindings: make mojo::Map<K,V> more friendly with std::map<K,V>. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « mojo/public/cpp/bindings/map.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/map.h" 5 #include "mojo/public/cpp/bindings/map.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 Array<int32_t> array(1); 85 Array<int32_t> array(1);
86 array[0] = kStringIntData[i].int_data; 86 array[0] = kStringIntData[i].int_data;
87 map[key] = std::move(array); 87 map[key] = std::move(array);
88 EXPECT_TRUE(map); 88 EXPECT_TRUE(map);
89 } 89 }
90 90
91 // We now read back that data, to test the behavior of operator[]. 91 // We now read back that data, to test the behavior of operator[].
92 for (size_t i = 0; i < kStringIntDataSize; ++i) { 92 for (size_t i = 0; i < kStringIntDataSize; ++i) {
93 auto it = map.find(kStringIntData[i].string_data); 93 auto it = map.find(kStringIntData[i].string_data);
94 ASSERT_TRUE(it != map.end()); 94 ASSERT_TRUE(it != map.end());
95 ASSERT_EQ(1u, it.GetValue().size()); 95 ASSERT_EQ(1u, it->second.size());
96 EXPECT_EQ(kStringIntData[i].int_data, it.GetValue()[0]); 96 EXPECT_EQ(kStringIntData[i].int_data, it->second[0]);
97 } 97 }
98 } 98 }
99 99
100 TEST_F(MapTest, ConstructedFromArray) { 100 TEST_F(MapTest, ConstructedFromArray) {
101 Array<String> keys(kStringIntDataSize); 101 Array<String> keys(kStringIntDataSize);
102 Array<int> values(kStringIntDataSize); 102 Array<int> values(kStringIntDataSize);
103 for (size_t i = 0; i < kStringIntDataSize; ++i) { 103 for (size_t i = 0; i < kStringIntDataSize; ++i) {
104 keys[i] = kStringIntData[i].string_data; 104 keys[i] = kStringIntData[i].string_data;
105 values[i] = kStringIntData[i].int_data; 105 values[i] = kStringIntData[i].int_data;
106 } 106 }
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 Map<String, Array<String>> m; 259 Map<String, Array<String>> m;
260 for (size_t i = 0; i < kStringIntDataSize; ++i) { 260 for (size_t i = 0; i < kStringIntDataSize; ++i) {
261 Array<String> s; 261 Array<String> s;
262 s.push_back(kStringIntData[i].string_data); 262 s.push_back(kStringIntData[i].string_data);
263 m.insert(kStringIntData[i].string_data, std::move(s)); 263 m.insert(kStringIntData[i].string_data, std::move(s));
264 } 264 }
265 265
266 Map<String, Array<String>> m2 = m.Clone(); 266 Map<String, Array<String>> m2 = m.Clone();
267 267
268 for (auto it = m2.begin(); it != m2.end(); ++it) { 268 for (auto it = m2.begin(); it != m2.end(); ++it) {
269 ASSERT_EQ(1u, it.GetValue().size()); 269 ASSERT_EQ(1u, it->second.size());
270 EXPECT_EQ(it.GetKey(), it.GetValue().at(0)); 270 EXPECT_EQ(it->first, it->second.at(0));
271 } 271 }
272 } 272 }
273 273
274 TEST_F(MapTest, ArrayOfMap) { 274 TEST_F(MapTest, ArrayOfMap) {
275 { 275 {
276 Array<Map<int32_t, int8_t>> array(1); 276 Array<Map<int32_t, int8_t>> array(1);
277 array[0].insert(1, 42); 277 array[0].insert(1, 42);
278 278
279 size_t size = GetSerializedSize_(array); 279 size_t size = GetSerializedSize_(array);
280 FixedBufferForTesting buf(size); 280 FixedBufferForTesting buf(size);
(...skipping 28 matching lines...) Expand all
309 Array<Map<String, Array<bool>>> deserialized_array; 309 Array<Map<String, Array<bool>>> deserialized_array;
310 Deserialize_(data, &deserialized_array, nullptr); 310 Deserialize_(data, &deserialized_array, nullptr);
311 311
312 ASSERT_EQ(1u, deserialized_array.size()); 312 ASSERT_EQ(1u, deserialized_array.size());
313 ASSERT_EQ(1u, deserialized_array[0].size()); 313 ASSERT_EQ(1u, deserialized_array[0].size());
314 ASSERT_FALSE(deserialized_array[0].at("hello world")[0]); 314 ASSERT_FALSE(deserialized_array[0].at("hello world")[0]);
315 ASSERT_TRUE(deserialized_array[0].at("hello world")[1]); 315 ASSERT_TRUE(deserialized_array[0].at("hello world")[1]);
316 } 316 }
317 } 317 }
318 318
319 TEST_F(MapTest, MoveFromAndToSTLMap_Copyable) {
320 std::map<int32_t, CopyableType> map1;
321 map1.insert(std::make_pair(123, CopyableType()));
322 map1[123].ResetCopied();
323
324 Map<int32_t, CopyableType> mojo_map(std::move(map1));
325 ASSERT_EQ(1u, mojo_map.size());
326 ASSERT_NE(mojo_map.end(), mojo_map.find(123));
327 ASSERT_FALSE(mojo_map[123].copied());
328
329 std::map<int32_t, CopyableType> map2(mojo_map.PassStorage());
330 ASSERT_EQ(1u, map2.size());
331 ASSERT_NE(map2.end(), map2.find(123));
332 ASSERT_FALSE(map2[123].copied());
333
334 ASSERT_EQ(0u, mojo_map.size());
335 ASSERT_TRUE(mojo_map.is_null());
336 }
337
338 TEST_F(MapTest, MoveFromAndToSTLMap_MoveOnly) {
339 std::map<int32_t, MoveOnlyType> map1;
340 map1.insert(std::make_pair(123, MoveOnlyType()));
341
342 Map<int32_t, MoveOnlyType> mojo_map(std::move(map1));
343 ASSERT_EQ(1u, mojo_map.size());
344 ASSERT_NE(mojo_map.end(), mojo_map.find(123));
345
346 std::map<int32_t, MoveOnlyType> map2(mojo_map.PassStorage());
347 ASSERT_EQ(1u, map2.size());
348 ASSERT_NE(map2.end(), map2.find(123));
349
350 ASSERT_EQ(0u, mojo_map.size());
351 ASSERT_TRUE(mojo_map.is_null());
352 }
353
319 } // namespace 354 } // namespace
320 } // namespace test 355 } // namespace test
321 } // namespace mojo 356 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/map.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698