mirror of
https://github.com/servo/servo.git
synced 2025-08-09 15:35:34 +01:00
Fix the unit tests to use context
This commit is contained in:
parent
dee1a65a69
commit
f290a6f88c
4 changed files with 51 additions and 57 deletions
|
@ -2,8 +2,11 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use cssparser::Parser;
|
||||||
|
use media_queries::CSSErrorReporterTest;
|
||||||
use parsing::parse;
|
use parsing::parse;
|
||||||
use style::parser::Parse;
|
use style::parser::{Parse, ParserContext};
|
||||||
|
use style::stylesheets::Origin;
|
||||||
use style::values::specified::basic_shape::*;
|
use style::values::specified::basic_shape::*;
|
||||||
use style_traits::ToCss;
|
use style_traits::ToCss;
|
||||||
|
|
||||||
|
@ -11,8 +14,8 @@ use style_traits::ToCss;
|
||||||
// and their individual components
|
// and their individual components
|
||||||
macro_rules! assert_roundtrip_basicshape {
|
macro_rules! assert_roundtrip_basicshape {
|
||||||
($fun:expr, $input:expr, $output:expr) => {
|
($fun:expr, $input:expr, $output:expr) => {
|
||||||
assert_roundtrip!($fun, $input, $output);
|
assert_roundtrip_with_context!($fun, $input, $output);
|
||||||
assert_roundtrip!(BasicShape::parse, $input, $output);
|
assert_roundtrip_with_context!(BasicShape::parse, $input, $output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,32 +5,19 @@
|
||||||
//! Tests for parsing and serialization of values/properties
|
//! Tests for parsing and serialization of values/properties
|
||||||
|
|
||||||
use cssparser::Parser;
|
use cssparser::Parser;
|
||||||
|
use media_queries::CSSErrorReporterTest;
|
||||||
|
use style::parser::ParserContext;
|
||||||
|
use style::stylesheets::Origin;
|
||||||
|
|
||||||
fn parse<T, F: Fn(&mut Parser) -> Result<T, ()>>(f: F, s: &str) -> Result<T, ()> {
|
fn parse<T, F: Fn(&ParserContext, &mut Parser) -> Result<T, ()>>(f: F, s: &str) -> Result<T, ()> {
|
||||||
|
let url = ::servo_url::ServoUrl::parse("http://localhost").unwrap();
|
||||||
|
let context = ParserContext::new(Origin::Author, &url, Box::new(CSSErrorReporterTest));
|
||||||
let mut parser = Parser::new(s);
|
let mut parser = Parser::new(s);
|
||||||
f(&mut parser)
|
f(&context, &mut parser)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// This is a macro so that the file/line information
|
// This is a macro so that the file/line information
|
||||||
// is preserved in the panic
|
// is preserved in the panic
|
||||||
macro_rules! assert_roundtrip {
|
|
||||||
($fun:expr, $string:expr) => {
|
|
||||||
assert_roundtrip!($fun, $string, $string);
|
|
||||||
};
|
|
||||||
($fun:expr, $input:expr, $output:expr) => {
|
|
||||||
let parsed = $crate::parsing::parse($fun, $input)
|
|
||||||
.expect(&format!("Failed to parse {}", $input));
|
|
||||||
let serialized = ToCss::to_css_string(&parsed);
|
|
||||||
assert_eq!(serialized, $output);
|
|
||||||
|
|
||||||
let re_parsed = $crate::parsing::parse($fun, &serialized)
|
|
||||||
.expect(&format!("Failed to parse serialization {}", $input));
|
|
||||||
let re_serialized = ToCss::to_css_string(&re_parsed);
|
|
||||||
assert_eq!(serialized, re_serialized);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! assert_roundtrip_with_context {
|
macro_rules! assert_roundtrip_with_context {
|
||||||
($fun:expr, $string:expr) => {
|
($fun:expr, $string:expr) => {
|
||||||
assert_roundtrip_with_context!($fun, $string, $string);
|
assert_roundtrip_with_context!($fun, $string, $string);
|
||||||
|
@ -46,13 +33,12 @@ macro_rules! assert_roundtrip_with_context {
|
||||||
|
|
||||||
let mut parser = Parser::new(&serialized);
|
let mut parser = Parser::new(&serialized);
|
||||||
let re_parsed = $fun(&context, &mut parser)
|
let re_parsed = $fun(&context, &mut parser)
|
||||||
.expect(&format!("Failed to parse {}", $input));
|
.expect(&format!("Failed to parse serialization {}", $input));
|
||||||
let re_serialized = ToCss::to_css_string(&re_parsed);
|
let re_serialized = ToCss::to_css_string(&re_parsed);
|
||||||
assert_eq!(serialized, re_serialized);
|
assert_eq!(serialized, re_serialized);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
macro_rules! parse_longhand {
|
macro_rules! parse_longhand {
|
||||||
($name:ident, $s:expr) => {{
|
($name:ident, $s:expr) => {{
|
||||||
let url = ::servo_url::ServoUrl::parse("http://localhost").unwrap();
|
let url = ::servo_url::ServoUrl::parse("http://localhost").unwrap();
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use cssparser::Parser;
|
||||||
|
use media_queries::CSSErrorReporterTest;
|
||||||
use parsing::parse;
|
use parsing::parse;
|
||||||
use style::parser::Parse;
|
use style::parser::{Parse, ParserContext};
|
||||||
|
use style::stylesheets::Origin;
|
||||||
use style::values::specified::position::*;
|
use style::values::specified::position::*;
|
||||||
use style_traits::ToCss;
|
use style_traits::ToCss;
|
||||||
|
|
||||||
|
@ -12,38 +15,38 @@ fn test_position() {
|
||||||
// Serialization is not actually specced
|
// Serialization is not actually specced
|
||||||
// though these are the values expected by basic-shape
|
// though these are the values expected by basic-shape
|
||||||
// https://github.com/w3c/csswg-drafts/issues/368
|
// https://github.com/w3c/csswg-drafts/issues/368
|
||||||
assert_roundtrip!(Position::parse, "center", "center center");
|
assert_roundtrip_with_context!(Position::parse, "center", "center center");
|
||||||
assert_roundtrip!(Position::parse, "top left", "left top");
|
assert_roundtrip_with_context!(Position::parse, "top left", "left top");
|
||||||
assert_roundtrip!(Position::parse, "left top", "left top");
|
assert_roundtrip_with_context!(Position::parse, "left top", "left top");
|
||||||
assert_roundtrip!(Position::parse, "top right", "right top");
|
assert_roundtrip_with_context!(Position::parse, "top right", "right top");
|
||||||
assert_roundtrip!(Position::parse, "right top", "right top");
|
assert_roundtrip_with_context!(Position::parse, "right top", "right top");
|
||||||
assert_roundtrip!(Position::parse, "bottom left", "left bottom");
|
assert_roundtrip_with_context!(Position::parse, "bottom left", "left bottom");
|
||||||
assert_roundtrip!(Position::parse, "left bottom", "left bottom");
|
assert_roundtrip_with_context!(Position::parse, "left bottom", "left bottom");
|
||||||
assert_roundtrip!(Position::parse, "left center", "left center");
|
assert_roundtrip_with_context!(Position::parse, "left center", "left center");
|
||||||
assert_roundtrip!(Position::parse, "right center", "right center");
|
assert_roundtrip_with_context!(Position::parse, "right center", "right center");
|
||||||
assert_roundtrip!(Position::parse, "center top", "center top");
|
assert_roundtrip_with_context!(Position::parse, "center top", "center top");
|
||||||
assert_roundtrip!(Position::parse, "center bottom", "center bottom");
|
assert_roundtrip_with_context!(Position::parse, "center bottom", "center bottom");
|
||||||
assert_roundtrip!(Position::parse, "center 10px", "center 10px");
|
assert_roundtrip_with_context!(Position::parse, "center 10px", "center 10px");
|
||||||
assert_roundtrip!(Position::parse, "center 10%", "center 10%");
|
assert_roundtrip_with_context!(Position::parse, "center 10%", "center 10%");
|
||||||
assert_roundtrip!(Position::parse, "right 10%", "right 10%");
|
assert_roundtrip_with_context!(Position::parse, "right 10%", "right 10%");
|
||||||
|
|
||||||
// Only keywords can be reordered
|
// Only keywords can be reordered
|
||||||
assert!(parse(Position::parse, "top 40%").is_err());
|
assert!(parse(Position::parse, "top 40%").is_err());
|
||||||
assert!(parse(Position::parse, "40% left").is_err());
|
assert!(parse(Position::parse, "40% left").is_err());
|
||||||
|
|
||||||
// 3 and 4 value serialization
|
// 3 and 4 value serialization
|
||||||
assert_roundtrip!(Position::parse, "left 10px top 15px", "left 10px top 15px");
|
assert_roundtrip_with_context!(Position::parse, "left 10px top 15px", "left 10px top 15px");
|
||||||
assert_roundtrip!(Position::parse, "top 15px left 10px", "left 10px top 15px");
|
assert_roundtrip_with_context!(Position::parse, "top 15px left 10px", "left 10px top 15px");
|
||||||
assert_roundtrip!(Position::parse, "left 10% top 15px", "left 10% top 15px");
|
assert_roundtrip_with_context!(Position::parse, "left 10% top 15px", "left 10% top 15px");
|
||||||
assert_roundtrip!(Position::parse, "top 15px left 10%", "left 10% top 15px");
|
assert_roundtrip_with_context!(Position::parse, "top 15px left 10%", "left 10% top 15px");
|
||||||
assert_roundtrip!(Position::parse, "left top 15px", "left top 15px");
|
assert_roundtrip_with_context!(Position::parse, "left top 15px", "left top 15px");
|
||||||
assert_roundtrip!(Position::parse, "top 15px left", "left top 15px");
|
assert_roundtrip_with_context!(Position::parse, "top 15px left", "left top 15px");
|
||||||
assert_roundtrip!(Position::parse, "left 10px top", "left 10px top");
|
assert_roundtrip_with_context!(Position::parse, "left 10px top", "left 10px top");
|
||||||
assert_roundtrip!(Position::parse, "top left 10px", "left 10px top");
|
assert_roundtrip_with_context!(Position::parse, "top left 10px", "left 10px top");
|
||||||
assert_roundtrip!(Position::parse, "right 10px bottom", "right 10px bottom");
|
assert_roundtrip_with_context!(Position::parse, "right 10px bottom", "right 10px bottom");
|
||||||
assert_roundtrip!(Position::parse, "bottom right 10px", "right 10px bottom");
|
assert_roundtrip_with_context!(Position::parse, "bottom right 10px", "right 10px bottom");
|
||||||
assert_roundtrip!(Position::parse, "center right 10px", "right 10px center");
|
assert_roundtrip_with_context!(Position::parse, "center right 10px", "right 10px center");
|
||||||
assert_roundtrip!(Position::parse, "center bottom 10px", "center bottom 10px");
|
assert_roundtrip_with_context!(Position::parse, "center bottom 10px", "center bottom 10px");
|
||||||
|
|
||||||
// Only horizontal and vertical keywords can have positions
|
// Only horizontal and vertical keywords can have positions
|
||||||
assert!(parse(Position::parse, "center 10px left 15px").is_err());
|
assert!(parse(Position::parse, "center 10px left 15px").is_err());
|
||||||
|
|
|
@ -3,11 +3,13 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use cssparser::{Parser, ToCss};
|
use cssparser::{Parser, ToCss};
|
||||||
|
use media_queries::CSSErrorReporterTest;
|
||||||
use selectors::parser::SelectorList;
|
use selectors::parser::SelectorList;
|
||||||
|
use style::parser::ParserContext;
|
||||||
use style::selector_parser::{SelectorImpl, SelectorParser};
|
use style::selector_parser::{SelectorImpl, SelectorParser};
|
||||||
use style::stylesheets::{Origin, Namespaces};
|
use style::stylesheets::{Origin, Namespaces};
|
||||||
|
|
||||||
fn parse(input: &mut Parser) -> Result<SelectorList<SelectorImpl>, ()> {
|
fn parse(_context: &ParserContext, input: &mut Parser) -> Result<SelectorList<SelectorImpl>, ()> {
|
||||||
let mut ns = Namespaces::default();
|
let mut ns = Namespaces::default();
|
||||||
ns.prefixes.insert("svg".into(), ns!(svg));
|
ns.prefixes.insert("svg".into(), ns!(svg));
|
||||||
let parser = SelectorParser {
|
let parser = SelectorParser {
|
||||||
|
@ -19,8 +21,8 @@ fn parse(input: &mut Parser) -> Result<SelectorList<SelectorImpl>, ()> {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_selectors() {
|
fn test_selectors() {
|
||||||
assert_roundtrip!(parse, "div");
|
assert_roundtrip_with_context!(parse, "div");
|
||||||
assert_roundtrip!(parse, "svg|circle");
|
assert_roundtrip_with_context!(parse, "svg|circle");
|
||||||
assert_roundtrip!(parse, "p:before", "p::before");
|
assert_roundtrip_with_context!(parse, "p:before", "p::before");
|
||||||
assert_roundtrip!(parse, "[border = \"0\"]:-servo-nonzero-border ~ ::-servo-details-summary");
|
assert_roundtrip_with_context!(parse, "[border = \"0\"]:-servo-nonzero-border ~ ::-servo-details-summary");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue