| 54 | }; |
| 55 | |
| 56 | TEST_F(FlatMapTest, initialization_of_values) { |
| 57 | // Construct non-POD values w/o copy-construction. |
| 58 | butil::FlatMap<int, Foo> map; |
| 59 | ASSERT_EQ(0, map.init(32)); |
| 60 | ASSERT_EQ(0, g_foo_ctor); |
| 61 | ASSERT_EQ(0, g_foo_copy_ctor); |
| 62 | ASSERT_EQ(0, g_foo_assign); |
| 63 | map[1]; |
| 64 | ASSERT_EQ(1, g_foo_ctor); |
| 65 | ASSERT_EQ(0, g_foo_copy_ctor); |
| 66 | ASSERT_EQ(0, g_foo_assign); |
| 67 | |
| 68 | // Zeroize POD values. |
| 69 | butil::FlatMap<int, Bar> map2; |
| 70 | ASSERT_EQ(0, map2.init(32)); |
| 71 | Bar& g = map2[1]; |
| 72 | ASSERT_EQ(0, g.x); |
| 73 | g.x = 123; |
| 74 | ASSERT_EQ(1u, map2.erase(1)); |
| 75 | ASSERT_EQ(123, g.x); // g is still accessible in this case. |
| 76 | Bar& g2 = map2[1]; |
| 77 | ASSERT_EQ(&g, &g2); |
| 78 | ASSERT_EQ(0, g2.x); |
| 79 | } |
| 80 | |
| 81 | TEST_F(FlatMapTest, swap_pooled_allocator) { |
| 82 | butil::details::PooledAllocator<int, 128> a1; |
nothing calls this directly
no test coverage detected