aboutsummaryrefslogtreecommitdiff
path: root/tests/test_bytes_odd_alloc.rs
diff options
context:
space:
mode:
authorGravatar Émile Fugulin <code@efugulin.com> 2024-05-05 11:58:00 -0400
committerGravatar GitHub <noreply@github.com> 2024-05-05 17:58:00 +0200
commit86694b05649c0c1666044b2ba5c386c2328aac18 (patch)
tree42477da2d963035728c3befcfada19231a2d6a80 /tests/test_bytes_odd_alloc.rs
parent0c17e99283185b94ab68cdf0fb62da53cbd765ee (diff)
downloadbytes-86694b05649c0c1666044b2ba5c386c2328aac18.tar.gz
bytes-86694b05649c0c1666044b2ba5c386c2328aac18.tar.zst
bytes-86694b05649c0c1666044b2ba5c386c2328aac18.zip
Add zero-copy make_mut (#695)
Diffstat (limited to '')
-rw-r--r--tests/test_bytes_odd_alloc.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/test_bytes_odd_alloc.rs b/tests/test_bytes_odd_alloc.rs
index 27ed877..8008a0e 100644
--- a/tests/test_bytes_odd_alloc.rs
+++ b/tests/test_bytes_odd_alloc.rs
@@ -95,3 +95,53 @@ fn test_bytes_into_vec() {
assert_eq!(Vec::from(b2), vec[20..]);
assert_eq!(Vec::from(b1), vec[..20]);
}
+
+#[test]
+fn test_bytes_make_mut_vec() {
+ let vec = vec![33u8; 1024];
+
+ // Test case where kind == KIND_VEC
+ let b1 = Bytes::from(vec.clone());
+ let b1m = b1.make_mut();
+ assert_eq!(b1m, vec);
+}
+
+#[test]
+fn test_bytes_make_mut_arc_1() {
+ let vec = vec![33u8; 1024];
+
+ // Test case where kind == KIND_ARC, ref_cnt == 1
+ let b1 = Bytes::from(vec.clone());
+ drop(b1.clone());
+ let b1m = b1.make_mut();
+ assert_eq!(b1m, vec);
+}
+
+#[test]
+fn test_bytes_make_mut_arc_2() {
+ let vec = vec![33u8; 1024];
+
+ // Test case where kind == KIND_ARC, ref_cnt == 2
+ let b1 = Bytes::from(vec.clone());
+ let b2 = b1.clone();
+ let b1m = b1.make_mut();
+ assert_eq!(b1m, vec);
+
+ // Test case where vtable = SHARED_VTABLE, kind == KIND_ARC, ref_cnt == 1
+ let b2m = b2.make_mut();
+ assert_eq!(b2m, vec);
+}
+
+#[test]
+fn test_bytes_make_mut_arc_offset() {
+ let vec = vec![33u8; 1024];
+
+ // Test case where offset != 0
+ let mut b1 = Bytes::from(vec.clone());
+ let b2 = b1.split_off(20);
+ let b1m = b1.make_mut();
+ let b2m = b2.make_mut();
+
+ assert_eq!(b2m, vec[20..]);
+ assert_eq!(b1m, vec[..20]);
+}