@@ -98,6 +98,14 @@ TEST(LinkedHashMapTest, Assign) {
9898 FAIL () << " Assigned map's find method returned an invalid iterator." ;
9999}
100100
101+ // Tests that self-assignment works.
102+ TEST (LinkedHashMapTest, SelfAssign) {
103+ linked_hash_map<int , int > a{{1 , 1 }, {2 , 2 }, {3 , 3 }};
104+ auto & a_ref = a;
105+ a = a_ref;
106+ EXPECT_THAT (a, ElementsAre (Pair (1 , 1 ), Pair (2 , 2 ), Pair (3 , 3 )));
107+ }
108+
101109// Tests that move constructor works.
102110TEST (LinkedHashMapTest, Move) {
103111 // Use unique_ptr as an example of a non-copyable type.
@@ -108,6 +116,14 @@ TEST(LinkedHashMapTest, Move) {
108116 EXPECT_THAT (n, ElementsAre (Pair (2 , Pointee (12 )), Pair (3 , Pointee (13 ))));
109117}
110118
119+ // Tests that self-moving works.
120+ TEST (LinkedHashMapTest, SelfMove) {
121+ linked_hash_map<int , int > a{{1 , 1 }, {2 , 2 }, {3 , 3 }};
122+ auto & a_ref = a;
123+ a = std::move (a_ref);
124+ EXPECT_THAT (a, ElementsAre (Pair (1 , 1 ), Pair (2 , 2 ), Pair (3 , 3 )));
125+ }
126+
111127TEST (LinkedHashMapTest, CanInsertMoveOnly) {
112128 linked_hash_map<int , std::unique_ptr<int >> m;
113129 struct Data {
@@ -512,6 +528,13 @@ TEST(LinkedHashMapTest, Swap) {
512528 ASSERT_EQ (2 , m2.size ());
513529}
514530
531+ TEST (LinkedHashMapTest, SelfSwap) {
532+ linked_hash_map<int , int > a{{1 , 1 }, {2 , 2 }, {3 , 3 }};
533+ using std::swap;
534+ swap (a, a);
535+ EXPECT_THAT (a, ElementsAre (Pair (1 , 1 ), Pair (2 , 2 ), Pair (3 , 3 )));
536+ }
537+
515538TEST (LinkedHashMapTest, InitializerList) {
516539 linked_hash_map<int , int > m{{1 , 2 }, {3 , 4 }};
517540 ASSERT_EQ (2 , m.size ());
0 commit comments