Add two QuicheMemSliceTests.
Test that move assignment operator works as expected on a non-empty instance.
Also test Reset().
PiperOrigin-RevId: 444547860
diff --git a/quiche/common/platform/api/quiche_mem_slice_test.cc b/quiche/common/platform/api/quiche_mem_slice_test.cc
index 472dbe1..4eadcc9 100644
--- a/quiche/common/platform/api/quiche_mem_slice_test.cc
+++ b/quiche/common/platform/api/quiche_mem_slice_test.cc
@@ -4,6 +4,7 @@
#include "quiche/common/platform/api/quiche_mem_slice.h"
+#include <cstring>
#include <memory>
#include "absl/strings/string_view.h"
@@ -49,6 +50,33 @@
EXPECT_TRUE(slice_.empty());
}
+TEST_F(QuicheMemSliceTest, MoveAssignNonEmpty) {
+ const absl::string_view data("foo");
+ auto buffer = std::make_unique<char[]>(data.length());
+ std::memcpy(buffer.get(), data.data(), data.length());
+
+ QuicheMemSlice moved(std::move(buffer), data.length());
+ EXPECT_EQ(data, moved.AsStringView());
+
+ moved = std::move(slice_);
+ EXPECT_EQ(moved.data(), orig_data_);
+ EXPECT_EQ(moved.length(), orig_length_);
+ EXPECT_EQ(nullptr, slice_.data());
+ EXPECT_EQ(0u, slice_.length());
+ EXPECT_TRUE(slice_.empty());
+}
+
+TEST_F(QuicheMemSliceTest, Reset) {
+ EXPECT_EQ(slice_.data(), orig_data_);
+ EXPECT_EQ(slice_.length(), orig_length_);
+ EXPECT_FALSE(slice_.empty());
+
+ slice_.Reset();
+
+ EXPECT_EQ(slice_.length(), 0u);
+ EXPECT_TRUE(slice_.empty());
+}
+
TEST_F(QuicheMemSliceTest, SliceAllocatedOnHeap) {
auto buffer = std::make_unique<char[]>(128);
char* orig_data = buffer.get();