MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / test_hash_map

Function test_hash_map

src/core/test/utils/thin.cpp:47–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45
46template <class Val>
47void test_hash_map() {
48 ThinHashMap<int, Val> map;
49 ASSERT_TRUE(map.empty());
50 map[2] = 3;
51 ASSERT_FALSE(map.empty());
52 ASSERT_TRUE(map.emplace(1, 2).second);
53 ASSERT_FALSE(map.insert({2, Val(2)}).second);
54 ASSERT_EQ(2u, map.insert({1, Val(0)}).first->second.get());
55 ASSERT_EQ(1, map.insert({1, Val(0)}).first->first);
56 ASSERT_EQ(2u, map[1].get());
57 ASSERT_EQ(3u, map[2].get());
58
59 ASSERT_EQ(2u, map_val_inst);
60 ASSERT_EQ(2u, map.size());
61
62 for (auto&& i : map)
63 i.second = 5;
64 ASSERT_EQ(5u, map[2].get());
65
66 ASSERT_EQ(0u, map[-1].get());
67 ASSERT_EQ(map_val_inst, map.size());
68
69 ASSERT_EQ(5u, map.at(2).get());
70 map.at(2) = 3;
71 ASSERT_EQ(3u, map.at(2).get());
72 ASSERT_EQ(1u, map.count(1));
73 ASSERT_EQ(0u, map.count(12));
74 ASSERT_EQ(map.end(), map.find(12));
75 ASSERT_NE(map.end(), map.find(1));
76 {
77 auto next = std::next(map.find(2));
78 ASSERT_EQ(next, map.erase(map.find(2)));
79 }
80 ASSERT_EQ(0u, map.erase(12));
81 ASSERT_EQ(1u, map.erase(-1));
82 ASSERT_EQ(1u, map_val_inst);
83 ASSERT_EQ(1u, map.size());
84 ASSERT_EQ(5u, map.at(1).get());
85
86 map.clear();
87 ASSERT_EQ(0u, map.size());
88 ASSERT_TRUE(map.empty());
89 ASSERT_EQ(map_val_inst, map.size());
90
91 map[0] = 2;
92 map.find(0)->second = 3;
93 ASSERT_EQ(3u, map[0].get());
94 // clear by dtor
95}
96
97struct IncompleteValue {
98 class Value;

Callers

nothing calls this directly

Calls 12

nextFunction · 0.85
emptyMethod · 0.45
emplaceMethod · 0.45
insertMethod · 0.45
getMethod · 0.45
sizeMethod · 0.45
atMethod · 0.45
countMethod · 0.45
endMethod · 0.45
findMethod · 0.45
eraseMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected