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