| use js_sys::{Array, ArrayBuffer}; |
| use wasm_bindgen::prelude::*; |
| use wasm_bindgen_futures::JsFuture; |
| use wasm_bindgen_test::*; |
| use web_sys::Blob; |
| |
| #[wasm_bindgen(module = "/tests/wasm/blob.js")] |
| extern "C" { |
| fn new_blob() -> Blob; |
| } |
| |
| #[wasm_bindgen_test] |
| fn test_blob_from_js() { |
| let blob = new_blob(); |
| assert!(blob.is_instance_of::<Blob>()); |
| assert_eq!(blob.size(), 3.0); |
| } |
| |
| #[wasm_bindgen_test] |
| fn test_blob_from_bytes() { |
| let bytes = Array::new(); |
| bytes.push(&1.into()); |
| bytes.push(&2.into()); |
| bytes.push(&3.into()); |
| |
| let blob = Blob::new_with_u8_array_sequence(&bytes.into()).unwrap(); |
| assert!(blob.is_instance_of::<Blob>()); |
| assert_eq!(blob.size(), 3.0); |
| } |
| |
| #[wasm_bindgen_test] |
| fn test_blob_empty() { |
| let blob = Blob::new().unwrap(); |
| assert!(blob.is_instance_of::<Blob>()); |
| assert_eq!(blob.size(), 0.0); |
| } |
| |
| #[wasm_bindgen_test] |
| async fn test_blob_array_buffer() { |
| let bytes = Array::new(); |
| bytes.push(&1.into()); |
| bytes.push(&2.into()); |
| bytes.push(&3.into()); |
| |
| let blob = Blob::new_with_u8_array_sequence(&bytes.into()).unwrap(); |
| |
| let buffer: ArrayBuffer = JsFuture::from(blob.array_buffer()).await.unwrap().into(); |
| |
| assert!(blob.is_instance_of::<Blob>()); |
| assert!(buffer.is_instance_of::<ArrayBuffer>()); |
| assert_eq!(blob.size(), buffer.byte_length() as f64); |
| } |
| |
| #[wasm_bindgen_test] |
| async fn test_blob_text() { |
| let strings = Array::new(); |
| strings.push(&"hello".into()); |
| |
| let blob = Blob::new_with_str_sequence(&strings.into()).unwrap(); |
| let string = JsFuture::from(blob.text()).await.unwrap(); |
| |
| assert!(blob.is_instance_of::<Blob>()); |
| assert_eq!(string, "hello") |
| } |