Skip to content

Commit a5817ab

Browse files
committed
test(packed_int_vector): test copy/move operations
1 parent 7d8d5de commit a5817ab

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

test/packed_int_vector_test.cpp

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,3 +787,72 @@ TEST(packed_int_vector, auto_mixed_operations_stress) {
787787
}
788788
}
789789
}
790+
791+
TEST(packed_int_vector, copy_constructor_and_assignment) {
792+
packed_int_vector<uint32_t> vec(5);
793+
794+
vec.push_back(1);
795+
vec.push_back(31);
796+
vec.push_back(7);
797+
798+
packed_int_vector<uint32_t> copy{vec};
799+
800+
EXPECT_EQ(copy.bits(), 5);
801+
EXPECT_THAT(copy.unpack(), ElementsAre(1, 31, 7));
802+
803+
copy[1] = 3;
804+
805+
EXPECT_THAT(vec.unpack(), ElementsAre(1, 31, 7));
806+
EXPECT_THAT(copy.unpack(), ElementsAre(1, 3, 7));
807+
808+
packed_int_vector<uint32_t> assigned(2);
809+
assigned = vec;
810+
811+
EXPECT_EQ(assigned.bits(), 5);
812+
EXPECT_THAT(assigned.unpack(), ElementsAre(1, 31, 7));
813+
814+
assigned[0] = 0;
815+
816+
EXPECT_THAT(vec.unpack(), ElementsAre(1, 31, 7));
817+
EXPECT_THAT(assigned.unpack(), ElementsAre(0, 31, 7));
818+
}
819+
820+
TEST(packed_int_vector, move_constructor_and_assignment) {
821+
packed_int_vector<uint32_t> vec(5);
822+
823+
vec.push_back(1);
824+
vec.push_back(31);
825+
vec.push_back(7);
826+
827+
packed_int_vector<uint32_t> moved{std::move(vec)};
828+
829+
EXPECT_EQ(moved.bits(), 5);
830+
EXPECT_THAT(moved.unpack(), ElementsAre(1, 31, 7));
831+
832+
packed_int_vector<uint32_t> other(2);
833+
other.push_back(1);
834+
other.push_back(2);
835+
836+
other = std::move(moved);
837+
838+
EXPECT_EQ(other.bits(), 5);
839+
EXPECT_THAT(other.unpack(), ElementsAre(1, 31, 7));
840+
}
841+
842+
TEST(packed_int_vector, auto_copy_and_move_preserve_bit_width) {
843+
auto_packed_int_vector<uint32_t> vec(0);
844+
845+
vec.push_back(1);
846+
vec.push_back(31);
847+
vec.push_back(7);
848+
849+
EXPECT_EQ(vec.bits(), 5);
850+
851+
auto_packed_int_vector<uint32_t> copy{vec};
852+
EXPECT_EQ(copy.bits(), 5);
853+
EXPECT_THAT(copy.unpack(), ElementsAre(1, 31, 7));
854+
855+
auto_packed_int_vector<uint32_t> moved{std::move(copy)};
856+
EXPECT_EQ(moved.bits(), 5);
857+
EXPECT_THAT(moved.unpack(), ElementsAre(1, 31, 7));
858+
}

0 commit comments

Comments
 (0)