blob: 56f40b8046d0219dd584bdfb4a10d4673e736a89 [file] [log] [blame] [edit]
use super::*;
#[test]
fn test_comments_in_rules() {
let text = r#"
rule a {}
rule b, c
// a line comment
{}
rule d
// another line comment
e {}
rule f/* a multiline
comment*/{}
rule g/* another multiline
comment*/h
i {}
rule j/*commeeeeent
you like things like "{}" in there? :)
*/
end {}"#;
let against = r#"
rule a {}
rule b, c {}
rule d e {}
rule f {}
rule gh i {}
rule j end {}
"#;
let mut ret = Vec::new();
get_differences(&load_css_paths(against).unwrap(), &load_css_paths(text).unwrap(), &mut ret);
assert!(ret.is_empty());
}
#[test]
fn test_text() {
let text = r#"
a
/* sdfs
*/ b
c // sdf
d {}
"#;
let paths = load_css_paths(text).unwrap();
assert!(paths.contains_key(&"a b c d".to_owned()));
}
#[test]
fn test_comparison() {
let origin = r#"
@a {
b {}
c {}
}
"#;
let against = r#"
@a {
b {}
}
"#;
let origin = load_css_paths(origin).unwrap();
let against = load_css_paths(against).unwrap();
let mut ret = Vec::new();
get_differences(&against, &origin, &mut ret);
assert!(ret.is_empty());
get_differences(&origin, &against, &mut ret);
assert_eq!(ret, vec![" Missing rule `c`".to_owned()]);
}
#[test]
fn check_empty_css() {
let paths = load_css_paths("").unwrap();
assert_eq!(paths.len(), 0);
}
#[test]
fn check_invalid_css() {
let paths = load_css_paths("*").unwrap();
assert_eq!(paths.len(), 0);
}
#[test]
fn test_with_minification() {
let text = include_str!("../html/static/css/noscript.css");
let minified = minifier::css::minify(&text).expect("CSS minification failed").to_string();
let against = load_css_paths(text).unwrap();
let other = load_css_paths(&minified).unwrap();
let mut ret = Vec::new();
get_differences(&against, &other, &mut ret);
assert!(ret.is_empty());
}
#[test]
fn test_media() {
let text = r#"
@media (min-width: 701px) {
a:hover {
color: #fff;
}
b {
x: y;
}
}
@media (max-width: 1001px) {
b {
x: y;
}
}
"#;
let paths = load_css_paths(text).unwrap();
let p = paths.get("@media (min-width:701px)");
assert!(p.is_some());
let p = p.unwrap();
assert!(p.children.get("a:hover").is_some());
assert!(p.children.get("b").is_some());
let p = paths.get("@media (max-width:1001px)");
assert!(p.is_some());
let p = p.unwrap();
assert!(p.children.get("b").is_some());
}
#[test]
fn test_css_variables() {
let x = r#"
:root {
--a: #fff;
}
"#;
let y = r#"
:root {
--a: #fff;
--b: #fff;
}
"#;
let against = load_css_paths(x).unwrap();
let other = load_css_paths(y).unwrap();
let mut ret = Vec::new();
get_differences(&against, &other, &mut ret);
assert!(ret.is_empty());
get_differences(&other, &against, &mut ret);
assert_eq!(ret, vec![" Missing CSS variable `--b` in `:root`".to_owned()]);
}
#[test]
fn test_weird_rule_value() {
let x = r#"
a[text=("a")] {
b: url({;}.png);
c: #fff
}
"#;
let paths = load_css_paths(&x).unwrap();
let p = paths.get("a[text=(\"a\")]");
assert!(p.is_some());
let p = p.unwrap();
assert_eq!(p.rules.get("b"), Some(&"url({;}.png)".to_owned()));
assert_eq!(p.rules.get("c"), Some(&"#fff".to_owned()));
}