2020-03-20 10:59:16 -04:00
|
|
|
#[macro_use]
|
|
|
|
mod macros;
|
|
|
|
|
|
|
|
test!(
|
|
|
|
length_of_list_as_var,
|
|
|
|
"$a: 1 2 3 4 5;a {\n color: length($a);\n}\n",
|
|
|
|
"a {\n color: 5;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
length_of_list,
|
|
|
|
"a {\n color: length(1 2 3 4 5);\n}\n",
|
|
|
|
"a {\n color: 5;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
length_of_comma_list,
|
|
|
|
"a {\n color: length((1, 2, 3, 4, 5));\n}\n",
|
|
|
|
"a {\n color: 5;\n}\n"
|
|
|
|
);
|
2020-03-20 12:09:08 -04:00
|
|
|
test!(
|
|
|
|
nth_space_separated,
|
|
|
|
"a {\n color: nth(a b c, 1);\n}\n",
|
|
|
|
"a {\n color: a;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
nth_negative_index,
|
|
|
|
"a {\n color: nth(a b c, -2);\n}\n",
|
|
|
|
"a {\n color: b;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
nth_comma_separated,
|
|
|
|
"a {\n color: nth((a, b, c), 3);\n}\n",
|
|
|
|
"a {\n color: c;\n}\n"
|
|
|
|
);
|
2020-03-20 12:36:31 -04:00
|
|
|
test!(
|
|
|
|
nth_non_list,
|
|
|
|
"a {\n color: nth(foo, 1);\n}\n",
|
|
|
|
"a {\n color: foo;\n}\n"
|
|
|
|
);
|
2020-04-02 15:22:18 -04:00
|
|
|
test!(
|
|
|
|
nth_map,
|
|
|
|
"a {\n color: nth((c: d, e: f, g: h), 2);\n}\n",
|
|
|
|
"a {\n color: e f;\n}\n"
|
|
|
|
);
|
2020-03-20 12:32:33 -04:00
|
|
|
test!(
|
|
|
|
list_separator_space_separated,
|
|
|
|
"a {\n color: list-separator(a b c);\n}\n",
|
|
|
|
"a {\n color: space;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
list_separator_foo,
|
|
|
|
"a {\n color: list-separator(foo);\n}\n",
|
|
|
|
"a {\n color: space;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
list_separator_comma_separated,
|
|
|
|
"a {\n color: list-separator((a, b, c));\n}\n",
|
|
|
|
"a {\n color: comma;\n}\n"
|
|
|
|
);
|
2020-04-01 15:32:52 -04:00
|
|
|
test!(
|
|
|
|
list_separator_comma_separated_with_space,
|
|
|
|
"a {\n color: list-separator(((a b, c d)));\n}\n",
|
|
|
|
"a {\n color: comma;\n}\n"
|
|
|
|
);
|
2020-08-17 03:39:33 -04:00
|
|
|
test!(
|
|
|
|
list_separator_map,
|
|
|
|
"a {\n color: list-separator((a: b, c: d));\n}\n",
|
|
|
|
"a {\n color: comma;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
list_separator_arglist,
|
|
|
|
"@mixin foo($arg...) {
|
|
|
|
color: list-separator($arg);
|
|
|
|
}
|
|
|
|
|
|
|
|
a {
|
|
|
|
@include foo(1, 2, 3);
|
|
|
|
}",
|
|
|
|
"a {\n color: comma;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
list_separator_empty,
|
|
|
|
"a {\n color: list-separator(());\n}\n",
|
|
|
|
"a {\n color: space;\n}\n"
|
|
|
|
);
|
2020-03-20 19:27:26 -04:00
|
|
|
test!(
|
|
|
|
set_nth_named_args,
|
|
|
|
"a {\n color: set-nth($list: 1 2 3, $n: 2, $value: foo);\n}\n",
|
|
|
|
"a {\n color: 1 foo 3;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
set_nth_non_list,
|
|
|
|
"a {\n color: set-nth(c, 1, e);\n}\n",
|
|
|
|
"a {\n color: e;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
set_nth_2_long,
|
|
|
|
"a {\n color: set-nth(c d, 1, e);\n}\n",
|
|
|
|
"a {\n color: e d;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
set_nth_comma_separated,
|
|
|
|
"a {\n color: set-nth((a, b, c), 1, e);\n}\n",
|
|
|
|
"a {\n color: e, b, c;\n}\n"
|
|
|
|
);
|
2020-04-02 15:31:59 -04:00
|
|
|
test!(
|
|
|
|
set_nth_bracketed,
|
|
|
|
"a {\n color: set-nth([a, b, c], 1, e);\n}\n",
|
|
|
|
"a {\n color: [e, b, c];\n}\n"
|
|
|
|
);
|
2020-04-02 15:28:35 -04:00
|
|
|
test!(
|
|
|
|
set_nth_map,
|
|
|
|
"a {\n color: set-nth((c: d, e: f, g: h), 2, i);\n}\n",
|
|
|
|
"a {\n color: c d, i, g h;\n}\n"
|
|
|
|
);
|
2020-08-16 20:33:53 -04:00
|
|
|
test!(
|
|
|
|
set_nth_arglist,
|
|
|
|
"@mixin foo($args...) {
|
|
|
|
color: set-nth($args, 2, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
a {
|
|
|
|
@include foo(1, 2, 3, 4);
|
|
|
|
}",
|
|
|
|
"a {\n color: 1, 0, 3, 4;\n}\n"
|
|
|
|
);
|
2020-03-20 19:50:23 -04:00
|
|
|
test!(
|
|
|
|
append_space_separated,
|
|
|
|
"a {\n color: append(a b, c);\n}\n",
|
|
|
|
"a {\n color: a b c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
append_comma_separated,
|
|
|
|
"a {\n color: append((a, b), c);\n}\n",
|
|
|
|
"a {\n color: a, b, c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
append_list,
|
|
|
|
"a {\n color: append(a b, c d);\n}\n",
|
|
|
|
"a {\n color: a b c d;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
append_list_separator_comma,
|
|
|
|
"a {\n color: append(a, b, comma);\n}\n",
|
|
|
|
"a {\n color: a, b;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
append_list_separator_space,
|
|
|
|
"a {\n color: append((a, b), c, space);\n}\n",
|
|
|
|
"a {\n color: a b c;\n}\n"
|
|
|
|
);
|
2020-03-20 20:01:57 -04:00
|
|
|
test!(
|
|
|
|
append_empty,
|
|
|
|
"a {\n color: append((), a);\n}\n",
|
|
|
|
"a {\n color: a;\n}\n"
|
|
|
|
);
|
2020-04-02 15:12:13 -04:00
|
|
|
test!(
|
|
|
|
append_bracketed,
|
|
|
|
"a {\n color: append([], 1);\n}\n",
|
|
|
|
"a {\n color: [1];\n}\n"
|
|
|
|
);
|
|
|
|
error!(
|
|
|
|
append_non_string_separator,
|
|
|
|
"a {b: append(c, d, $separator: 1);}", "Error: $separator: 1 is not a string."
|
|
|
|
);
|
2020-03-22 14:04:16 -04:00
|
|
|
test!(
|
|
|
|
join_space_separated,
|
|
|
|
"a {\n color: join(a b, c d);\n}\n",
|
|
|
|
"a {\n color: a b c d;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_comma_separated,
|
|
|
|
"a {\n color: join((a, b), (c, d));\n}\n",
|
|
|
|
"a {\n color: a, b, c, d;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_non_list,
|
|
|
|
"a {\n color: join(a, b);\n}\n",
|
|
|
|
"a {\n color: a b;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_separator_comma,
|
|
|
|
"a {\n color: join(a, b, comma);\n}\n",
|
|
|
|
"a {\n color: a, b;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_separator_space,
|
|
|
|
"a {\n color: join((a, b), (c, d), space);\n}\n",
|
|
|
|
"a {\n color: a b c d;\n}\n"
|
|
|
|
);
|
2020-03-23 19:56:24 -04:00
|
|
|
test!(
|
2020-04-02 17:44:37 -04:00
|
|
|
join_first_bracketed,
|
2020-03-23 19:56:24 -04:00
|
|
|
"a {\n color: join([a], b);\n}\n",
|
|
|
|
"a {\n color: [a b];\n}\n"
|
|
|
|
);
|
2020-04-02 17:44:37 -04:00
|
|
|
test!(
|
|
|
|
join_second_bracketed,
|
|
|
|
"a {\n color: join(a, [b]);\n}\n",
|
|
|
|
"a {\n color: a b;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_space_comma,
|
|
|
|
"a {\n color: join(a b, (c,));\n}\n",
|
|
|
|
"a {\n color: a b c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_comma_space,
|
|
|
|
"a {\n color: join((a, b), (c));\n}\n",
|
|
|
|
"a {\n color: a, b, c;\n}\n"
|
|
|
|
);
|
2020-04-02 18:04:44 -04:00
|
|
|
test!(
|
|
|
|
join_bracketed_null,
|
|
|
|
"a {\n color: join([a b], c, $bracketed: null);\n}\n",
|
|
|
|
"a {\n color: a b c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_bracketed_false,
|
|
|
|
"a {\n color: join([a b], c, $bracketed: false);\n}\n",
|
|
|
|
"a {\n color: a b c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_bracketed_auto_brackets,
|
|
|
|
"a {\n color: join([a b], c, $bracketed: auto);\n}\n",
|
|
|
|
"a {\n color: [a b c];\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_bracketed_auto_none,
|
|
|
|
"a {\n color: join(a b, c, $bracketed: auto);\n}\n",
|
|
|
|
"a {\n color: a b c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
join_bracketed_random_string,
|
|
|
|
"a {\n color: join(a b, c, $bracketed: afhsihsdhsdkhsd);\n}\n",
|
|
|
|
"a {\n color: [a b c];\n}\n"
|
|
|
|
);
|
2020-04-02 18:16:59 -04:00
|
|
|
test!(
|
|
|
|
join_empty_first_takes_second_list_separator,
|
|
|
|
"a {\n color: join((), (a, b, c));\n}\n",
|
|
|
|
"a {\n color: a, b, c;\n}\n"
|
|
|
|
);
|
2020-04-02 18:19:54 -04:00
|
|
|
test!(
|
|
|
|
join_single_comma_both,
|
|
|
|
"a {\n color: join((a,), (b,));\n}\n",
|
|
|
|
"a {\n color: a, b;\n}\n"
|
|
|
|
);
|
2020-04-02 18:23:57 -04:00
|
|
|
test!(
|
|
|
|
join_two_maps,
|
|
|
|
"a {\n color: join((c: d, e: f), (g: h, i: j));\n}\n",
|
|
|
|
"a {\n color: c d, e f, g h, i j;\n}\n"
|
|
|
|
);
|
2020-04-02 18:32:09 -04:00
|
|
|
test!(
|
|
|
|
join_non_list_first_takes_separator_of_second,
|
|
|
|
"a {\n color: join(c, (d, e));\n}\n",
|
|
|
|
"a {\n color: c, d, e;\n}\n"
|
|
|
|
);
|
2020-04-02 18:43:48 -04:00
|
|
|
test!(
|
|
|
|
join_single_bracketed_first_takes_separator_of_second,
|
|
|
|
"a {\n color: join([a], (b, ));\n}\n",
|
|
|
|
"a {\n color: [a, b];\n}\n"
|
|
|
|
);
|
2020-03-23 19:56:24 -04:00
|
|
|
test!(bracketed_ident, "a {\n color: [a];\n}\n");
|
|
|
|
test!(bracketed_space_list, "a {\n color: [a b];\n}\n");
|
|
|
|
test!(bracketed_comma_list, "a {\n color: [a, b];\n}\n");
|
|
|
|
test!(bracketed_as_space_list, "a {\n color: [a b] c;\n}\n");
|
2020-03-24 00:17:18 -04:00
|
|
|
test!(
|
|
|
|
trailing_comma_bare,
|
|
|
|
"a {\n color: 1,;\n}\n",
|
|
|
|
"a {\n color: 1;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
trailing_comma_paren,
|
|
|
|
"a {\n color: (1,);\n}\n",
|
|
|
|
"a {\n color: 1;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
trailing_comma_bracket,
|
|
|
|
"a {\n color: [1,];\n}\n",
|
|
|
|
"a {\n color: [1];\n}\n"
|
|
|
|
);
|
2020-03-31 00:27:00 -04:00
|
|
|
test!(
|
|
|
|
null_values_in_list_ommitted,
|
2020-05-16 22:46:13 -04:00
|
|
|
"a {\n color: 1, null, null;\n}\n",
|
2020-03-31 00:27:00 -04:00
|
|
|
"a {\n color: 1;\n}\n"
|
|
|
|
);
|
2020-03-31 15:45:39 -04:00
|
|
|
test!(
|
|
|
|
removes_paren_around_space_list,
|
|
|
|
"a {\n color: (foo bar);\n}\n",
|
|
|
|
"a {\n color: foo bar;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
removes_paren_around_item_in_list,
|
|
|
|
"a {\n color: 1 (foo bar);\n}\n",
|
|
|
|
"a {\n color: 1 foo bar;\n}\n"
|
2020-03-31 22:00:38 -04:00
|
|
|
);
|
2020-04-01 15:32:52 -04:00
|
|
|
test!(
|
|
|
|
long_space_separated_list,
|
|
|
|
"a {\n color: a b c d e f g h i j k l m n o p q r s t u v w x y z;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
long_comma_separated_list,
|
|
|
|
"a {\n color: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
deeply_nested_square_braces,
|
|
|
|
"a {\n color: [[[[[[a]]]]]];\n}\n"
|
|
|
|
);
|
2020-04-02 14:22:38 -04:00
|
|
|
test!(
|
|
|
|
index_found_space_separated,
|
|
|
|
"a {\n color: index(1px solid red, solid);\n}\n",
|
|
|
|
"a {\n color: 2;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
index_not_found_space_separated,
|
|
|
|
"a {\n color: index(1px solid red, dashed);\n}\n",
|
|
|
|
""
|
|
|
|
);
|
2020-04-03 13:43:34 -04:00
|
|
|
test!(
|
|
|
|
index_found_map,
|
|
|
|
"a {\n color: index((width: 10px, height: 20px), (height 20px));\n}\n",
|
|
|
|
"a {\n color: 2;\n}\n"
|
|
|
|
);
|
2020-04-03 14:34:59 -04:00
|
|
|
test!(
|
|
|
|
index_unit_conversions,
|
|
|
|
"a {\n color: index(1px 1in 1cm, 96px);\n}\n",
|
|
|
|
"a {\n color: 2;\n}\n"
|
|
|
|
);
|
2020-04-03 15:54:59 -04:00
|
|
|
test!(
|
|
|
|
zip_three,
|
|
|
|
"a {\n color: zip(1px 1px 3px, solid dashed solid, red green blue);\n}\n",
|
|
|
|
"a {\n color: 1px solid red, 1px dashed green, 3px solid blue;\n}\n"
|
|
|
|
);
|
2020-04-13 12:28:40 -04:00
|
|
|
test!(
|
|
|
|
zip_parens,
|
|
|
|
"a {\n color: zip((a, b, c));\n}\n",
|
|
|
|
"a {\n color: a, b, c;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
zip_parens_length,
|
|
|
|
"a {\n color: length(zip((a, b, c)));\n}\n",
|
|
|
|
"a {\n color: 3;\n}\n"
|
|
|
|
);
|
2020-04-26 16:39:44 -04:00
|
|
|
test!(empty_bracketed_list, "a {\n empty: [];\n}\n");
|
2020-07-03 23:49:31 -04:00
|
|
|
test!(
|
|
|
|
empty_bracketed_list_equality,
|
|
|
|
"a {\n color: []==[];\n}\n",
|
|
|
|
"a {\n color: true;\n}\n"
|
|
|
|
);
|
|
|
|
test!(
|
|
|
|
empty_bracketed_list_whitespace,
|
|
|
|
"a {\n color: [ /**/ ];\n}\n",
|
|
|
|
"a {\n color: [];\n}\n"
|
|
|
|
);
|
2020-06-18 01:08:30 -04:00
|
|
|
error!(
|
|
|
|
invalid_item_in_space_separated_list,
|
|
|
|
"a {\n color: red color * #abc;\n}\n", "Error: Undefined operation \"color * #abc\"."
|
|
|
|
);
|
|
|
|
error!(
|
|
|
|
invalid_item_in_comma_separated_list,
|
|
|
|
"a {\n color: red, color * #abc;\n}\n", "Error: Undefined operation \"color * #abc\"."
|
|
|
|
);
|
|
|
|
error!(
|
|
|
|
invalid_item_in_space_separated_list_inside_interpolation,
|
|
|
|
"a {\n color: #{red color * #abc};\n}\n", "Error: Undefined operation \"color * #abc\"."
|
|
|
|
);
|
|
|
|
error!(
|
|
|
|
invalid_item_in_comma_separated_list_inside_interpolation,
|
|
|
|
"a {\n color: #{red, color * #abc};\n}\n", "Error: Undefined operation \"color * #abc\"."
|
|
|
|
);
|
2020-08-15 20:07:27 -04:00
|
|
|
error!(
|
|
|
|
nth_invalid_index_message_contains_unit,
|
|
|
|
"a {\n color: nth([], 1px);\n}\n", "Error: $n: Invalid index 1px for a list with 0 elements."
|
|
|
|
);
|
|
|
|
error!(
|
|
|
|
set_nth_invalid_index_message_contains_unit,
|
|
|
|
"a {\n color: set-nth([], 1px, a);\n}\n",
|
|
|
|
"Error: $n: Invalid index 1px for a list with 0 elements."
|
|
|
|
);
|