tawasuyu

tawasuyu/taffy

A high performance rust-powered UI layout library

Rust 1069HTML 1000Markdown 12TOML 83193 Definitions

⎇ a33184b2d8cdcb69578f3f5789e1cbfd6f85ec7b bindings/js/tests/web.rs Rust · 92 lines · 2.3 KB History Who touched what raw

Implement js bindings a33184b2d · Emil Sjölander ·

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}