| 133 | } // end namespace |
| 134 | |
| 135 | TEST(VariantTest, MoveAndCopyBetweenBigAndSmall) { |
| 136 | Variant x; |
| 137 | int deleted_big = 0; |
| 138 | int deleted_small = 0; |
| 139 | x = DeleteCounter</*BIG=*/true>(&deleted_big); |
| 140 | EXPECT_EQ(deleted_big, 0); |
| 141 | x = DeleteCounter</*BIG=*/false>(&deleted_small); |
| 142 | EXPECT_EQ(deleted_big, 1); |
| 143 | EXPECT_EQ(deleted_small, 0); |
| 144 | x = DeleteCounter</*BIG=*/true>(&deleted_big); |
| 145 | EXPECT_EQ(deleted_big, 1); |
| 146 | EXPECT_EQ(deleted_small, 1); |
| 147 | x.clear(); |
| 148 | EXPECT_EQ(deleted_big, 2); |
| 149 | EXPECT_EQ(deleted_small, 1); |
| 150 | DeleteCounter</*BIG=*/true> big(&deleted_big); |
| 151 | DeleteCounter</*BIG=*/false> small(&deleted_small); |
| 152 | EXPECT_EQ(deleted_big, 2); |
| 153 | EXPECT_EQ(deleted_small, 1); |
| 154 | x = big; |
| 155 | EXPECT_EQ(deleted_big, 2); |
| 156 | EXPECT_EQ(deleted_small, 1); |
| 157 | x = small; |
| 158 | EXPECT_EQ(deleted_big, 3); |
| 159 | EXPECT_EQ(deleted_small, 1); |
| 160 | x = std::move(big); |
| 161 | EXPECT_EQ(deleted_big, 3); |
| 162 | EXPECT_EQ(deleted_small, 2); |
| 163 | x = std::move(small); |
| 164 | EXPECT_EQ(deleted_big, 4); |
| 165 | EXPECT_EQ(deleted_small, 2); |
| 166 | x.clear(); |
| 167 | EXPECT_EQ(deleted_big, 4); |
| 168 | EXPECT_EQ(deleted_small, 3); |
| 169 | } |
| 170 | |
| 171 | TEST(VariantTest, MoveAndCopyBetweenBigAndSmallVariants) { |
| 172 | int deleted_big = 0; |
nothing calls this directly
no test coverage detected