@@ -3,52 +3,70 @@ Code.require_file "../test_helper.exs", __DIR__
3
3
defmodule IO.ANSITest do
4
4
use ExUnit.Case , async: true
5
5
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
+ ""
11
25
end
12
26
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
+ ""
18
32
end
19
33
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!"
27
39
end
28
40
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 ) ==
31
43
"Hello, world!"
44
+ assert IO.ANSI . escape ( 'Hello, world!' , false ) ==
45
+ "Hello, world!"
46
+ end
32
47
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 ) ==
34
52
"Hello, world!"
35
53
end
36
54
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!"
40
60
end
41
61
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!"
44
65
end
45
66
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
50
68
assert_raise ArgumentError , "invalid ANSI sequence specification: brigh" , fn ->
51
- IO.ANSI . escape ( "%{ brigh,red}, yes" )
69
+ IO.ANSI . escape ( [ : brigh, "Hello!" ] , true )
52
70
end
53
71
end
54
72
end
0 commit comments