blob.rs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. use js_sys::{Array, ArrayBuffer};
  2. use wasm_bindgen::prelude::*;
  3. use wasm_bindgen::JsCast;
  4. use wasm_bindgen_futures::JsFuture;
  5. use wasm_bindgen_test::*;
  6. use web_sys::Blob;
  7. #[wasm_bindgen(module = "/tests/wasm/blob.js")]
  8. extern "C" {
  9. fn new_blob() -> Blob;
  10. }
  11. #[wasm_bindgen_test]
  12. fn test_blob_from_js() {
  13. let blob = new_blob();
  14. assert!(blob.is_instance_of::<Blob>());
  15. assert_eq!(blob.size(), 3.0);
  16. }
  17. #[wasm_bindgen_test]
  18. fn test_blob_from_bytes() {
  19. let bytes = Array::new();
  20. bytes.push(&1.into());
  21. bytes.push(&2.into());
  22. bytes.push(&3.into());
  23. let blob = Blob::new_with_u8_array_sequence(&bytes.into()).unwrap();
  24. assert!(blob.is_instance_of::<Blob>());
  25. assert_eq!(blob.size(), 3.0);
  26. }
  27. #[wasm_bindgen_test]
  28. fn test_blob_empty() {
  29. let blob = Blob::new().unwrap();
  30. assert!(blob.is_instance_of::<Blob>());
  31. assert_eq!(blob.size(), 0.0);
  32. }
  33. #[wasm_bindgen_test]
  34. async fn test_blob_array_buffer() {
  35. let bytes = Array::new();
  36. bytes.push(&1.into());
  37. bytes.push(&2.into());
  38. bytes.push(&3.into());
  39. let blob = Blob::new_with_u8_array_sequence(&bytes.into()).unwrap();
  40. let buffer: ArrayBuffer = JsFuture::from(blob.array_buffer()).await.unwrap().into();
  41. assert!(blob.is_instance_of::<Blob>());
  42. assert!(buffer.is_instance_of::<ArrayBuffer>());
  43. assert_eq!(blob.size(), buffer.byte_length() as f64);
  44. }
  45. #[wasm_bindgen_test]
  46. async fn test_blob_text() {
  47. let strings = Array::new();
  48. strings.push(&"hello".into());
  49. let blob = Blob::new_with_str_sequence(&strings.into()).unwrap();
  50. let string = JsFuture::from(blob.text()).await.unwrap();
  51. assert!(blob.is_instance_of::<Blob>());
  52. assert_eq!(string, "hello")
  53. }