summaryrefslogtreecommitdiff
path: root/serde_v8/tests/magic.rs
diff options
context:
space:
mode:
Diffstat (limited to 'serde_v8/tests/magic.rs')
-rw-r--r--serde_v8/tests/magic.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/serde_v8/tests/magic.rs b/serde_v8/tests/magic.rs
index 6d60efd66..3fc46abeb 100644
--- a/serde_v8/tests/magic.rs
+++ b/serde_v8/tests/magic.rs
@@ -129,6 +129,20 @@ fn magic_buffer() {
assert!(eq.is_true());
let eq = js_exec(scope, "t3.b[4] === 11");
assert!(eq.is_true());
+
+ // ZeroCopyBuf as bytes::Bytes
+ let v8_array = js_exec(scope, "new Uint8Array([1,2,3,4,5])");
+ let zbuf: serde_v8::ZeroCopyBuf =
+ serde_v8::from_v8(scope, v8_array).unwrap();
+ let buf: bytes::Bytes = zbuf.into();
+ assert_eq!(buf, bytes::Bytes::from_static(&[1, 2, 3, 4, 5]));
+ assert_eq!(buf, bytes::Bytes::from_static(&[1, 2, 3, 4, 5]));
+ assert_eq!(buf.slice(0..2), bytes::Bytes::from_static(&[1, 2]));
+ assert_eq!(buf.slice(2..), bytes::Bytes::from_static(&[3, 4, 5]));
+ // We're specifically testing that slices are preserved post-clone
+ #[allow(clippy::redundant_clone)]
+ let buf2 = buf.slice(2..).clone();
+ assert_eq!(buf2, bytes::Bytes::from_static(&[3, 4, 5]));
})
}