summaryrefslogtreecommitdiff
path: root/serde_v8/tests
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2022-01-20 15:11:09 +0100
committerGitHub <noreply@github.com>2022-01-20 15:11:09 +0100
commit1cc38f5155bdc5605d74cd959660fa04f782ac63 (patch)
tree24c435bf3bdb0603625da3286f6133761b5073b5 /serde_v8/tests
parent443d8fc41cab405dbdd967ef7eb86f520517280f (diff)
feat(serde_v8): deserialize ArrayBuffers (#13436)
Previously we would only deserialize `ArrayBufferView`s as zero-copy bufs This avoids rewrapping `ArrayBuffers` in `ArrayBufferView`s when implementing APIs that take [BufferSource](https://webidl.spec.whatwg.org/#BufferSource) args passed through the op-layer
Diffstat (limited to 'serde_v8/tests')
-rw-r--r--serde_v8/tests/de.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/serde_v8/tests/de.rs b/serde_v8/tests/de.rs
index 2b85d8839..1253ea92b 100644
--- a/serde_v8/tests/de.rs
+++ b/serde_v8/tests/de.rs
@@ -2,6 +2,7 @@
use serde::Deserialize;
use serde_v8::utils::{js_exec, v8_do};
+use serde_v8::Buffer;
use serde_v8::Error;
#[derive(Debug, Deserialize, PartialEq)]
@@ -192,6 +193,29 @@ fn de_string_or_buffer() {
);
}
+#[test]
+fn de_buffers() {
+ // ArrayBufferView
+ dedo("new Uint8Array([97])", |scope, v| {
+ let buf: Buffer = serde_v8::from_v8(scope, v).unwrap();
+ assert_eq!(&*buf, &[97]);
+ });
+
+ // ArrayBuffer
+ dedo("(new Uint8Array([97])).buffer", |scope, v| {
+ let buf: Buffer = serde_v8::from_v8(scope, v).unwrap();
+ assert_eq!(&*buf, &[97]);
+ });
+
+ dedo(
+ "(Uint8Array.from([0x68, 0x65, 0x6C, 0x6C, 0x6F]))",
+ |scope, v| {
+ let buf: Buffer = serde_v8::from_v8(scope, v).unwrap();
+ assert_eq!(&*buf, &[0x68, 0x65, 0x6C, 0x6C, 0x6F]);
+ },
+ );
+}
+
////
// JSON tests: serde_json::Value compatibility
////