1#![cfg(target_arch = "wasm32")]
2
3extern crate wasm_bindgen_test;
4use js_sys::Function;
5use js_sys::Reflect;
6use stretch_js::*;
7use wasm_bindgen::prelude::*;
8use wasm_bindgen_test::*;
9
10wasm_bindgen_test_configure!(run_in_browser);
11
12fn js_value(js: &str) -> JsValue {
13 Function::new_no_args(&format!("return {};", js)).call0(&JsValue::UNDEFINED).unwrap()
14}
15
16#[wasm_bindgen_test]
17fn set_measure() {
18 let mut node = Node::new(&js_value("{}"));
19 node.set_measure(&js_value(
20 "function (w, h) {
21 return {width: 100, height: 100};
22 }",
23 ));
24
25 let layout = node.compute_layout(&JsValue::UNDEFINED);
26 assert_eq!(layout.width, 100.0);
27 assert_eq!(layout.height, 100.0);
28}
29
30#[wasm_bindgen_test]
31fn add_child() {
32 let mut node = Node::new(&js_value("{}"));
33 let child = Node::new(&js_value("{}"));
34
35 node.add_child(&child);
36
37 assert_eq!(node.childCount, 1);
38}
39
40#[wasm_bindgen_test]
41fn remove_child() {
42 let mut node = Node::new(&js_value("{}"));
43 let child = Node::new(&js_value("{}"));
44
45 node.add_child(&child);
46 node.remove_child(&child);
47
48 assert_eq!(node.childCount, 0);
49}
50
51#[wasm_bindgen_test]
52fn remove_child_at_index() {
53 let mut node = Node::new(&js_value("{}"));
54 let child = Node::new(&js_value("{}"));
55
56 node.add_child(&child);
57 node.remove_child_at_index(0);
58
59 assert_eq!(node.childCount, 0);
60}
61
62#[wasm_bindgen_test]
63fn replace_child_at_index() {
64 let mut node = Node::new(&js_value("{}"));
65 let child1 = Node::new(&js_value("{width: 100, height: 100}"));
66 let child2 = Node::new(&js_value("{width: 200, height: 200}"));
67
68 node.add_child(&child1);
69 node.replace_child_at_index(0, &child2);
70 let layout = node.compute_layout(&JsValue::UNDEFINED);
71
72 assert_eq!(layout.width, 200.0);
73 assert_eq!(layout.height, 200.0);
74}
75
76#[wasm_bindgen_test]
77fn set_style() {
78 let mut node = Node::new(&js_value("{}"));
79 node.set_style(&js_value("{width: 200, height: 200}"));
80 let style = node.get_style();
81
82 assert_eq!(Reflect::get(&style, &"width".into()).unwrap().as_f64(), Some(200.0));
83 assert_eq!(Reflect::get(&style, &"height".into()).unwrap().as_f64(), Some(200.0));
84}
85
86#[wasm_bindgen_test]
87fn mark_dirty() {
88 let mut node = Node::new(&js_value("{}"));
89 node.compute_layout(&JsValue::UNDEFINED);
90
91 assert_eq!(node.is_dirty(), false);
92 node.mark_dirty();
93 assert_eq!(node.is_dirty(), true);
94}