selectors.rs (1240B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ 4 5 use cssparser::{Parser, ParserInput, ToCss}; 6 use selectors::parser::SelectorList; 7 use style::selector_parser::{SelectorImpl, SelectorParser}; 8 use style::stylesheets::{Namespaces, Origin}; 9 use style_traits::ParseError; 10 11 fn parse_selector<'i, 't>( 12 input: &mut Parser<'i, 't>, 13 ) -> Result<SelectorList<SelectorImpl>, ParseError<'i>> { 14 let mut ns = Namespaces::default(); 15 ns.prefixes.insert("svg".into(), ns!(svg)); 16 let parser = SelectorParser { 17 stylesheet_origin: Origin::UserAgent, 18 namespaces: &ns, 19 url_data: None, 20 }; 21 SelectorList::parse(&parser, input) 22 } 23 24 #[test] 25 fn test_selectors() { 26 assert_roundtrip!(parse_selector, "div"); 27 assert_roundtrip!(parse_selector, "svg|circle"); 28 assert_roundtrip!(parse_selector, "p:before", "p::before"); 29 assert_roundtrip!( 30 parse_selector, 31 "[border=\"0\"]:-servo-nonzero-border ~ ::-servo-details-summary" 32 ); 33 assert_roundtrip!(parse_selector, "* > *"); 34 assert_roundtrip!(parse_selector, "*|* + *", "* + *"); 35 }