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

Function run_multi_key

src/core/test/utils/big_key_hashmap.cpp:51–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49
50template <class Hash>
51void run_multi_key() {
52 nr_key_copy = 0;
53 {
54 BigKeyHashMap<int, Hash, Ref<Key>, Copy<int>, Ref<Key>> map;
55 auto v1 = map.get(1, 1, 1);
56 ASSERT_TRUE(v1.first);
57 ASSERT_EQ(2, nr_key_copy);
58 ASSERT_FALSE(map.get(1, 1, 1).first);
59 ASSERT_EQ(v1.second, map.get(1, 1, 1).second);
60 ASSERT_EQ(2, nr_key_copy);
61
62 auto v2 = map.get(1, 1, 2);
63 ASSERT_TRUE(v2.first);
64 ASSERT_EQ(4, nr_key_copy);
65 ASSERT_FALSE(map.get(1, 1, 2).first);
66 ASSERT_EQ(v2.second, map.get(1, 1, 2).second);
67 ASSERT_NE(v1.second, v2.second);
68 ASSERT_EQ(4, nr_key_copy);
69 ASSERT_EQ(4, refcnt);
70
71 ThinHashSet<int*> vals;
72 for (int run = 0; run < 3; ++run) {
73 for (int i = 3; i < 5; ++i) {
74 for (int j = 3; j < 5; ++j) {
75 for (int k = 3; k < 5; ++k) {
76 auto ins = map.get(i, j, k);
77 if (run) {
78 ASSERT_FALSE(ins.first);
79 ASSERT_EQ(20, nr_key_copy);
80 ASSERT_EQ(20, refcnt);
81 } else {
82 ASSERT_TRUE(ins.first);
83 }
84 vals.insert(ins.second);
85 }
86 }
87 }
88 }
89 ASSERT_EQ(8u, vals.size());
90 }
91 ASSERT_EQ(0, refcnt);
92}
93
94} // anonymous namespace
95

Callers

nothing calls this directly

Calls 3

getMethod · 0.45
insertMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected