123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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(State, Default, Clone)]
- struct Empty {}
- #[test]
- fn remove_node() {
- #[allow(non_snake_case)]
- fn Base(cx: Scope) -> Element {
- render!(div {})
- }
- let vdom = VirtualDom::new(Base);
- let mut dom: RealDom<Empty> = RealDom::new();
- let (create, edit) = vdom.diff_lazynodes(
- rsx! {
- div{
- div{}
- }
- },
- rsx! {
- div{}
- },
- );
- println!("create: {:#?}", create);
- println!("edit: {:#?}", edit);
- let _to_update = dom.apply_mutations(vec![create]);
- assert_eq!(dom[RealNodeId::ElementId(ElementId(0))].node_data.height, 0);
- assert_eq!(dom[RealNodeId::UnaccessableId(0)].node_data.height, 1);
- dom.apply_mutations(vec![edit]);
- assert_eq!(dom.size(), 3);
- assert_eq!(dom[RealNodeId::ElementId(ElementId(0))].node_data.height, 0);
- }
- #[test]
- fn add_node() {
- #[allow(non_snake_case)]
- fn Base(cx: Scope) -> Element {
- render!(div {})
- }
- let vdom = VirtualDom::new(Base);
- let (create, update) = vdom.diff_lazynodes(
- rsx! {
- div{}
- },
- rsx! {
- div{
- p{}
- }
- },
- );
- let mut dom: RealDom<Empty> = RealDom::new();
- let _to_update = dom.apply_mutations(vec![create]);
- assert_eq!(dom.size(), 2);
- assert_eq!(dom[RealNodeId::ElementId(ElementId(2))].node_data.height, 1);
- dom.apply_mutations(vec![update]);
- assert_eq!(dom.size(), 3);
- assert_eq!(dom[RealNodeId::ElementId(ElementId(3))].node_data.height, 0);
- assert_eq!(dom[RealNodeId::UnaccessableId(0)].node_data.height, 1);
- }
|