pub use tairitsu_style::{CssProperty, Property, StyleStringBuilder};
mod builder;
mod helpers;
pub use builder::{AttributeBuilder, StyleBuilder};
pub use helpers::{get_style, remove_style, set_style, set_styles};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_css_property_names() {
assert_eq!(CssProperty::Display.as_str(), "display");
assert_eq!(CssProperty::FlexDirection.as_str(), "flex-direction");
assert_eq!(CssProperty::ZIndex.as_str(), "z-index");
assert_eq!(CssProperty::BackgroundColor.as_str(), "background-color");
}
#[test]
fn test_css_property_comprehensive() {
let props = vec![
CssProperty::Position,
CssProperty::Display,
CssProperty::Width,
CssProperty::Height,
CssProperty::Margin,
CssProperty::Padding,
CssProperty::FlexDirection,
CssProperty::AlignItems,
CssProperty::GridTemplateColumns,
CssProperty::FontSize,
CssProperty::Color,
CssProperty::BackgroundColor,
CssProperty::Opacity,
CssProperty::Transform,
CssProperty::BoxShadow,
CssProperty::Overflow,
];
for prop in props {
let name = prop.as_str();
assert!(
name.chars()
.all(|c| c.is_ascii_lowercase() || c.is_ascii_digit() || c == '-')
);
assert!(!name.is_empty());
}
}
#[test]
fn test_style_string_builder_basic() {
let style = StyleStringBuilder::new()
.add(CssProperty::Width, "100px")
.add_px(CssProperty::Height, 50)
.build_clean();
assert!(style.contains("width:100px"));
assert!(style.contains("height:50px"));
}
#[test]
fn test_style_string_builder_add_custom() {
let style = StyleStringBuilder::new()
.add_custom("--hi-glow-x", "100px")
.add_custom("--hi-glow-y", "200px")
.build_clean();
assert!(style.contains("--hi-glow-x:100px"));
assert!(style.contains("--hi-glow-y:200px"));
}
#[test]
fn test_style_string_builder_mixed() {
let style = StyleStringBuilder::new()
.add(CssProperty::Position, "relative")
.add_custom("--hi-glow-x", "50px")
.add_px(CssProperty::Height, 100)
.build_clean();
assert!(style.contains("position:relative"));
assert!(style.contains("--hi-glow-x:50px"));
assert!(style.contains("height:100px"));
}
}