#[macro_use] mod macros; test!( basic_unknown_at_rule, "@foo {\n a {\n color: red;\n }\n}\n", "@foo {\n a {\n color: red;\n }\n}\n" ); test!( unknown_at_rule_no_selector, "@foo {\n color: red;\n}\n", "@foo {\n color: red;\n}\n" ); test!(unknown_at_rule_no_body, "@foo;\n", "@foo;\n"); test!(unknown_at_rule_empty_body, "@foo {}\n", "@foo {}\n"); test!(unknown_at_rule_no_body_eof, "@foo", "@foo;\n"); test!( unknown_at_rule_interpolated_eof_no_body, "@#{()if(0,0<0,0)}", "@false;\n" ); test!(nothing_after_hash, "@foo #", "@foo #;\n"); test!( style_following, "@foo (a: b) { a { color: red; } } a { color: green; }", "@foo (a: b) {\n a {\n color: red;\n }\n}\na {\n color: green;\n}\n" ); test!( no_semicolon_no_params_no_body, "a { @b } a { color: red; }", "a {\n @b;\n}\n\na {\n color: red;\n}\n" ); test!( no_semicolon_has_params_no_body, "a { @foo bar } a { color: red; }", "a {\n @foo bar;\n}\n\na {\n color: red;\n}\n" ); test!( no_body_remains_inside_style_rule, "a { @box-shadow: $btn-focus-box-shadow, $btn-active-box-shadow; } a { color: red; }", "a {\n @box-shadow : $btn-focus-box-shadow, $btn-active-box-shadow;\n}\n\na {\n color: red;\n}\n" ); test!( empty_body_moves_outside_style_rule, "a { @b {} } a { color: red; }", "@b {}\n\na {\n color: red;\n}\n" ); test!( parent_selector_moves_inside_rule, "a { @foo { b: c } }", "@foo {\n a {\n b: c;\n }\n}\n" ); test!( parent_selector_moves_inside_rule_and_is_parent_to_inner_selector, "a { @foo { f { b: c } } }", "@foo {\n a f {\n b: c;\n }\n}\n" ); test!( params_contain_silent_comment_and_semicolon, "a { @box-shadow: $btn-focus-box-shadow, // $btn-active-box-shadow; }", "a {\n @box-shadow : $btn-focus-box-shadow, // $btn-active-box-shadow;;\n}\n" ); test!(contains_multiline_comment, "@foo /**/;\n", "@foo;\n"); error!( unknown_at_rule_inside_declaration_body, "@mixin foo { @foo; } a { color: { @include foo; } }", "Error: At-rules may not be used within nested declarations." ); // todo: test scoping in rule