domrs 0.0.17

Document builder and serializer
Documentation
use domrs::{border, px, CssBorder, CssBorderStyle, CssColor, CssFontFamily, CssFontGenericFamily, CssFontStyle, CssNumber, CssUnit, CssValue};

#[test]
fn display_should_work() {
  let eq = |expected: &str, value: CssValue| {
    assert_eq!(expected, value.clone().to_string());
  };
  eq("avoid", CssValue::Avoid);
  eq("block", CssValue::Block);
  eq("1px solid black", CssValue::Border(border!(px!(1), CssBorderStyle::Solid, CssColor::Black)));
  eq("center", CssValue::Center);
  eq("blueviolet", CssValue::Color(CssColor::BlueViolet));
  eq("column", CssValue::Column);
  eq("flex", CssValue::Flex);
  eq("flex-start", CssValue::FlexStart);
  eq(
    r#""Helvetica", sans-serif"#,
    CssValue::FontFamily(CssFontFamily::new(&["Helvetica".to_string()], CssFontGenericFamily::SansSerif)),
  );
  eq("normal", CssValue::FontStyle(CssFontStyle::Normal));
  eq("grid", CssValue::Grid);
  eq("hidden", CssValue::Hidden);
  eq("inline-block", CssValue::InlineBlock);
  eq("7", CssValue::Integer(7));
  eq("left", CssValue::Left);
  eq("none", CssValue::None);
  eq("1px", CssValue::Num1(px!(1)));
  eq("1px 2px", CssValue::Num2(px!(1), px!(2)));
  eq("1px 2px 3px", CssValue::Num3(px!(1), px!(2), px!(3)));
  eq("1px 2px 3px 4px", CssValue::Num4(px!(1), px!(2), px!(3), px!(4)));
  eq("relative", CssValue::Relative);
  eq("right", CssValue::Right);
  eq("row", CssValue::Row);
  eq("start", CssValue::Start);
  eq("unset", CssValue::Unset);
  eq("0", CssValue::Zero);
}

#[test]
fn conversion_should_work() {
  let eq = |expected: &str, value: CssValue| {
    assert_eq!(expected, value.to_string());
  };
  eq("1px solid black", border!(px!(1), CssBorderStyle::Solid, CssColor::Black).into());
  eq("blueviolet", CssColor::BlueViolet.into());
  eq(
    r#""Helvetica", sans-serif"#,
    CssFontFamily::new(&["Helvetica".to_string()], CssFontGenericFamily::SansSerif).into(),
  );
  eq("normal", CssFontStyle::Normal.into());
  eq("7", 7_u8.into());
  eq("7", 7_i8.into());
  eq("7", 7_u16.into());
  eq("7", 7_i16.into());
  eq("7", 7_u32.into());
  eq("7", 7_i32.into());
  eq("7", 7_u64.into());
  eq("7", 7_i64.into());
  eq("-1", u64::MAX.into());
  eq("1px", px!(1).into());
  eq("1px 2px", (px!(1), px!(2)).into());
  eq("1px 2px 3px", (px!(1), px!(2), px!(3)).into());
  eq("1px 2px 3px 4px", (px!(1), px!(2), px!(3), px!(4)).into());
}