fixed the wrong behavior of border-spacing

This commit is contained in:
Huxley 2017-02-17 14:29:07 +08:00
parent 11396b4dd3
commit 06650f8428
3 changed files with 22 additions and 6 deletions

View file

@ -113,15 +113,11 @@ ${helpers.single_keyword("caption-side", "top bottom",
Err(()) => (),
Ok(length) => {
first = Some(length);
match specified::Length::parse_non_negative(input) {
Err(()) => (),
Ok(length) => second = Some(length),
if let Ok(len) = input.try(|input| specified::Length::parse_non_negative(input)) {
second = Some(len);
}
}
}
if input.next().is_ok() {
return Err(())
}
match (first, second) {
(None, None) => Err(()),
(Some(length), None) => {

View file

@ -139,3 +139,12 @@ fn test_border_style() {
assert_roundtrip_with_context!(BorderStyle::parse, r#"inset"#);
assert_roundtrip_with_context!(BorderStyle::parse, r#"outset"#);
}
#[test]
fn test_border_spacing() {
use style::properties::longhands::border_spacing;
assert_parser_exhausted!(border_spacing, "1px rubbish", false);
assert_parser_exhausted!(border_spacing, "1px", true);
assert_parser_exhausted!(border_spacing, "1px 2px", true);
}

View file

@ -58,6 +58,17 @@ macro_rules! assert_roundtrip {
}
}
macro_rules! assert_parser_exhausted {
($name:ident, $string:expr, $should_exhausted:expr) => {{
let url = ::servo_url::ServoUrl::parse("http://localhost").unwrap();
let context = ParserContext::new(Origin::Author, &url, Box::new(CSSErrorReporterTest));
let mut parser = Parser::new($string);
let parsed = $name::parse(&context, &mut parser);
assert_eq!(parsed.is_ok(), true);
assert_eq!(parser.is_exhausted(), $should_exhausted);
}}
}
macro_rules! parse_longhand {
($name:ident, $s:expr) => {{
let url = ::servo_url::ServoUrl::parse("http://localhost").unwrap();