diff options
author | 2024-05-05 11:58:00 -0400 | |
---|---|---|
committer | 2024-05-05 17:58:00 +0200 | |
commit | 86694b05649c0c1666044b2ba5c386c2328aac18 (patch) | |
tree | 42477da2d963035728c3befcfada19231a2d6a80 /tests/test_bytes_odd_alloc.rs | |
parent | 0c17e99283185b94ab68cdf0fb62da53cbd765ee (diff) | |
download | bytes-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.rs | 50 |
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]); +} |