in cli/src/generate/properties.rs [993:1096]
fn test_property_sheet_with_immediate_child_and_descendant_selectors() {
let sheet = generate_property_sheet(
"foo.css",
"
f1 {
color: red;
& > f2 {
color: green;
}
& f3 {
color: blue;
}
}
f2 {
color: indigo;
height: 2;
}
f3 {
color: violet;
height: 3;
}
",
&HashSet::new(),
)
.unwrap();
// f1 single-element selector
assert_eq!(
*query_simple(&sheet, vec!["f1"]),
props(&[("color", string("red"))])
);
assert_eq!(
*query_simple(&sheet, vec!["f2", "f1"]),
props(&[("color", string("red"))])
);
assert_eq!(
*query_simple(&sheet, vec!["f2", "f3", "f1"]),
props(&[("color", string("red"))])
);
// f2 single-element selector
assert_eq!(
*query_simple(&sheet, vec!["f2"]),
props(&[("color", string("indigo")), ("height", num(2))])
);
assert_eq!(
*query_simple(&sheet, vec!["f2", "f2"]),
props(&[("color", string("indigo")), ("height", num(2))])
);
assert_eq!(
*query_simple(&sheet, vec!["f1", "f3", "f2"]),
props(&[("color", string("indigo")), ("height", num(2))])
);
assert_eq!(
*query_simple(&sheet, vec!["f1", "f6", "f2"]),
props(&[("color", string("indigo")), ("height", num(2))])
);
// f3 single-element selector
assert_eq!(
*query_simple(&sheet, vec!["f3"]),
props(&[("color", string("violet")), ("height", num(3))])
);
assert_eq!(
*query_simple(&sheet, vec!["f2", "f3"]),
props(&[("color", string("violet")), ("height", num(3))])
);
// f2 child selector
assert_eq!(
*query_simple(&sheet, vec!["f1", "f2"]),
props(&[("color", string("green")), ("height", num(2))])
);
assert_eq!(
*query_simple(&sheet, vec!["f2", "f1", "f2"]),
props(&[("color", string("green")), ("height", num(2))])
);
assert_eq!(
*query_simple(&sheet, vec!["f3", "f1", "f2"]),
props(&[("color", string("green")), ("height", num(2))])
);
// f3 descendant selector
assert_eq!(
*query_simple(&sheet, vec!["f1", "f3"]),
props(&[("color", string("blue")), ("height", num(3))])
);
assert_eq!(
*query_simple(&sheet, vec!["f1", "f2", "f3"]),
props(&[("color", string("blue")), ("height", num(3))])
);
assert_eq!(
*query_simple(&sheet, vec!["f1", "f6", "f7", "f8", "f3"]),
props(&[("color", string("blue")), ("height", num(3))])
);
// no match
assert_eq!(*query_simple(&sheet, vec!["f1", "f3", "f4"]), props(&[]));
assert_eq!(*query_simple(&sheet, vec!["f1", "f2", "f5"]), props(&[]));
}