1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- fn basic_syntax_is_a_template(cx: Scope) -> Element {
- let asd = 123;
- let var = 123;
- cx.render(rsx! {
- div { key: "12345",
- class: "asd",
- class: "{asd}",
- onclick: move |_| {},
- div { "{var}" }
- div {
- h1 { "var" }
- p { "you're great!" }
- div { background_color: "red",
- h1 { "var" }
- div { b { "asd" } "not great" }
- }
- p { "you're great!" }
- }
- }
- })
- }
- // imports come after the test since the rsx! macro is sensitive to its location in the file
- // (the byte index is used to differentiate sub templates)
- use dioxus::core::{ElementId, Mutation};
- use dioxus::prelude::*;
- #[test]
- fn dual_stream() {
- let mut dom = VirtualDom::new(basic_syntax_is_a_template);
- let edits = dom.rebuild();
- use Mutation::*;
- assert_eq!(
- edits.template_mutations,
- vec![
- CreateElement { name: "div", namespace: None, id: ElementId(1) },
- SetAttribute { name: "class", value: "asd", id: ElementId(1) },
- CreateElement { name: "div", namespace: None, id: ElementId(2) },
- CreatePlaceholder { id: ElementId(3) },
- AppendChildren { m: 1 },
- CreateElement { name: "div", namespace: None, id: ElementId(4) },
- CreateElement { name: "h1", namespace: None, id: ElementId(5) },
- CreateTextNode { value: "var" },
- AppendChildren { m: 1 },
- CreateElement { name: "p", namespace: None, id: ElementId(6) },
- CreateTextNode { value: "you're great!" },
- AppendChildren { m: 1 },
- CreateElement { name: "div", namespace: None, id: ElementId(7) },
- SetAttribute { name: "background-color", value: "red", id: ElementId(7) },
- CreateElement { name: "h1", namespace: None, id: ElementId(8) },
- CreateTextNode { value: "var" },
- AppendChildren { m: 1 },
- CreateElement { name: "div", namespace: None, id: ElementId(9) },
- CreateElement { name: "b", namespace: None, id: ElementId(10) },
- CreateTextNode { value: "asd" },
- AppendChildren { m: 1 },
- CreateTextNode { value: "not great" },
- AppendChildren { m: 2 },
- AppendChildren { m: 2 },
- CreateElement { name: "p", namespace: None, id: ElementId(11) },
- CreateTextNode { value: "you're great!" },
- AppendChildren { m: 1 },
- AppendChildren { m: 4 },
- AppendChildren { m: 2 },
- SaveTemplate { name: "packages/dioxus/tests/rsx_syntax.rs:5:15:122", m: 1 }
- ]
- );
- assert_eq!(
- edits.edits,
- vec![
- LoadTemplate { name: "packages/dioxus/tests/rsx_syntax.rs:5:15:122", index: 0 },
- AssignId { path: &[], id: ElementId(12) },
- SetAttribute { name: "class", value: "123", id: ElementId(12) },
- SetAttribute { name: "onclick", value: "asd", id: ElementId(12) }, // ---- todo: listeners
- HydrateText { path: &[0, 0], value: "123", id: ElementId(13) },
- ReplacePlaceholder { m: 1, path: &[0, 0] },
- AppendChildren { m: 1 }
- ]
- );
- }
|