diff options
author | 2020-03-13 07:55:54 -0500 | |
---|---|---|
committer | 2020-03-24 11:14:16 -0700 | |
commit | 8bbe9dd87bdf11b1536e56415a39827eeb6d0f3e (patch) | |
tree | c42d50f8249af18e7d976ab7ae4c9b0cf4b420bc /tests/test_bytes.rs | |
parent | fe6e67386451715c5d609c90a41e98ef80f0e1d1 (diff) | |
download | bytes-8bbe9dd87bdf11b1536e56415a39827eeb6d0f3e.tar.gz bytes-8bbe9dd87bdf11b1536e56415a39827eeb6d0f3e.tar.zst bytes-8bbe9dd87bdf11b1536e56415a39827eeb6d0f3e.zip |
Fix #352 -- Make freeze respect the start offset for BytesMuts in Vec mode
Diffstat (limited to 'tests/test_bytes.rs')
-rw-r--r-- | tests/test_bytes.rs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/test_bytes.rs b/tests/test_bytes.rs index 40fcae4..4775773 100644 --- a/tests/test_bytes.rs +++ b/tests/test_bytes.rs @@ -343,6 +343,72 @@ fn freeze_clone_unique() { } #[test] +fn freeze_after_advance() { + let s = &b"abcdefgh"[..]; + let mut b = BytesMut::from(s); + b.advance(1); + assert_eq!(b, s[1..]); + let b = b.freeze(); + // Verify fix for #352. Previously, freeze would ignore the start offset + // for BytesMuts in Vec mode. + assert_eq!(b, s[1..]); +} + +#[test] +fn freeze_after_advance_arc() { + let s = &b"abcdefgh"[..]; + let mut b = BytesMut::from(s); + // Make b Arc + let _ = b.split_to(0); + b.advance(1); + assert_eq!(b, s[1..]); + let b = b.freeze(); + assert_eq!(b, s[1..]); +} + +#[test] +fn freeze_after_split_to() { + let s = &b"abcdefgh"[..]; + let mut b = BytesMut::from(s); + let _ = b.split_to(1); + assert_eq!(b, s[1..]); + let b = b.freeze(); + assert_eq!(b, s[1..]); +} + +#[test] +fn freeze_after_truncate() { + let s = &b"abcdefgh"[..]; + let mut b = BytesMut::from(s); + b.truncate(7); + assert_eq!(b, s[..7]); + let b = b.freeze(); + assert_eq!(b, s[..7]); +} + +#[test] +fn freeze_after_truncate_arc() { + let s = &b"abcdefgh"[..]; + let mut b = BytesMut::from(s); + // Make b Arc + let _ = b.split_to(0); + b.truncate(7); + assert_eq!(b, s[..7]); + let b = b.freeze(); + assert_eq!(b, s[..7]); +} + +#[test] +fn freeze_after_split_off() { + let s = &b"abcdefgh"[..]; + let mut b = BytesMut::from(s); + let _ = b.split_off(7); + assert_eq!(b, s[..7]); + let b = b.freeze(); + assert_eq!(b, s[..7]); +} + +#[test] fn fns_defined_for_bytes_mut() { let mut bytes = BytesMut::from(&b"hello world"[..]); |