Skip to content

Commit fe57a82

Browse files
author
Thomaz Leite
committed
Rewrite IO.ANSI tests to match new behavior
1 parent c42fe88 commit fe57a82

File tree

1 file changed

+48
-30
lines changed

1 file changed

+48
-30
lines changed

lib/elixir/test/elixir/io/ansi_test.exs

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,70 @@ Code.require_file "../test_helper.exs", __DIR__
33
defmodule IO.ANSITest do
44
use ExUnit.Case, async: true
55

6-
test :escape_single do
7-
assert IO.ANSI.escape("Hello, %{red}world!", true) ==
8-
"Hello, #{IO.ANSI.red}world!#{IO.ANSI.reset}"
9-
assert IO.ANSI.escape("Hello, %{red}world!", true) ==
10-
"Hello, #{IO.ANSI.red}world!#{IO.ANSI.reset}"
6+
test :escape_ansicode do
7+
assert IO.ANSI.escape(:green, true) ==
8+
"#{IO.ANSI.green}#{IO.ANSI.reset}"
9+
assert IO.ANSI.escape(:green, false) ==
10+
""
11+
end
12+
13+
test :escape_binary do
14+
assert IO.ANSI.escape("Hello, world!", true) ==
15+
"Hello, world!"
16+
assert IO.ANSI.escape("This is a map: %{foo: :bar}", false) ==
17+
"This is a map: %{foo: :bar}"
18+
end
19+
20+
test :escape_empty_list do
21+
assert IO.ANSI.escape([], true) ==
22+
""
23+
assert IO.ANSI.escape([], false) ==
24+
""
1125
end
1226

13-
test :escape_non_attribute do
14-
assert IO.ANSI.escape("Hello %{clear}world!", true) ==
15-
"Hello #{IO.ANSI.clear}world!#{IO.ANSI.reset}"
16-
assert IO.ANSI.escape("Hello %{home}world!", true) ==
17-
"Hello #{IO.ANSI.home}world!#{IO.ANSI.reset}"
27+
test :escape_ansicode_list do
28+
assert IO.ANSI.escape([:red, :bright], true) ==
29+
"#{IO.ANSI.red}#{IO.ANSI.bright}#{IO.ANSI.reset}"
30+
assert IO.ANSI.escape([:red, :bright], false) ==
31+
""
1832
end
1933

20-
test :escape_multiple do
21-
assert IO.ANSI.escape("Hello, %{red,bright}world!", true) ==
22-
"Hello, #{IO.ANSI.red}#{IO.ANSI.bright}world!#{IO.ANSI.reset}"
23-
assert IO.ANSI.escape("Hello, %{red, bright}world!", true) ==
24-
"Hello, #{IO.ANSI.red}#{IO.ANSI.bright}world!#{IO.ANSI.reset}"
25-
assert IO.ANSI.escape("Hello, %{red , bright}world!", true) ==
26-
"Hello, #{IO.ANSI.red}#{IO.ANSI.bright}world!#{IO.ANSI.reset}"
34+
test :escape_binary_list do
35+
assert IO.ANSI.escape(["Hello, ", "world!"], true) ==
36+
"Hello, world!"
37+
assert IO.ANSI.escape(["Hello, ", "world!"], false) ==
38+
"Hello, world!"
2739
end
2840

29-
test :no_emit do
30-
assert IO.ANSI.escape("Hello, %{}world!", false) ==
41+
test :escape_char_list do
42+
assert IO.ANSI.escape('Hello, world!', true) ==
3143
"Hello, world!"
44+
assert IO.ANSI.escape('Hello, world!', false) ==
45+
"Hello, world!"
46+
end
3247

33-
assert IO.ANSI.escape("Hello, %{red,bright}world!", false) ==
48+
test :escape_mixed_list do
49+
assert IO.ANSI.escape(["Hello", ?,, 32, :red, "world!"], true) ==
50+
"Hello, #{IO.ANSI.red}world!#{IO.ANSI.reset}"
51+
assert IO.ANSI.escape(["Hello", ?,, 32, :red, "world!"], false) ==
3452
"Hello, world!"
3553
end
3654

37-
test :fragment do
38-
assert IO.ANSI.escape("%{red}", true) == "#{IO.ANSI.red}#{IO.ANSI.reset}"
39-
assert IO.ANSI.escape_fragment("", true) == ""
55+
test :escape_nested_list do
56+
assert IO.ANSI.escape(["Hello, ", ["nested", 32, :red, "world!"]], true) ==
57+
"Hello, nested #{IO.ANSI.red}world!#{IO.ANSI.reset}"
58+
assert IO.ANSI.escape(["Hello, ", ["nested", 32, :red, "world!"]], false) ==
59+
"Hello, nested world!"
4060
end
4161

42-
test :noop do
43-
assert IO.ANSI.escape("") == ""
62+
test :escape_fragment do
63+
assert IO.ANSI.escape_fragment([:red, "Hello!"], true) ==
64+
"#{IO.ANSI.red}Hello!"
4465
end
4566

46-
test :invalid do
47-
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
48-
IO.ANSI.escape("%{brigh}, yes")
49-
end
67+
test :invalid_sequence do
5068
assert_raise ArgumentError, "invalid ANSI sequence specification: brigh", fn ->
51-
IO.ANSI.escape("%{brigh,red}, yes")
69+
IO.ANSI.escape([:brigh, "Hello!"], true)
5270
end
5371
end
5472
end

0 commit comments

Comments
 (0)