| 103 | }; |
| 104 | |
| 105 | template <typename TFrom, typename TTo> void doMoveAssignmentTest(TFrom& hm1, TTo& hm2, size_t numValuesToInsert) |
| 106 | { |
| 107 | // insert values |
| 108 | for (size_t i = 0; i < numValuesToInsert; i++) |
| 109 | { |
| 110 | hm1.emplace(int(i), uint32_t(i + 13)); |
| 111 | } |
| 112 | |
| 113 | { |
| 114 | EXPECT_TRUE(hm1.has(0)); |
| 115 | EXPECT_TRUE(hm1.has(1)); |
| 116 | EXPECT_TRUE(hm1.has(2)); |
| 117 | |
| 118 | auto it1 = hm1.find(0); |
| 119 | auto it2 = hm1.find(1); |
| 120 | auto it3 = hm1.find(2); |
| 121 | |
| 122 | EXPECT_NE(it1, hm1.end()); |
| 123 | EXPECT_NE(it2, hm1.end()); |
| 124 | EXPECT_NE(it3, hm1.end()); |
| 125 | |
| 126 | const int& key1 = it1->first; |
| 127 | const ComplexVal& value1 = it1->second; |
| 128 | |
| 129 | const int& key2 = it2->first; |
| 130 | const ComplexVal& value2 = it2->second; |
| 131 | |
| 132 | const int& key3 = it3->first; |
| 133 | const ComplexVal& value3 = it3->second; |
| 134 | |
| 135 | EXPECT_EQ(key1, 0); |
| 136 | EXPECT_EQ(key2, 1); |
| 137 | EXPECT_EQ(key3, 2); |
| 138 | |
| 139 | EXPECT_EQ(value1.v, uint32_t(13)); |
| 140 | EXPECT_EQ(value2.v, uint32_t(14)); |
| 141 | EXPECT_EQ(value3.v, uint32_t(15)); |
| 142 | } |
| 143 | |
| 144 | // move assign to other hash map |
| 145 | hm2 = std::move(hm1); |
| 146 | |
| 147 | { |
| 148 | EXPECT_TRUE(hm2.has(0)); |
| 149 | EXPECT_TRUE(hm2.has(1)); |
| 150 | EXPECT_TRUE(hm2.has(2)); |
| 151 | |
| 152 | auto it1 = hm2.find(0); |
| 153 | auto it2 = hm2.find(1); |
| 154 | auto it3 = hm2.find(2); |
| 155 | |
| 156 | EXPECT_NE(it1, hm2.end()); |
| 157 | EXPECT_NE(it2, hm2.end()); |
| 158 | EXPECT_NE(it3, hm2.end()); |
| 159 | |
| 160 | const int& key1 = it1->first; |
| 161 | const ComplexVal& value1 = it1->second; |
| 162 | |