1 use js_sys::*;
2 use wasm_bindgen::prelude::*;
3 use wasm_bindgen::JsCast;
4 use wasm_bindgen_test::*;
5
set2vec(s: &Set) -> Vec<JsValue>6 fn set2vec(s: &Set) -> Vec<JsValue> {
7 let mut result = Vec::new();
8 s.for_each(&mut |x, _, _| result.push(x));
9 return result;
10 }
11
12 #[wasm_bindgen_test]
add()13 fn add() {
14 let set = Set::new(&JsValue::undefined());
15 set.add(&100.into());
16 assert_eq!(set.size(), 1);
17 assert_eq!(set2vec(&set)[0], 100);
18 }
19
20 #[wasm_bindgen_test]
clear()21 fn clear() {
22 let set = Set::new(&JsValue::undefined());
23 set.add(&1.into());
24 set.add(&2.into());
25 set.add(&3.into());
26 assert_eq!(set.size(), 3);
27 set.clear();
28 assert_eq!(set.size(), 0);
29 }
30
31 #[wasm_bindgen_test]
delete()32 fn delete() {
33 let set = Set::new(&JsValue::undefined());
34 set.add(&1.into());
35 set.add(&2.into());
36 set.add(&3.into());
37
38 assert!(set.delete(&3.into()));
39 assert!(!set.delete(&3.into()));
40 assert!(!set.delete(&4.into()));
41 }
42
43 #[wasm_bindgen_test]
for_each()44 fn for_each() {
45 let set = Set::new(&JsValue::undefined());
46 set.add(&1.into());
47 set.add(&2.into());
48 set.add(&3.into());
49
50 let v = set2vec(&set);
51 assert_eq!(v.len(), 3);
52 assert!(v.iter().any(|v| *v == 1));
53 assert!(v.iter().any(|v| *v == 2));
54 assert!(v.iter().any(|v| *v == 3));
55 }
56
57 #[wasm_bindgen_test]
has()58 fn has() {
59 let set = Set::new(&JsValue::undefined());
60 set.add(&1.into());
61 set.add(&2.into());
62 set.add(&3.into());
63
64 assert!(set.has(&1.into()));
65 assert!(!set.has(&1.3.into()));
66 }
67
68 #[wasm_bindgen_test]
new()69 fn new() {
70 assert_eq!(Set::new(&JsValue::undefined()).size(), 0);
71 }
72
73 #[wasm_bindgen_test]
size()74 fn size() {
75 let set = Set::new(&JsValue::undefined());
76 assert_eq!(set.size(), 0);
77 set.add(&1.into());
78 assert_eq!(set.size(), 1);
79 set.add(&2.into());
80 assert_eq!(set.size(), 2);
81 set.add(&3.into());
82 assert_eq!(set.size(), 3);
83 }
84
85 #[wasm_bindgen_test]
set_inheritance()86 fn set_inheritance() {
87 let set = Set::new(&JsValue::undefined());
88 assert!(set.is_instance_of::<Set>());
89 assert!(set.is_instance_of::<Object>());
90 let _: &Object = set.as_ref();
91 }
92
93 #[wasm_bindgen_test]
keys()94 fn keys() {
95 let set = Set::new(&JsValue::undefined());
96 set.add(&1.into());
97 set.add(&2.into());
98 set.add(&3.into());
99
100 let list = set
101 .keys()
102 .into_iter()
103 .map(|e| e.unwrap())
104 .collect::<Vec<_>>();
105 assert_eq!(list.len(), 3);
106 assert!(list.iter().any(|l| *l == 1));
107 assert!(list.iter().any(|l| *l == 2));
108 assert!(list.iter().any(|l| *l == 3));
109 }
110
111 #[wasm_bindgen_test]
values()112 fn values() {
113 let set = Set::new(&JsValue::undefined());
114 set.add(&1.into());
115 set.add(&2.into());
116 set.add(&3.into());
117
118 let list = set
119 .values()
120 .into_iter()
121 .map(|e| e.unwrap())
122 .collect::<Vec<_>>();
123 assert_eq!(list.len(), 3);
124 assert!(list.iter().any(|l| *l == 1));
125 assert!(list.iter().any(|l| *l == 2));
126 assert!(list.iter().any(|l| *l == 3));
127 }
128