@@ -3,70 +3,119 @@ 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_ansicode do
7
- assert IO.ANSI . escape ( :green , true ) ==
6
+ test :format_ansicode do
7
+ assert IO.ANSI . format ( :green , true ) ==
8
8
"#{ IO.ANSI . green } #{ IO.ANSI . reset } "
9
- assert IO.ANSI . escape ( :green , false ) ==
9
+ assert IO.ANSI . format ( :green , false ) ==
10
10
""
11
11
end
12
12
13
- test :escape_binary do
14
- assert IO.ANSI . escape ( "Hello, world!" , true ) ==
13
+ test :format_binary do
14
+ assert IO.ANSI . format ( "Hello, world!" , true ) ==
15
15
"Hello, world!"
16
- assert IO.ANSI . escape ( "This is a map: %{foo: :bar}" , false ) ==
16
+ assert IO.ANSI . format ( "This is a map: %{foo: :bar}" , false ) ==
17
17
"This is a map: %{foo: :bar}"
18
18
end
19
19
20
- test :escape_empty_list do
21
- assert IO.ANSI . escape ( [ ] , true ) ==
20
+ test :format_empty_list do
21
+ assert IO.ANSI . format ( [ ] , true ) ==
22
22
""
23
- assert IO.ANSI . escape ( [ ] , false ) ==
23
+ assert IO.ANSI . format ( [ ] , false ) ==
24
24
""
25
25
end
26
26
27
- test :escape_ansicode_list do
28
- assert IO.ANSI . escape ( [ :red , :bright ] , true ) ==
27
+ test :format_ansicode_list do
28
+ assert IO.ANSI . format ( [ :red , :bright ] , true ) ==
29
29
"#{ IO.ANSI . red } #{ IO.ANSI . bright } #{ IO.ANSI . reset } "
30
- assert IO.ANSI . escape ( [ :red , :bright ] , false ) ==
30
+ assert IO.ANSI . format ( [ :red , :bright ] , false ) ==
31
31
""
32
32
end
33
33
34
- test :escape_binary_list do
35
- assert IO.ANSI . escape ( [ "Hello, " , "world!" ] , true ) ==
34
+ test :format_binary_list do
35
+ assert IO.ANSI . format ( [ "Hello, " , "world!" ] , true ) ==
36
36
"Hello, world!"
37
- assert IO.ANSI . escape ( [ "Hello, " , "world!" ] , false ) ==
37
+ assert IO.ANSI . format ( [ "Hello, " , "world!" ] , false ) ==
38
38
"Hello, world!"
39
39
end
40
40
41
- test :escape_char_list do
42
- assert IO.ANSI . escape ( 'Hello, world!' , true ) ==
41
+ test :format_char_list do
42
+ assert IO.ANSI . format ( 'Hello, world!' , true ) ==
43
43
"Hello, world!"
44
- assert IO.ANSI . escape ( 'Hello, world!' , false ) ==
44
+ assert IO.ANSI . format ( 'Hello, world!' , false ) ==
45
45
"Hello, world!"
46
46
end
47
47
48
- test :escape_mixed_list do
49
- assert IO.ANSI . escape ( [ "Hello" , ?, , 32 , :red , "world!" ] , true ) ==
48
+ test :format_mixed_list do
49
+ assert IO.ANSI . format ( [ "Hello" , ?, , 32 , :red , "world!" ] , true ) ==
50
50
"Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
51
- assert IO.ANSI . escape ( [ "Hello" , ?, , 32 , :red , "world!" ] , false ) ==
51
+ assert IO.ANSI . format ( [ "Hello" , ?, , 32 , :red , "world!" ] , false ) ==
52
52
"Hello, world!"
53
53
end
54
54
55
- test :escape_nested_list do
56
- assert IO.ANSI . escape ( [ "Hello, " , [ "nested" , 32 , :red , "world!" ] ] , true ) ==
55
+ test :format_nested_list do
56
+ assert IO.ANSI . format ( [ "Hello, " , [ "nested" , 32 , :red , "world!" ] ] , true ) ==
57
57
"Hello, nested #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
58
- assert IO.ANSI . escape ( [ "Hello, " , [ "nested" , 32 , :red , "world!" ] ] , false ) ==
58
+ assert IO.ANSI . format ( [ "Hello, " , [ "nested" , 32 , :red , "world!" ] ] , false ) ==
59
59
"Hello, nested world!"
60
60
end
61
61
62
- test :escape_fragment do
63
- assert IO.ANSI . escape_fragment ( [ :red , "Hello!" ] , true ) ==
62
+ test :format_fragment do
63
+ assert IO.ANSI . format_fragment ( [ :red , "Hello!" ] , true ) ==
64
64
"#{ IO.ANSI . red } Hello!"
65
65
end
66
66
67
- test :invalid_sequence do
67
+ test :format_invalid_sequence do
68
+ assert_raise ArgumentError , "invalid ANSI sequence specification: brigh" , fn ->
69
+ IO.ANSI . format ( [ :brigh , "Hello!" ] , true )
70
+ end
71
+ end
72
+
73
+ test :escape_single do
74
+ assert IO.ANSI . escape ( "Hello, %{red}world!" , true ) ==
75
+ "Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
76
+ assert IO.ANSI . escape ( "Hello, %{red}world!" , true ) ==
77
+ "Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
78
+ end
79
+
80
+ test :escape_non_attribute do
81
+ assert IO.ANSI . escape ( "Hello %{clear}world!" , true ) ==
82
+ "Hello #{ IO.ANSI . clear } world!#{ IO.ANSI . reset } "
83
+ assert IO.ANSI . escape ( "Hello %{home}world!" , true ) ==
84
+ "Hello #{ IO.ANSI . home } world!#{ IO.ANSI . reset } "
85
+ end
86
+
87
+ test :escape_multiple do
88
+ assert IO.ANSI . escape ( "Hello, %{red,bright}world!" , true ) ==
89
+ "Hello, #{ IO.ANSI . red } #{ IO.ANSI . bright } world!#{ IO.ANSI . reset } "
90
+ assert IO.ANSI . escape ( "Hello, %{red, bright}world!" , true ) ==
91
+ "Hello, #{ IO.ANSI . red } #{ IO.ANSI . bright } world!#{ IO.ANSI . reset } "
92
+ assert IO.ANSI . escape ( "Hello, %{red , bright}world!" , true ) ==
93
+ "Hello, #{ IO.ANSI . red } #{ IO.ANSI . bright } world!#{ IO.ANSI . reset } "
94
+ end
95
+
96
+ test :escape_no_emit do
97
+ assert IO.ANSI . escape ( "Hello, %{}world!" , false ) ==
98
+ "Hello, world!"
99
+
100
+ assert IO.ANSI . escape ( "Hello, %{red,bright}world!" , false ) ==
101
+ "Hello, world!"
102
+ end
103
+
104
+ test :escape_fragment do
105
+ assert IO.ANSI . escape ( "%{red}" , true ) == "#{ IO.ANSI . red } #{ IO.ANSI . reset } "
106
+ assert IO.ANSI . escape_fragment ( "" , true ) == ""
107
+ end
108
+
109
+ test :escape_noop do
110
+ assert IO.ANSI . escape ( "" ) == ""
111
+ end
112
+
113
+ test :escape_invalid do
114
+ assert_raise ArgumentError , "invalid ANSI sequence specification: brigh" , fn ->
115
+ IO.ANSI . escape ( "%{brigh}, yes" )
116
+ end
68
117
assert_raise ArgumentError , "invalid ANSI sequence specification: brigh" , fn ->
69
- IO.ANSI . escape ( [ : brigh, "Hello!" ] , true )
118
+ IO.ANSI . escape ( "%{ brigh,red}, yes" )
70
119
end
71
120
end
72
121
end
0 commit comments