mirror of
https://github.com/yewstack/yew.git
synced 2025-12-08 21:26:25 +00:00
Add From<&[T]> for Classes (#1448)
* Add From<&[T]> for Classes * Round out the test cases for From<&[T]> for Classes
This commit is contained in:
parent
07dcbb9982
commit
bfc71626d2
@ -155,6 +155,12 @@ impl<T: AsRef<str>> From<&Option<T>> for Classes {
|
||||
|
||||
impl<T: AsRef<str>> From<Vec<T>> for Classes {
|
||||
fn from(t: Vec<T>) -> Self {
|
||||
Classes::from(t.as_slice())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: AsRef<str>> From<&[T]> for Classes {
|
||||
fn from(t: &[T]) -> Self {
|
||||
let set = t
|
||||
.iter()
|
||||
.map(|x| x.as_ref())
|
||||
|
||||
@ -750,6 +750,38 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn supports_multiple_classes_slice() {
|
||||
let classes = ["class-1", "class-2"];
|
||||
let a = html! {
|
||||
<div class=&classes[..]></div>
|
||||
};
|
||||
|
||||
if let VNode::VTag(vtag) = a {
|
||||
assert!(get_class_str(&vtag).contains("class-1"));
|
||||
assert!(get_class_str(&vtag).contains("class-2"));
|
||||
assert!(!get_class_str(&vtag).contains("class-3"));
|
||||
} else {
|
||||
panic!("vtag expected");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn supports_multiple_classes_one_value_slice() {
|
||||
let classes = ["class-1 class-2", "class-1"];
|
||||
let a = html! {
|
||||
<div class=&classes[..]></div>
|
||||
};
|
||||
|
||||
if let VNode::VTag(vtag) = a {
|
||||
assert!(get_class_str(&vtag).contains("class-1"));
|
||||
assert!(get_class_str(&vtag).contains("class-2"));
|
||||
assert!(!get_class_str(&vtag).contains("class-3"));
|
||||
} else {
|
||||
panic!("vtag expected");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn supports_multiple_classes_vec() {
|
||||
let mut classes = vec!["class-1"];
|
||||
@ -784,12 +816,12 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn filter_empty_string_classes_vec() {
|
||||
let mut classes = vec![""];
|
||||
classes.push("class-2");
|
||||
fn filter_empty_string_classes() {
|
||||
let a = html! { <div class=vec![""]></div> };
|
||||
let b = html! { <div class=("")></div> };
|
||||
let c = html! { <div class=""></div> };
|
||||
let d_arr = [""];
|
||||
let d = html! { <div class=&d_arr[..]></div> };
|
||||
|
||||
if let VNode::VTag(vtag) = a {
|
||||
assert!(!vtag.attributes.contains_key("class"));
|
||||
@ -808,6 +840,12 @@ mod tests {
|
||||
} else {
|
||||
panic!("vtag expected");
|
||||
}
|
||||
|
||||
if let VNode::VTag(vtag) = d {
|
||||
assert!(!vtag.attributes.contains_key("class"));
|
||||
} else {
|
||||
panic!("vtag expected");
|
||||
}
|
||||
}
|
||||
|
||||
fn assert_vtag(node: &mut VNode) -> &mut VTag {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user