1
1
use js_sys:: * ;
2
+ use std:: iter:: FromIterator ;
2
3
use wasm_bindgen:: JsCast ;
3
4
use wasm_bindgen:: JsValue ;
4
5
use wasm_bindgen_test:: * ;
@@ -25,6 +26,122 @@ fn to_rust(arr: &Array) -> Vec<JsValue> {
25
26
result
26
27
}
27
28
29
+ #[ wasm_bindgen_test]
30
+ fn from_iter ( ) {
31
+ assert_eq ! (
32
+ to_rust( & vec![
33
+ JsValue :: from( "a" ) ,
34
+ JsValue :: from( "b" ) ,
35
+ JsValue :: from( "c" ) ,
36
+ ] . into_iter( ) . collect( ) ) ,
37
+ vec![ "a" , "b" , "c" ] ,
38
+ ) ;
39
+
40
+ assert_eq ! (
41
+ to_rust( & vec![
42
+ JsValue :: from( "a" ) ,
43
+ JsValue :: from( "b" ) ,
44
+ JsValue :: from( "c" ) ,
45
+ ] . iter( ) . collect( ) ) ,
46
+ vec![ "a" , "b" , "c" ] ,
47
+ ) ;
48
+
49
+ let array = js_array ! [ 1u32 , 2u32 , 3u32 ] ;
50
+
51
+ assert_eq ! (
52
+ to_rust( & vec![
53
+ array. clone( ) ,
54
+ ] . into_iter( ) . collect( ) ) ,
55
+ vec![ JsValue :: from( array. clone( ) ) ] ,
56
+ ) ;
57
+
58
+ assert_eq ! (
59
+ to_rust( & vec![
60
+ array. clone( ) ,
61
+ ] . iter( ) . collect( ) ) ,
62
+ vec![ JsValue :: from( array) ] ,
63
+ ) ;
64
+
65
+ assert_eq ! (
66
+ to_rust( & vec![
67
+ 5 ,
68
+ 10 ,
69
+ 20 ,
70
+ ] . into_iter( ) . map( JsValue :: from) . collect( ) ) ,
71
+ vec![ 5 , 10 , 20 ] ,
72
+ ) ;
73
+
74
+ assert_eq ! (
75
+ to_rust( & Array :: from_iter( & [
76
+ JsValue :: from( "a" ) ,
77
+ JsValue :: from( "b" ) ,
78
+ JsValue :: from( "c" ) ,
79
+ ] ) ) ,
80
+ vec![ "a" , "b" , "c" ] ,
81
+ ) ;
82
+
83
+ let v = vec ! [
84
+ "a" ,
85
+ "b" ,
86
+ "c" ,
87
+ ] ;
88
+
89
+ assert_eq ! (
90
+ to_rust( & Array :: from_iter( v. into_iter( ) . map( |s| JsValue :: from( s) ) ) ) ,
91
+ vec![ "a" , "b" , "c" ] ,
92
+ ) ;
93
+ }
94
+
95
+ #[ wasm_bindgen_test]
96
+ fn new_with_length ( ) {
97
+ let array = Array :: new_with_length ( 5 ) ;
98
+ assert_eq ! ( array. length( ) , 5 ) ;
99
+ assert_eq ! ( array. get( 4 ) , JsValue :: undefined( ) ) ;
100
+ array. set ( 4 , JsValue :: from ( "a" ) ) ;
101
+ assert_eq ! ( array. get( 4 ) , "a" ) ;
102
+ assert_eq ! ( array. length( ) , 5 ) ;
103
+ }
104
+
105
+ #[ wasm_bindgen_test]
106
+ fn get ( ) {
107
+ let array = js_array ! [ "a" , "c" , "x" , "n" ] ;
108
+ assert_eq ! ( array. length( ) , 4 ) ;
109
+ assert_eq ! ( array. get( 0 ) , "a" ) ;
110
+ assert_eq ! ( array. get( 3 ) , "n" ) ;
111
+ assert_eq ! ( array. get( 4 ) , JsValue :: undefined( ) ) ;
112
+ }
113
+
114
+ #[ wasm_bindgen_test]
115
+ fn set ( ) {
116
+ let array = js_array ! [ "a" , "c" , "x" , "n" ] ;
117
+ assert_eq ! ( array. length( ) , 4 ) ;
118
+ assert_eq ! ( array. get( 0 ) , "a" ) ;
119
+ array. set ( 0 , JsValue :: from ( "b" ) ) ;
120
+ assert_eq ! ( array. get( 0 ) , "b" ) ;
121
+
122
+ assert_eq ! ( array. get( 4 ) , JsValue :: undefined( ) ) ;
123
+ assert_eq ! ( array. length( ) , 4 ) ;
124
+ array. set ( 4 , JsValue :: from ( "d" ) ) ;
125
+ assert_eq ! ( array. length( ) , 5 ) ;
126
+ assert_eq ! ( array. get( 4 ) , "d" ) ;
127
+
128
+ assert_eq ! ( array. get( 10 ) , JsValue :: undefined( ) ) ;
129
+ assert_eq ! ( array. length( ) , 5 ) ;
130
+ array. set ( 10 , JsValue :: from ( "z" ) ) ;
131
+ assert_eq ! ( array. length( ) , 11 ) ;
132
+ assert_eq ! ( array. get( 10 ) , "z" ) ;
133
+ assert_eq ! ( array. get( 9 ) , JsValue :: undefined( ) ) ;
134
+ }
135
+
136
+ #[ wasm_bindgen_test]
137
+ fn delete ( ) {
138
+ let array = js_array ! [ "a" , "c" , "x" , "n" ] ;
139
+ assert_eq ! ( array. length( ) , 4 ) ;
140
+ assert_eq ! ( array. get( 0 ) , "a" ) ;
141
+ array. delete ( 0 ) ;
142
+ assert_eq ! ( array. get( 0 ) , JsValue :: undefined( ) ) ;
143
+ }
144
+
28
145
#[ wasm_bindgen_test]
29
146
fn filter ( ) {
30
147
let array = js_array ! [ "a" , "c" , "x" , "n" ] ;
0 commit comments