grass/tests/if.rs

152 lines
4.3 KiB
Rust
Raw Normal View History

2020-03-22 02:18:15 -04:00
#![cfg(test)]
#[macro_use]
mod macros;
test!(
if_toplevel_true,
"@if true {\n a {\n color: foo;\n}\n}\n",
"a {\n color: foo;\n}\n"
);
2020-03-29 13:28:17 -04:00
test!(
if_inner_true,
"a {\n @if true {\n color: foo;\n}\n}\n",
"a {\n color: foo;\n}\n"
);
test!(
if_toplevel_false,
"@if false {\n a {\n color: foo;\n}\n}\n",
""
);
test!(
if_inner_false,
"a {\n @if false {\n color: foo;\n}\n}\n",
""
);
test!(
if_else_toplevel_true,
"@if true {\n a {\n color: foo;\n}\n} @else {\n b {\n color: bar;\n}\n}\n",
"a {\n color: foo;\n}\n"
);
test!(
if_else_inner_true,
"a {\n @if true {\n color: foo;\n} @else {\n color: bar;\n}\n}\n",
"a {\n color: foo;\n}\n"
);
test!(
if_else_toplevel_false,
"@if false {\n a {\n color: foo;\n}\n} @else {\n a {\n color: bar;\n}\n}\n",
"a {\n color: bar;\n}\n"
);
test!(
if_else_inner_false,
"a {\n @if false {\n color: foo;\n} @else {\n color: bar;\n}\n}\n",
"a {\n color: bar;\n}\n"
);
error!(
no_brace_after_else,
"@if false {} @else -}", "Error: expected \"{\"."
);
test!(
if_else_if_no_else,
"a {\n @if false {\n color: red;\n} @else if true {\n color: blue;\n}\n}\n",
"a {\n color: blue;\n}\n"
);
test!(
if_false_else_if_false_else,
"a {\n @if false {\n color: red;\n} @else if false {\n color: blue;\n} @else {\n color: green;\n}\n}\n",
"a {\n color: green;\n}\n"
);
test!(
if_false_else_if_true_else,
"a {\n @if false {\n color: red;\n} @else if true {\n color: blue;\n} @else {\n color: green;\n}\n}\n",
"a {\n color: blue;\n}\n"
);
test!(
if_inner_style_missing_semicolon,
"a {\n @if true {\n color: red\n }\n}\n",
"a {\n color: red;\n}\n"
);
test!(
atrule_other_than_else_immediately_following,
"a {\n @if true {\n b {\n background: gray;\n }\n }\n\n @if true {\n b {\n background: gray;\n }\n }\n}\n",
"a b {\n background: gray;\n}\na b {\n background: gray;\n}\n"
);
2020-04-22 11:37:20 -04:00
test!(
nested_if_in_function,
"@function foo($value) {\n @if true {\n @if false {\n @error foo;\n }\n\n @else {\n @return $value;\n }\n }\n}
a { color: foo(bar); }",
"a {\n color: bar;\n}\n"
);
test!(
multiline_comments_surrounding_condition_empty,
"@if/**/true/**/{ a { color: red; } }",
"a {\n color: red;\n}\n"
);
test!(
multiline_comments_surrounding_condition,
"@if/* pre 1 */true/* post 1 */{ a { color: red; } }",
"a {\n color: red;\n}\n"
);
test!(
escaped_if,
"@\\69 f true {\n a {\n color: red;\n }\n}\n",
"a {\n color: red;\n}\n"
);
2020-05-22 21:56:19 -04:00
test!(
uppercase_escaped_if,
"@\\49 f true {\n a {\n color: red;\n }\n}\n",
2020-06-01 21:35:23 -04:00
"@If true {\n a {\n color: red;\n }\n}\n"
2020-05-22 21:56:19 -04:00
);
test!(
escaped_else,
"@if false {}\n\n@\\65lse {\n a {\n color: red;\n }\n}\n",
"a {\n color: red;\n}\n"
);
2020-05-22 21:56:19 -04:00
test!(
uppercase_escaped_else,
"@if false {}\n\n@\\45lse {\n a {\n color: red;\n }\n}\n",
2020-06-01 21:44:07 -04:00
"@Else {\n a {\n color: red;\n }\n}\n"
);
test!(
uppercase_else,
"@if false {}\n\n@Else {\n a {\n color: red;\n }\n}\n",
"@Else {\n a {\n color: red;\n }\n}\n"
2020-05-22 21:56:19 -04:00
);
2020-06-01 21:35:23 -04:00
test!(uppercase_if, "@If true {\n a {\n color: red;\n }\n}\n");
2020-05-23 14:08:40 -04:00
error!(nothing_after_if, "@if", "Error: Expected expression.");
2020-05-24 08:56:53 -04:00
error!(
nothing_after_dollar,
"@if ${}", "Error: Expected identifier."
);
2020-05-23 14:08:40 -04:00
error!(no_condition, "@if{}", "Error: Expected expression.");
2020-05-23 12:48:34 -04:00
error!(
nothing_after_open_curly,
2020-05-23 14:08:40 -04:00
"@if foo {", "Error: expected \"}\"."
2020-05-23 12:48:34 -04:00
);
2020-05-23 13:39:47 -04:00
error!(
2020-06-08 00:01:14 -04:00
first_condition_error,
2020-05-23 14:08:40 -04:00
"@if 1 + 1 =s {\n}", "Error: expected \"=\"."
2020-05-23 13:39:47 -04:00
);
2020-06-08 00:01:14 -04:00
test!(
conditions_evaluated_lazily,
"$p: null;
@if $p==null {}
@else if not comparable($p, 0) {}",
""
);
2020-06-16 20:32:26 -04:00
test!(
at_rule_inside_ruleset,
"@mixin foo {\n color: red;\n}\n\n@if true {\n a {\n @include foo;\n }\n}\n",
"a {\n color: red;\n}\n"
);
error!(
nothing_after_escape,
"@if \\", "Error: Expected expression."
);
2020-05-24 10:04:30 -04:00
error!(unclosed_dbl_quote, "@if true \" {}", "Error: Expected \".");
error!(unclosed_sgl_quote, "@if true ' {}", "Error: Expected '.");
2020-05-24 10:16:47 -04:00
error!(unclosed_call_args, "@if a({}", "Error: expected \")\".");
2020-05-24 10:47:11 -04:00
error!(nothing_after_div, "@if a/", "Error: Expected expression.");
error!(multiline_error, "@if \"\n\"{}", "Error: Expected \".");