use dioxus::core::ElementId; use dioxus::prelude::*; use dioxus_native_core::real_dom::RealDom; use dioxus_native_core::state::State; use dioxus_native_core::RealNodeId; use dioxus_native_core_macro::State; #[derive(Default, Clone, State)] struct Empty {} #[test] fn initial_build_simple() { #[allow(non_snake_case)] fn Base(cx: Scope) -> Element { render!(div {}) } let vdom = VirtualDom::new(Base); let mutations = vdom.create_vnodes(rsx! { div{} }); let mut dom: RealDom = RealDom::new(); let _to_update = dom.apply_mutations(vec![mutations]); assert_eq!(dom.size(), 2); assert_eq!(dom[RealNodeId::ElementId(ElementId(2))].node_data.height, 1); } #[test] fn initial_build_with_children() { #[allow(non_snake_case)] fn Base(cx: Scope) -> Element { render!(div {}) } let vdom = VirtualDom::new(Base); let mutations = vdom.create_vnodes(rsx! { div{ div{ "hello" p{ "world" } "hello world" } } }); let mut dom: RealDom = RealDom::new(); let _to_update = dom.apply_mutations(vec![mutations]); assert_eq!(dom.size(), 2); assert_eq!(dom[RealNodeId::ElementId(ElementId(2))].node_data.height, 1); assert_eq!(dom[RealNodeId::UnaccessableId(6)].node_data.height, 2); assert_eq!(dom[RealNodeId::UnaccessableId(5)].node_data.height, 3); assert_eq!(dom[RealNodeId::UnaccessableId(8)].node_data.height, 3); assert_eq!(dom[RealNodeId::UnaccessableId(10)].node_data.height, 3); assert_eq!(dom[RealNodeId::UnaccessableId(9)].node_data.height, 4); }