summaryrefslogtreecommitdiffstats
path: root/vendor/js-sys/tests/wasm/Map.rs
blob: 8223c6e709e009ef3252f824d75b7f4b7c725e24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
use js_sys::*;
use wasm_bindgen::JsCast;
use wasm_bindgen_test::*;

#[wasm_bindgen_test]
fn clear() {
    let map = Map::new();
    map.set(&"foo".into(), &"bar".into());
    map.set(&"bar".into(), &"baz".into());
    assert_eq!(map.size(), 2);
    map.clear();
    assert_eq!(map.size(), 0);
    map.clear();
    assert_eq!(map.size(), 0);
}

#[wasm_bindgen_test]
fn delete() {
    let map = Map::new();
    map.set(&"foo".into(), &"bar".into());
    assert_eq!(map.size(), 1);
    assert_eq!(map.delete(&"foo".into()), true);
    assert_eq!(map.delete(&"bar".into()), false);
    assert_eq!(map.size(), 0);
}

#[wasm_bindgen_test]
fn for_each() {
    let map = Map::new();
    map.set(&1.into(), &true.into());
    map.set(&2.into(), &false.into());
    map.set(&3.into(), &"awoo".into());
    map.set(&4.into(), &100.into());
    map.set(&5.into(), &Array::new().into());
    map.set(&6.into(), &Object::new().into());

    let mut res = Vec::new();
    map.for_each(&mut |value, key| {
        if value.as_bool().is_some() {
            res.push((key, value));
        }
    });

    assert_eq!(map.size(), 6);
    assert_eq!(res.len(), 2);
    assert_eq!(res[0].0, 1);
    assert_eq!(res[0].1, true);
    assert_eq!(res[1].0, 2);
    assert_eq!(res[1].1, false);
}

#[wasm_bindgen_test]
fn get() {
    let map = Map::new();
    map.set(&"foo".into(), &"bar".into());
    map.set(&1.into(), &2.into());
    assert_eq!(map.get(&"foo".into()), "bar");
    assert_eq!(map.get(&1.into()), 2);
    assert!(map.get(&2.into()).is_undefined());
}

#[wasm_bindgen_test]
fn has() {
    let map = Map::new();
    map.set(&"foo".into(), &"bar".into());
    assert_eq!(map.has(&"foo".into()), true);
    assert_eq!(map.has(&"bar".into()), false);
}

#[wasm_bindgen_test]
fn new() {
    assert_eq!(Map::new().size(), 0);
}

#[wasm_bindgen_test]
fn set() {
    let map = Map::new();
    let new = map.set(&"foo".into(), &"bar".into());
    assert_eq!(map.has(&"foo".into()), true);
    assert_eq!(new.has(&"foo".into()), true);
}

#[wasm_bindgen_test]
fn size() {
    let map = Map::new();
    map.set(&"foo".into(), &"bar".into());
    map.set(&"bar".into(), &"baz".into());
    assert_eq!(map.size(), 2);
}

#[wasm_bindgen_test]
fn map_inheritance() {
    let map = Map::new();
    assert!(map.is_instance_of::<Map>());
    assert!(map.is_instance_of::<Object>());
    let _: &Object = map.as_ref();
}