use simplecss::*;
macro_rules! tokenize {
($name:ident, $text:expr, $( $token:expr ),*) => (
#[test]
fn $name() {
let mut t = DeclarationTokenizer::from($text);
$(
assert_eq!(t.next().unwrap(), $token);
)*
assert!(t.next().is_none());
}
)
}
fn declare<'a>(name: &'a str, value: &'a str) -> Declaration<'a> {
Declaration { name, value, important: false }
}
fn declare_important<'a>(name: &'a str, value: &'a str) -> Declaration<'a> {
Declaration { name, value, important: true }
}
tokenize!(tokenize_01, "", );
tokenize!(tokenize_02, " ", );
tokenize!(tokenize_03, "/**/", );
tokenize!(tokenize_04, "color:red",
declare("color", "red")
);
tokenize!(tokenize_05, "color:red;",
declare("color", "red")
);
tokenize!(tokenize_06, "color:red ",
declare("color", "red")
);
tokenize!(tokenize_07, " color: red; ",
declare("color", "red")
);
tokenize!(tokenize_08, " color : red ; ",
declare("color", "red")
);
tokenize!(tokenize_09, " color:red;;;;color:red; ",
declare("color", "red"),
declare("color", "red")
);
tokenize!(tokenize_10, "background: url(\"img.png\");",
declare("background", "url(\"img.png\")")
);
tokenize!(tokenize_11, "background: url(\"{}\");",
declare("background", "url(\"{}\")")
);
tokenize!(tokenize_12, "color: red ! important",
declare_important("color", "red")
);
tokenize!(tokenize_13, "color: red !important",
declare_important("color", "red")
);
tokenize!(tokenize_14, "color: red!important",
declare_important("color", "red")
);
tokenize!(tokenize_15, "color: red !/**/important",
declare_important("color", "red")
);
tokenize!(tokenize_16, "border: 1em solid blue",
declare("border", "1em solid blue")
);
tokenize!(tokenize_17, "background: navy url(support/diamond.png) -2em -2em no-repeat",
declare("background", "navy url(support/diamond.png) -2em -2em no-repeat")
);
tokenize!(tokenize_18, "/**/color:red",
declare("color", "red")
);
tokenize!(tokenize_19, "/* *\\/*/color: red;",
declare("color", "red")
);
tokenize!(tokenize_20, "/**/color/**/:/**/red/**/;/**/",
declare("color", "red")
);
tokenize!(tokenize_21, "\ncolor\n:\nred\n;\n",
declare("color", "red")
);
tokenize!(tokenize_22, "{color:red}", );
tokenize!(tokenize_23, "(color:red)", );
tokenize!(tokenize_24, "[color:red]", );
tokenize!(tokenize_25, "color:", );
tokenize!(tokenize_26, "value:\"text\"",
declare("value", "\"text\"")
);
tokenize!(tokenize_27, "value:'text'",
declare("value", "'text'")
);
tokenize!(tokenize_28, "color:#fff",
declare("color", "#fff")
);
tokenize!(tokenize_29, "color:0.5",
declare("color", "0.5")
);
tokenize!(tokenize_30, "color:.5",
declare("color", ".5")
);
tokenize!(tokenize_31, "color:#FFF",
declare("color", "#FFF")
);
tokenize!(tokenize_32, "content: counter(chapno, upper-roman) \". \"",
declare("content", "counter(chapno, upper-roman) \". \"")
);
tokenize!(tokenize_33, "font-family:'Noto Serif','DejaVu Serif',serif",
declare("font-family", "'Noto Serif','DejaVu Serif',serif")
);
tokenize!(tokenize_34, "*zoom:1;",
declare("zoom", "1")
);