#[cfg(test)]
mod tests {
use super::super::*;
use crate::CssAtomSet;
use css_parse::{assert_parse, assert_parse_error};
#[test]
fn size_test() {
assert_eq!(std::mem::size_of::<FillBreakStyleValue>(), 16);
assert_eq!(std::mem::size_of::<FillColorStyleValue>(), 24);
assert_eq!(std::mem::size_of::<FillOpacityStyleValue>(), 16);
assert_eq!(std::mem::size_of::<FillOriginStyleValue>(), 16);
assert_eq!(std::mem::size_of::<FillPositionStyleValue>(), 32);
assert_eq!(std::mem::size_of::<FillRepeatStyleValue>(), 32);
assert_eq!(std::mem::size_of::<FillRuleStyleValue>(), 16);
assert_eq!(std::mem::size_of::<FillSizeStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeAlignStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokeBreakStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokeColorStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeDashCornerStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokeDasharrayStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeDashoffsetStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokeLinecapStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokeMiterlimitStyleValue>(), 12);
assert_eq!(std::mem::size_of::<StrokeOpacityStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokeOriginStyleValue>(), 16);
assert_eq!(std::mem::size_of::<StrokePositionStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeRepeatStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeSizeStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeWidthStyleValue>(), 32);
assert_eq!(std::mem::size_of::<StrokeDashJustifyStyleValue>(), 52);
assert_eq!(std::mem::size_of::<StrokeLinejoinStyleValue>(), 36);
}
#[test]
fn test_writes() {
assert_parse!(CssAtomSet::ATOMS, FillBreakStyleValue, "bounding-box");
assert_parse!(CssAtomSet::ATOMS, FillBreakStyleValue, "slice");
assert_parse!(CssAtomSet::ATOMS, FillBreakStyleValue, "clone");
assert_parse!(CssAtomSet::ATOMS, FillColorStyleValue, "red");
assert_parse!(CssAtomSet::ATOMS, FillColorStyleValue, "currentcolor");
assert_parse!(CssAtomSet::ATOMS, FillColorStyleValue, "transparent");
assert_parse!(CssAtomSet::ATOMS, FillOpacityStyleValue, "0");
assert_parse!(CssAtomSet::ATOMS, FillOpacityStyleValue, "1");
assert_parse!(CssAtomSet::ATOMS, FillOpacityStyleValue, "0.5");
assert_parse!(CssAtomSet::ATOMS, FillOriginStyleValue, "match-parent");
assert_parse!(CssAtomSet::ATOMS, FillOriginStyleValue, "fill-box");
assert_parse!(CssAtomSet::ATOMS, FillOriginStyleValue, "stroke-box");
assert_parse!(CssAtomSet::ATOMS, FillOriginStyleValue, "content-box");
assert_parse!(CssAtomSet::ATOMS, FillOriginStyleValue, "padding-box");
assert_parse!(CssAtomSet::ATOMS, FillOriginStyleValue, "border-box");
assert_parse!(CssAtomSet::ATOMS, FillPositionStyleValue, "center");
assert_parse!(CssAtomSet::ATOMS, FillPositionStyleValue, "top left");
assert_parse!(CssAtomSet::ATOMS, FillPositionStyleValue, "center,top left");
assert_parse!(CssAtomSet::ATOMS, FillRuleStyleValue, "nonzero");
assert_parse!(CssAtomSet::ATOMS, FillRuleStyleValue, "evenodd");
assert_parse!(CssAtomSet::ATOMS, StrokeAlignStyleValue, "center");
assert_parse!(CssAtomSet::ATOMS, StrokeAlignStyleValue, "inset");
assert_parse!(CssAtomSet::ATOMS, StrokeAlignStyleValue, "outset");
assert_parse!(CssAtomSet::ATOMS, StrokeBreakStyleValue, "bounding-box");
assert_parse!(CssAtomSet::ATOMS, StrokeBreakStyleValue, "slice");
assert_parse!(CssAtomSet::ATOMS, StrokeBreakStyleValue, "clone");
assert_parse!(CssAtomSet::ATOMS, StrokeColorStyleValue, "red");
assert_parse!(CssAtomSet::ATOMS, StrokeColorStyleValue, "blue");
assert_parse!(CssAtomSet::ATOMS, StrokeColorStyleValue, "red, blue");
assert_parse!(CssAtomSet::ATOMS, StrokeDashCornerStyleValue, "none");
assert_parse!(CssAtomSet::ATOMS, StrokeDashCornerStyleValue, "10px");
assert_parse!(CssAtomSet::ATOMS, StrokeDashoffsetStyleValue, "0");
assert_parse!(CssAtomSet::ATOMS, StrokeDashoffsetStyleValue, "10px");
assert_parse!(CssAtomSet::ATOMS, StrokeDashoffsetStyleValue, "50%");
assert_parse!(CssAtomSet::ATOMS, StrokeLinecapStyleValue, "butt");
assert_parse!(CssAtomSet::ATOMS, StrokeLinecapStyleValue, "round");
assert_parse!(CssAtomSet::ATOMS, StrokeLinecapStyleValue, "square");
assert_parse!(CssAtomSet::ATOMS, StrokeMiterlimitStyleValue, "1");
assert_parse!(CssAtomSet::ATOMS, StrokeMiterlimitStyleValue, "4");
assert_parse!(CssAtomSet::ATOMS, StrokeOpacityStyleValue, "0");
assert_parse!(CssAtomSet::ATOMS, StrokeOpacityStyleValue, "1");
assert_parse!(CssAtomSet::ATOMS, StrokeOpacityStyleValue, "0.5");
assert_parse!(CssAtomSet::ATOMS, StrokeOriginStyleValue, "match-parent");
assert_parse!(CssAtomSet::ATOMS, StrokeOriginStyleValue, "fill-box");
assert_parse!(CssAtomSet::ATOMS, StrokeOriginStyleValue, "border-box");
assert_parse!(CssAtomSet::ATOMS, StrokePositionStyleValue, "center");
assert_parse!(CssAtomSet::ATOMS, StrokePositionStyleValue, "top left");
assert_parse!(CssAtomSet::ATOMS, StrokeWidthStyleValue, "1px");
assert_parse!(CssAtomSet::ATOMS, StrokeWidthStyleValue, "thin");
assert_parse!(CssAtomSet::ATOMS, StrokeWidthStyleValue, "medium");
assert_parse!(CssAtomSet::ATOMS, StrokeWidthStyleValue, "thick");
assert_parse!(CssAtomSet::ATOMS, StrokeWidthStyleValue, "50%");
assert_parse!(CssAtomSet::ATOMS, StrokeWidthStyleValue, "1px, 2px");
}
#[test]
fn test_stroke_dash_justify() {
assert_parse!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "none");
assert_parse!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "stretch");
assert_parse!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "dashes");
assert_parse!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "stretch dashes");
assert_parse!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "stretch dashes gaps");
assert_parse_error!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "");
assert_parse_error!(CssAtomSet::ATOMS, StrokeDashJustifyStyleValue, "1px");
}
#[test]
fn test_stroke_linejoin() {
assert_parse!(CssAtomSet::ATOMS, StrokeLinejoinStyleValue, "crop");
assert_parse!(CssAtomSet::ATOMS, StrokeLinejoinStyleValue, "arcs");
assert_parse!(CssAtomSet::ATOMS, StrokeLinejoinStyleValue, "miter");
assert_parse!(CssAtomSet::ATOMS, StrokeLinejoinStyleValue, "crop bevel");
assert_parse_error!(CssAtomSet::ATOMS, StrokeLinejoinStyleValue, "");
assert_parse_error!(CssAtomSet::ATOMS, StrokeLinejoinStyleValue, "1px");
}
#[test]
fn test_errors() {
assert_parse_error!(CssAtomSet::ATOMS, FillBreakStyleValue, "none");
assert_parse_error!(CssAtomSet::ATOMS, FillBreakStyleValue, "bounding-box slice");
assert_parse_error!(CssAtomSet::ATOMS, FillRuleStyleValue, "none");
assert_parse_error!(CssAtomSet::ATOMS, FillRuleStyleValue, "nonzero evenodd");
assert_parse_error!(CssAtomSet::ATOMS, StrokeAlignStyleValue, "none");
assert_parse_error!(CssAtomSet::ATOMS, StrokeAlignStyleValue, "center inset");
assert_parse_error!(CssAtomSet::ATOMS, StrokeBreakStyleValue, "none");
assert_parse_error!(CssAtomSet::ATOMS, StrokeLinecapStyleValue, "none");
assert_parse_error!(CssAtomSet::ATOMS, StrokeLinecapStyleValue, "butt round");
}
}