Array.rs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629
  1. use js_sys::*;
  2. use std::iter::FromIterator;
  3. use wasm_bindgen::prelude::*;
  4. use wasm_bindgen::JsCast;
  5. use wasm_bindgen::JsValue;
  6. use wasm_bindgen_test::*;
  7. macro_rules! js_array {
  8. ($($e:expr),*) => ({
  9. let __x = Array::new();
  10. $(__x.push(&JsValue::from($e));)*
  11. __x
  12. })
  13. }
  14. macro_rules! array {
  15. ($($e:expr),*) => ({
  16. let mut __x = Vec::new();
  17. $(__x.push(JsValue::from($e));)*
  18. __x
  19. })
  20. }
  21. fn to_rust(arr: &Array) -> Vec<JsValue> {
  22. let mut result = Vec::with_capacity(arr.length() as usize);
  23. arr.for_each(&mut |x, _, _| result.push(x));
  24. result
  25. }
  26. #[wasm_bindgen_test]
  27. fn from_iter() {
  28. assert_eq!(
  29. to_rust(
  30. &vec![JsValue::from("a"), JsValue::from("b"), JsValue::from("c"),]
  31. .into_iter()
  32. .collect()
  33. ),
  34. vec!["a", "b", "c"],
  35. );
  36. assert_eq!(
  37. to_rust(
  38. &vec![JsValue::from("a"), JsValue::from("b"), JsValue::from("c"),]
  39. .iter()
  40. .collect()
  41. ),
  42. vec!["a", "b", "c"],
  43. );
  44. let array = js_array![1u32, 2u32, 3u32];
  45. assert_eq!(
  46. to_rust(&vec![array.clone(),].into_iter().collect()),
  47. vec![JsValue::from(array.clone())],
  48. );
  49. assert_eq!(
  50. to_rust(&vec![array.clone(),].iter().collect()),
  51. vec![JsValue::from(array)],
  52. );
  53. assert_eq!(
  54. to_rust(&vec![5, 10, 20,].into_iter().map(JsValue::from).collect()),
  55. vec![5, 10, 20],
  56. );
  57. assert_eq!(
  58. to_rust(&Array::from_iter(&[
  59. JsValue::from("a"),
  60. JsValue::from("b"),
  61. JsValue::from("c"),
  62. ])),
  63. vec!["a", "b", "c"],
  64. );
  65. let v = vec!["a", "b", "c"];
  66. assert_eq!(
  67. to_rust(&Array::from_iter(v.into_iter().map(|s| JsValue::from(s)))),
  68. vec!["a", "b", "c"],
  69. );
  70. }
  71. #[wasm_bindgen_test]
  72. fn extend() {
  73. let mut array = array!["a", "b"];
  74. array.extend(vec![JsValue::from("c"), JsValue::from("d")]);
  75. assert_eq!(array, array!["a", "b", "c", "d"]);
  76. }
  77. #[wasm_bindgen_test]
  78. fn to_vec() {
  79. let array = vec![JsValue::from("a"), JsValue::from("b"), JsValue::from("c")]
  80. .into_iter()
  81. .collect::<js_sys::Array>();
  82. assert_eq!(
  83. array.to_vec(),
  84. vec![JsValue::from("a"), JsValue::from("b"), JsValue::from("c")]
  85. );
  86. }
  87. #[wasm_bindgen_test]
  88. fn iter() {
  89. let array = vec![JsValue::from("a"), JsValue::from("b"), JsValue::from("c")]
  90. .into_iter()
  91. .collect::<js_sys::Array>();
  92. assert_eq!(
  93. array.iter().collect::<Vec<JsValue>>(),
  94. vec![JsValue::from("a"), JsValue::from("b"), JsValue::from("c")]
  95. );
  96. let mut iter = array.iter();
  97. assert_eq!(iter.size_hint(), (3, Some(3)));
  98. assert_eq!(iter.next(), Some(JsValue::from("a")));
  99. assert_eq!(iter.size_hint(), (2, Some(2)));
  100. assert_eq!(iter.next_back(), Some(JsValue::from("c")));
  101. assert_eq!(iter.size_hint(), (1, Some(1)));
  102. assert_eq!(iter.next_back(), Some(JsValue::from("b")));
  103. assert_eq!(iter.size_hint(), (0, Some(0)));
  104. assert_eq!(iter.next(), None);
  105. assert_eq!(iter.size_hint(), (0, Some(0)));
  106. assert_eq!(iter.next_back(), None);
  107. let mut iter = array.iter();
  108. assert_eq!(iter.size_hint(), (3, Some(3)));
  109. assert_eq!(iter.next(), Some(JsValue::from("a")));
  110. assert_eq!(iter.size_hint(), (2, Some(2)));
  111. assert_eq!(iter.next(), Some(JsValue::from("b")));
  112. assert_eq!(iter.size_hint(), (1, Some(1)));
  113. assert_eq!(iter.next(), Some(JsValue::from("c")));
  114. assert_eq!(iter.size_hint(), (0, Some(0)));
  115. assert_eq!(iter.next(), None);
  116. let mut iter = array.iter();
  117. assert_eq!(iter.size_hint(), (3, Some(3)));
  118. assert_eq!(iter.next_back(), Some(JsValue::from("c")));
  119. assert_eq!(iter.size_hint(), (2, Some(2)));
  120. assert_eq!(iter.next_back(), Some(JsValue::from("b")));
  121. assert_eq!(iter.size_hint(), (1, Some(1)));
  122. assert_eq!(iter.next_back(), Some(JsValue::from("a")));
  123. assert_eq!(iter.size_hint(), (0, Some(0)));
  124. assert_eq!(iter.next_back(), None);
  125. }
  126. #[wasm_bindgen_test]
  127. fn new_with_length() {
  128. let array = Array::new_with_length(5);
  129. assert_eq!(array.length(), 5);
  130. assert_eq!(array.get(4), JsValue::undefined());
  131. array.set(4, JsValue::from("a"));
  132. assert_eq!(array.get(4), "a");
  133. assert_eq!(array.length(), 5);
  134. }
  135. #[wasm_bindgen_test]
  136. fn get() {
  137. let array = js_array!["a", "c", "x", "n"];
  138. assert_eq!(array.length(), 4);
  139. assert_eq!(array.get(0), "a");
  140. assert_eq!(array.get(3), "n");
  141. assert_eq!(array.get(4), JsValue::undefined());
  142. }
  143. #[wasm_bindgen_test]
  144. fn set() {
  145. let array = js_array!["a", "c", "x", "n"];
  146. assert_eq!(array.length(), 4);
  147. assert_eq!(array.get(0), "a");
  148. array.set(0, JsValue::from("b"));
  149. assert_eq!(array.get(0), "b");
  150. assert_eq!(array.get(4), JsValue::undefined());
  151. assert_eq!(array.length(), 4);
  152. array.set(4, JsValue::from("d"));
  153. assert_eq!(array.length(), 5);
  154. assert_eq!(array.get(4), "d");
  155. assert_eq!(array.get(10), JsValue::undefined());
  156. assert_eq!(array.length(), 5);
  157. array.set(10, JsValue::from("z"));
  158. assert_eq!(array.length(), 11);
  159. assert_eq!(array.get(10), "z");
  160. assert_eq!(array.get(9), JsValue::undefined());
  161. }
  162. #[wasm_bindgen_test]
  163. fn delete() {
  164. let array = js_array!["a", "c", "x", "n"];
  165. assert_eq!(array.length(), 4);
  166. assert_eq!(array.get(0), "a");
  167. array.delete(0);
  168. assert_eq!(array.get(0), JsValue::undefined());
  169. }
  170. #[wasm_bindgen_test]
  171. fn filter() {
  172. let array = js_array!["a", "c", "x", "n"];
  173. assert!(array.filter(&mut |x, _, _| x.as_f64().is_some()).length() == 0);
  174. let array = js_array![1, 2, 3, 4];
  175. assert_eq!(
  176. array.filter(&mut |x, _, _| x.as_f64().is_some()).length(),
  177. 4
  178. );
  179. let array = js_array!["a", 1, "b", 2];
  180. assert_eq!(
  181. array.filter(&mut |x, _, _| x.as_f64().is_some()).length(),
  182. 2
  183. );
  184. }
  185. #[wasm_bindgen_test]
  186. fn flat() {
  187. let array = js_array![
  188. js_array!["a", "b", "c"],
  189. "d",
  190. js_array!["e", js_array!["f", "g"]]
  191. ];
  192. assert_eq!(
  193. to_rust(&array.flat(1).slice(0, 5)),
  194. vec!["a", "b", "c", "d", "e"]
  195. );
  196. assert_eq!(array.flat(1).length(), 6);
  197. assert_eq!(
  198. to_rust(&array.flat(2)),
  199. vec!["a", "b", "c", "d", "e", "f", "g"]
  200. );
  201. }
  202. #[wasm_bindgen_test]
  203. fn flat_map() {
  204. let array = js_array![1, 2, 3, 1];
  205. assert_eq!(
  206. to_rust(
  207. &array.flat_map(&mut |val, _, _| match val.as_f64().map(|v| v as i32) {
  208. Some(1) => vec![JsString::from("x").into(), JsString::from("x").into()],
  209. Some(2) => vec![],
  210. Some(3) => vec![JsString::from("z").into()],
  211. _ => panic!("Unexpected conversion"),
  212. })
  213. ),
  214. vec!["x", "x", "z", "x", "x"]
  215. );
  216. }
  217. #[wasm_bindgen_test]
  218. fn index_of() {
  219. let chars = js_array!["a", "c", "x", "n"];
  220. assert_eq!(chars.index_of(&"x".into(), 0), 2);
  221. assert_eq!(chars.index_of(&"z".into(), 0), -1);
  222. assert_eq!(chars.index_of(&"x".into(), -3), 2);
  223. assert_eq!(chars.index_of(&"z".into(), -2), -1);
  224. }
  225. #[wasm_bindgen_test]
  226. fn is_array() {
  227. assert!(Array::is_array(&Array::new().into()));
  228. assert!(Array::is_array(&js_array![1].into()));
  229. assert!(!Array::is_array(&JsValue::null()));
  230. assert!(!Array::is_array(&JsValue::undefined()));
  231. assert!(!Array::is_array(&10.into()));
  232. assert!(!Array::is_array(&"x".into()));
  233. assert!(!Array::is_array(&true.into()));
  234. assert!(!Array::is_array(&false.into()));
  235. }
  236. #[wasm_bindgen_test]
  237. fn sort() {
  238. let array = js_array![3, 1, 6, 2];
  239. let sorted = array.sort();
  240. assert_eq!(to_rust(&sorted), array![1, 2, 3, 6]);
  241. }
  242. #[wasm_bindgen_test]
  243. fn some() {
  244. let array = js_array!["z", 1, "y", 2];
  245. assert!(array.some(&mut |e| e == JsValue::from(2)));
  246. assert!(array.some(&mut |e| e == JsValue::from("y")));
  247. assert!(!array.some(&mut |e| e == JsValue::from("nope")));
  248. }
  249. #[wasm_bindgen_test]
  250. fn last_index_of() {
  251. let characters = js_array!["a", "x", "c", "x", "n"];
  252. assert_eq!(characters.last_index_of(&"x".into(), 5), 3);
  253. assert_eq!(characters.last_index_of(&"z".into(), 5), -1);
  254. assert_eq!(characters.last_index_of(&"x".into(), 2), 1);
  255. assert_eq!(characters.last_index_of(&"x".into(), 0), -1);
  256. }
  257. #[wasm_bindgen_test]
  258. fn join() {
  259. let characters = js_array!["a", "c", "x", "n"];
  260. assert_eq!(String::from(characters.join(", ")), "a, c, x, n");
  261. assert_eq!(String::from(characters.join("/")), "a/c/x/n");
  262. }
  263. #[wasm_bindgen_test]
  264. fn slice() {
  265. let characters = js_array!["a", "c", "x", "n", 1, "8"];
  266. let subset = characters.slice(1, 3);
  267. assert_eq!(to_rust(&subset), array!["c", "x"]);
  268. }
  269. #[wasm_bindgen_test]
  270. fn splice() {
  271. let characters = js_array!["a", "c", "x", "n", 1, "8"];
  272. let removed = characters.splice(1, 3, &"b".into());
  273. assert_eq!(to_rust(&removed), array!["c", "x", "n"]);
  274. assert_eq!(to_rust(&characters), array!["a", "b", 1, "8"]);
  275. }
  276. #[wasm_bindgen_test]
  277. fn fill() {
  278. let characters = js_array!["a", "c", "x", "n", 1, "8"];
  279. let subset = characters.fill(&0.into(), 0, 3);
  280. assert_eq!(to_rust(&subset), array![0, 0, 0, "n", 1, "8"]);
  281. }
  282. #[wasm_bindgen_test]
  283. fn copy_within() {
  284. let characters = js_array![8, 5, 4, 3, 1, 2];
  285. characters.copy_within(1, 4, 5);
  286. assert_eq!(to_rust(&characters)[1], JsValue::from(1));
  287. // if negatives were used
  288. characters.copy_within(-1, -3, -2);
  289. assert_eq!(to_rust(&characters)[5], JsValue::from(3));
  290. }
  291. #[wasm_bindgen_test]
  292. fn of() {
  293. let a = JsValue::from("a");
  294. let b = JsValue::from("b");
  295. let c = JsValue::from("c");
  296. let arr = Array::of3(&a, &b, &c);
  297. let vec = to_rust(&arr);
  298. assert_eq!(vec.len(), 3);
  299. assert_eq!(vec[0], a);
  300. assert_eq!(vec[1], b);
  301. assert_eq!(vec[2], c);
  302. }
  303. #[wasm_bindgen_test]
  304. fn pop() {
  305. let characters = js_array![8, 5, 4, 3, 1, 2];
  306. let item = characters.pop();
  307. assert_eq!(item, JsValue::from(2));
  308. assert_eq!(characters.length(), 5);
  309. }
  310. #[wasm_bindgen_test]
  311. fn push() {
  312. let characters = js_array![8, 5, 4, 3, 1, 2];
  313. let length = characters.push(&"a".into());
  314. assert_eq!(length, 7);
  315. assert_eq!(to_rust(&characters)[6], "a");
  316. }
  317. #[wasm_bindgen_test]
  318. fn reverse() {
  319. let characters = js_array![8, 5, 4, 3, 1, 2];
  320. let reversed = characters.reverse();
  321. assert_eq!(to_rust(&reversed), array![2, 1, 3, 4, 5, 8]);
  322. }
  323. #[wasm_bindgen_test]
  324. fn shift() {
  325. let characters = js_array![8, 5, 4, 3, 1, 2];
  326. let shiftedItem = characters.shift();
  327. assert_eq!(shiftedItem, 8);
  328. assert_eq!(characters.length(), 5);
  329. }
  330. #[wasm_bindgen_test]
  331. fn unshift() {
  332. let characters = js_array![8, 5, 4, 3, 1, 2];
  333. let length = characters.unshift(&"abba".into());
  334. assert_eq!(length, 7);
  335. assert_eq!(to_rust(&characters)[0], "abba");
  336. }
  337. #[wasm_bindgen_test]
  338. fn to_string() {
  339. let characters = js_array![8, 5, 4, 3, 1, 2];
  340. assert_eq!(String::from(characters.to_string()), "8,5,4,3,1,2");
  341. }
  342. #[wasm_bindgen_test]
  343. fn includes() {
  344. let characters = js_array![8, 5, 4, 3, 1, 2];
  345. assert!(characters.includes(&2.into(), 0));
  346. assert!(!characters.includes(&9.into(), 0));
  347. assert!(!characters.includes(&3.into(), 4));
  348. }
  349. #[wasm_bindgen_test]
  350. fn concat() {
  351. let arr1 = js_array![1, 2, 3];
  352. let arr2 = js_array![4, 5, 6];
  353. let new_array = arr1.concat(&arr2);
  354. assert_eq!(to_rust(&new_array), array![1, 2, 3, 4, 5, 6]);
  355. }
  356. #[wasm_bindgen_test]
  357. fn length() {
  358. let characters = js_array![8, 5, 4, 3, 1, 2];
  359. assert_eq!(characters.length(), 6);
  360. assert_eq!(Array::new().length(), 0);
  361. }
  362. #[wasm_bindgen_test]
  363. fn every() {
  364. let even = js_array![2, 4, 6, 8];
  365. assert!(even.every(&mut |x, _, _| x.as_f64().unwrap() % 2.0 == 0.0));
  366. let odd = js_array![1, 3, 5, 7];
  367. assert!(!odd.every(&mut |x, _, _| x.as_f64().unwrap() % 2.0 == 0.0));
  368. let mixed = js_array![2, 3, 4, 5];
  369. assert!(!mixed.every(&mut |x, _, _| x.as_f64().unwrap() % 2.0 == 0.0));
  370. }
  371. #[wasm_bindgen_test]
  372. fn find() {
  373. let even = js_array![2, 4, 6, 8];
  374. assert_eq!(
  375. even.find(&mut |x, _, _| x.as_f64().unwrap() % 2.0 == 0.0),
  376. 2
  377. );
  378. let odd = js_array![1, 3, 5, 7];
  379. assert_eq!(
  380. odd.find(&mut |x, _, _| x.as_f64().unwrap() % 2.0 == 0.0),
  381. JsValue::undefined(),
  382. );
  383. let mixed = js_array![3, 5, 7, 10];
  384. assert_eq!(
  385. mixed.find(&mut |x, _, _| x.as_f64().unwrap() % 2.0 == 0.0),
  386. 10
  387. );
  388. }
  389. #[wasm_bindgen_test]
  390. fn map() {
  391. let numbers = js_array![1, 4, 9];
  392. let sqrt = numbers.map(&mut |x, _, _| x.as_f64().unwrap().sqrt().into());
  393. assert_eq!(to_rust(&sqrt), array![1, 2, 3]);
  394. }
  395. #[wasm_bindgen_test]
  396. fn reduce() {
  397. let arr = js_array!["0", "1", "2", "3", "4"].reduce(
  398. &mut |ac, cr, _, _| {
  399. format!("{}{}", &ac.as_string().unwrap(), &cr.as_string().unwrap()).into()
  400. },
  401. &"".into(),
  402. );
  403. assert_eq!(arr, "01234");
  404. }
  405. #[wasm_bindgen_test]
  406. fn reduce_right() {
  407. let arr = js_array!["0", "1", "2", "3", "4"].reduce_right(
  408. &mut |ac, cr, _, _| {
  409. format!("{}{}", &ac.as_string().unwrap(), &cr.as_string().unwrap()).into()
  410. },
  411. &"".into(),
  412. );
  413. assert_eq!(arr, "43210");
  414. }
  415. #[wasm_bindgen_test]
  416. fn find_index() {
  417. let even = js_array![2, 4, 6, 8];
  418. assert_eq!(
  419. even.find_index(&mut |e, _, _| e.as_f64().unwrap() % 2. == 0.),
  420. 0
  421. );
  422. let odd = js_array![1, 3, 5, 7];
  423. assert_eq!(
  424. odd.find_index(&mut |e, _, _| e.as_f64().unwrap() % 2. == 0.),
  425. -1
  426. );
  427. let mixed = js_array![3, 5, 7, 10];
  428. assert_eq!(
  429. mixed.find_index(&mut |e, _, _| e.as_f64().unwrap() % 2. == 0.),
  430. 3
  431. );
  432. }
  433. #[wasm_bindgen_test]
  434. fn to_locale_string() {
  435. let output = js_array![1, "a", Date::new(&"21 Dec 1997 14:12:00 UTC".into())]
  436. .to_locale_string(&"en".into(), &JsValue::undefined());
  437. assert!(String::from(output).len() > 0);
  438. }
  439. #[wasm_bindgen_test]
  440. fn for_each() {
  441. fn sum_indices_of_evens(array: &Array) -> u32 {
  442. let mut res = 0;
  443. array.for_each(&mut |elem: JsValue, i, _| match elem.as_f64() {
  444. Some(val) if val % 2. == 0. => res += i,
  445. _ => {}
  446. });
  447. res
  448. }
  449. assert_eq!(sum_indices_of_evens(&js_array![2, 4, 6, 8]), 0 + 1 + 2 + 3);
  450. assert_eq!(sum_indices_of_evens(&js_array![1, 3, 5, 7]), 0);
  451. assert_eq!(sum_indices_of_evens(&js_array![3, 5, 7, 10]), 3);
  452. }
  453. #[wasm_bindgen_test]
  454. fn array_inheritance() {
  455. let array = Array::new();
  456. assert!(array.is_instance_of::<Array>());
  457. assert!(array.is_instance_of::<Object>());
  458. let _: &Object = array.as_ref();
  459. }
  460. #[wasm_bindgen(module = "tests/wasm/Array.js")]
  461. extern "C" {
  462. fn populate_array(arr: JsValue, start: JsValue, len: JsValue) -> JsValue;
  463. }
  464. fn test_array_view_mut_raw<ElemT: std::cmp::PartialEq + std::fmt::Debug, ArrT>(
  465. sut: unsafe fn(*mut ElemT, usize) -> ArrT,
  466. u8ToElem: fn(u8) -> ElemT,
  467. arrToJsValue: fn(ArrT) -> JsValue,
  468. ) {
  469. let start: u8 = 10;
  470. let len: usize = 32;
  471. let end: u8 = start + len as u8;
  472. let mut buffer: Vec<ElemT> = Vec::new();
  473. buffer.reserve(len);
  474. unsafe {
  475. let array: ArrT = sut(buffer.as_mut_ptr(), len);
  476. populate_array(
  477. arrToJsValue(array),
  478. JsValue::from(start),
  479. JsValue::from(len as u32),
  480. );
  481. buffer.set_len(len);
  482. }
  483. let expected: Vec<ElemT> = (start..end).map(u8ToElem).collect();
  484. assert_eq!(buffer, expected)
  485. }
  486. #[wasm_bindgen_test]
  487. fn Int8Array_view_mut_raw() {
  488. fn u8Toi8_unsafe(x: u8) -> i8 {
  489. x as i8
  490. }
  491. test_array_view_mut_raw(
  492. js_sys::Int8Array::view_mut_raw,
  493. u8Toi8_unsafe,
  494. JsValue::from,
  495. );
  496. }
  497. #[wasm_bindgen_test]
  498. fn Int16Array_view_mut_raw() {
  499. test_array_view_mut_raw(js_sys::Int16Array::view_mut_raw, i16::from, JsValue::from);
  500. }
  501. #[wasm_bindgen_test]
  502. fn Int32Array_view_mut_raw() {
  503. test_array_view_mut_raw(js_sys::Int32Array::view_mut_raw, i32::from, JsValue::from);
  504. }
  505. #[wasm_bindgen_test]
  506. fn Uint8Array_view_mut_raw() {
  507. test_array_view_mut_raw(js_sys::Uint8Array::view_mut_raw, u8::from, JsValue::from);
  508. }
  509. #[wasm_bindgen_test]
  510. fn Uint8ClampedArray_view_mut_raw() {
  511. test_array_view_mut_raw(
  512. js_sys::Uint8ClampedArray::view_mut_raw,
  513. u8::from,
  514. JsValue::from,
  515. );
  516. }
  517. #[wasm_bindgen_test]
  518. fn Uint16Array_view_mut_raw() {
  519. test_array_view_mut_raw(js_sys::Uint16Array::view_mut_raw, u16::from, JsValue::from);
  520. }
  521. #[wasm_bindgen_test]
  522. fn Uint32Array_view_mut_raw() {
  523. test_array_view_mut_raw(js_sys::Uint32Array::view_mut_raw, u32::from, JsValue::from);
  524. }
  525. #[wasm_bindgen_test]
  526. fn Float32Array_view_mut_raw() {
  527. test_array_view_mut_raw(js_sys::Float32Array::view_mut_raw, f32::from, JsValue::from);
  528. }
  529. #[wasm_bindgen_test]
  530. fn Float64Array_view_mut_raw() {
  531. test_array_view_mut_raw(js_sys::Float64Array::view_mut_raw, f64::from, JsValue::from);
  532. }