extern crate svgparser;
use svgparser::{
AttributeId as AId,
AttributeValue as AV,
Color,
ElementId,
PaintFallback,
ValueId,
ViewBox,
};
macro_rules! test {
($name:ident, $aid:expr, $text:expr, $result:expr) => (
#[test]
fn $name() {
let v = AV::from_str(ElementId::Rect, "", $aid, $text).unwrap();
assert_eq!(v, $result);
}
)
}
macro_rules! test_err {
($name:ident, $aid:expr, $text:expr, $err:expr) => (
#[test]
fn $name() {
let v = AV::from_str(ElementId::Rect, "", $aid, $text);
assert_eq!(v.unwrap_err().to_string(), $err);
}
)
}
test_err!(empty_1, AId::Fill, "", "unexpected end of stream");
test_err!(empty_2, AId::Fill, " ", "unexpected end of stream");
test!(unicode_1, AId::Unicode, " ", AV::String(" "));
test!(paint_1, AId::Fill, "none", AV::PredefValue(ValueId::None));
test!(paint_2, AId::Fill, "currentColor", AV::PredefValue(ValueId::CurrentColor));
test!(paint_3, AId::Fill, "inherit", AV::PredefValue(ValueId::Inherit));
test!(paint_4, AId::Fill, "red", AV::Color(Color::new(255, 0, 0)));
test!(paint_5, AId::Fill, "url(#link)", AV::FuncIRI("link"));
test!(paint_6, AId::Fill, "url(#link) red",
AV::FuncIRIWithFallback("link", PaintFallback::Color(Color::new(255, 0, 0))));
test!(paint_7, AId::Stroke, "url(#link) red",
AV::FuncIRIWithFallback("link", PaintFallback::Color(Color::new(255, 0, 0))));
test!(paint_8, AId::Fill, "url(#link) none",
AV::FuncIRIWithFallback("link", PaintFallback::PredefValue(ValueId::None)));
test!(ref_1, AId::Class, "&ref;", AV::EntityRef("ref"));
test!(eb_1, AId::EnableBackground, "new ", AV::String("new"));
test!(vb_1, AId::ViewBox, "10 20 30 40",
AV::ViewBox(ViewBox { x: 10.0, y: 20.0, w: 30.0, h: 40.0 }));
test!(vb_2, AId::ViewBox, "10.1 20.2 30.3 40.4",
AV::ViewBox(ViewBox { x: 10.1, y: 20.2, w: 30.3, h: 40.4 }));
test!(vb_3, AId::ViewBox, "10 20 30 40 invalid data",
AV::ViewBox(ViewBox { x: 10.0, y: 20.0, w: 30.0, h: 40.0 }));
test!(vb_4, AId::ViewBox, "-10 -20 30 40",
AV::ViewBox(ViewBox { x: -10.0, y: -20.0, w: 30.0, h: 40.0 }));
test_err!(paint_err_1, AId::Fill, "#link", "invalid color at 1:1");
test_err!(paint_err_2, AId::Fill, "text", "invalid color at 1:1");
test_err!(vb_err_1, AId::ViewBox, "qwe", "invalid number at 1:1");
test_err!(vb_err_2, AId::ViewBox, "10 20 30 0", "viewBox should have a positive size");
test_err!(vb_err_3, AId::ViewBox, "10 20 0 40", "viewBox should have a positive size");
test_err!(vb_err_4, AId::ViewBox, "10 20 0 0", "viewBox should have a positive size");
test_err!(vb_err_5, AId::ViewBox, "10 20 -30 0", "viewBox should have a positive size");
test_err!(vb_err_6, AId::ViewBox, "10 20 30 -40", "viewBox should have a positive size");
test_err!(vb_err_7, AId::ViewBox, "10 20 -30 -40", "viewBox should have a positive size");