initial_build.rs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. use dioxus::core::ElementId;
  2. use dioxus::prelude::*;
  3. use dioxus_native_core::real_dom::RealDom;
  4. use dioxus_native_core::state::State;
  5. use dioxus_native_core::RealNodeId;
  6. use dioxus_native_core_macro::State;
  7. #[derive(Default, Clone, State)]
  8. struct Empty {}
  9. #[test]
  10. fn initial_build_simple() {
  11. #[allow(non_snake_case)]
  12. fn Base(cx: Scope) -> Element {
  13. render!(div {})
  14. }
  15. let vdom = VirtualDom::new(Base);
  16. let mutations = vdom.create_vnodes(rsx! {
  17. div{}
  18. });
  19. let mut dom: RealDom<Empty> = RealDom::new();
  20. let _to_update = dom.apply_mutations(vec![mutations]);
  21. assert_eq!(dom.size(), 2);
  22. assert_eq!(dom[RealNodeId::ElementId(ElementId(2))].node_data.height, 1);
  23. }
  24. #[test]
  25. fn initial_build_with_children() {
  26. #[allow(non_snake_case)]
  27. fn Base(cx: Scope) -> Element {
  28. render!(div {})
  29. }
  30. let vdom = VirtualDom::new(Base);
  31. let mutations = vdom.create_vnodes(rsx! {
  32. div{
  33. div{
  34. "hello"
  35. p{
  36. "world"
  37. }
  38. "hello world"
  39. }
  40. }
  41. });
  42. let mut dom: RealDom<Empty> = RealDom::new();
  43. let _to_update = dom.apply_mutations(vec![mutations]);
  44. assert_eq!(dom.size(), 2);
  45. assert_eq!(dom[RealNodeId::ElementId(ElementId(2))].node_data.height, 1);
  46. assert_eq!(dom[RealNodeId::UnaccessableId(6)].node_data.height, 2);
  47. assert_eq!(dom[RealNodeId::UnaccessableId(5)].node_data.height, 3);
  48. assert_eq!(dom[RealNodeId::UnaccessableId(8)].node_data.height, 3);
  49. assert_eq!(dom[RealNodeId::UnaccessableId(10)].node_data.height, 3);
  50. assert_eq!(dom[RealNodeId::UnaccessableId(9)].node_data.height, 4);
  51. }