diff options
| author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2022-01-20 15:11:09 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-20 15:11:09 +0100 |
| commit | 1cc38f5155bdc5605d74cd959660fa04f782ac63 (patch) | |
| tree | 24c435bf3bdb0603625da3286f6133761b5073b5 /serde_v8/tests | |
| parent | 443d8fc41cab405dbdd967ef7eb86f520517280f (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.rs | 24 |
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 //// |
