@@ -3,6 +3,95 @@ Code.require_file "../test_helper.exs", __DIR__
3
3
defmodule IO.ANSITest do
4
4
use ExUnit.Case , async: true
5
5
6
+ test :format_ansicode do
7
+ assert IO . chardata_to_string ( IO.ANSI . format ( :green , true ) ) ==
8
+ "#{ IO.ANSI . green } #{ IO.ANSI . reset } "
9
+ assert IO . chardata_to_string ( IO.ANSI . format ( :green , false ) ) ==
10
+ ""
11
+ end
12
+
13
+ test :format_binary do
14
+ assert IO . chardata_to_string ( IO.ANSI . format ( "Hello, world!" , true ) ) ==
15
+ "Hello, world!"
16
+ assert IO . chardata_to_string ( IO.ANSI . format ( "A map: %{foo: :bar}" , false ) ) ==
17
+ "A map: %{foo: :bar}"
18
+ end
19
+
20
+ test :format_empty_list do
21
+ assert IO . chardata_to_string ( IO.ANSI . format ( [ ] , true ) ) ==
22
+ ""
23
+ assert IO . chardata_to_string ( IO.ANSI . format ( [ ] , false ) ) ==
24
+ ""
25
+ end
26
+
27
+ test :format_ansicode_list do
28
+ assert IO . chardata_to_string ( IO.ANSI . format ( [ :red , :bright ] , true ) ) ==
29
+ "#{ IO.ANSI . red } #{ IO.ANSI . bright } #{ IO.ANSI . reset } "
30
+ assert IO . chardata_to_string ( IO.ANSI . format ( [ :red , :bright ] , false ) ) ==
31
+ ""
32
+ end
33
+
34
+ test :format_binary_list do
35
+ assert IO . chardata_to_string ( IO.ANSI . format ( [ "Hello, " , "world!" ] , true ) ) ==
36
+ "Hello, world!"
37
+ assert IO . chardata_to_string ( IO.ANSI . format ( [ "Hello, " , "world!" ] , false ) ) ==
38
+ "Hello, world!"
39
+ end
40
+
41
+ test :format_char_list do
42
+ assert IO . chardata_to_string ( IO.ANSI . format ( 'Hello, world!' , true ) ) ==
43
+ "Hello, world!"
44
+ assert IO . chardata_to_string ( IO.ANSI . format ( 'Hello, world!' , false ) ) ==
45
+ "Hello, world!"
46
+ end
47
+
48
+ test :format_mixed_list do
49
+ data = [ "Hello" , ?, , 32 , :red , "world!" ]
50
+
51
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , true ) ) ==
52
+ "Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
53
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , false ) ) ==
54
+ "Hello, world!"
55
+ end
56
+
57
+ test :format_nested_list do
58
+ data = [ "Hello, " , [ "nested" , 32 , :red , "world!" ] ]
59
+
60
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , true ) ) ==
61
+ "Hello, nested #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
62
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , false ) ) ==
63
+ "Hello, nested world!"
64
+ end
65
+
66
+ test :format_improper_list do
67
+ data = [ "Hello, " , :red , "world" | "!" ]
68
+
69
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , true ) ) ==
70
+ "Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
71
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , false ) ) ==
72
+ "Hello, world!"
73
+ end
74
+
75
+ test :format_nested_improper_list do
76
+ data = [ [ "Hello, " | :red ] , "world!" | :green ]
77
+
78
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , true ) ) ==
79
+ "Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . green } #{ IO.ANSI . reset } "
80
+ assert IO . chardata_to_string ( IO.ANSI . format ( data , false ) ) ==
81
+ "Hello, world!"
82
+ end
83
+
84
+ test :format_fragment do
85
+ assert IO . chardata_to_string ( IO.ANSI . format_fragment ( [ :red , "Hello!" ] , true ) ) ==
86
+ "#{ IO.ANSI . red } Hello!"
87
+ end
88
+
89
+ test :format_invalid_sequence do
90
+ assert_raise ArgumentError , "invalid ANSI sequence specification: brigh" , fn ->
91
+ IO.ANSI . format ( [ :brigh , "Hello!" ] , true )
92
+ end
93
+ end
94
+
6
95
test :escape_single do
7
96
assert IO.ANSI . escape ( "Hello, %{red}world!" , true ) ==
8
97
"Hello, #{ IO.ANSI . red } world!#{ IO.ANSI . reset } "
@@ -26,24 +115,24 @@ defmodule IO.ANSITest do
26
115
"Hello, #{ IO.ANSI . red } #{ IO.ANSI . bright } world!#{ IO.ANSI . reset } "
27
116
end
28
117
29
- test :no_emit do
118
+ test :escape_no_emit do
30
119
assert IO.ANSI . escape ( "Hello, %{}world!" , false ) ==
31
120
"Hello, world!"
32
121
33
122
assert IO.ANSI . escape ( "Hello, %{red,bright}world!" , false ) ==
34
123
"Hello, world!"
35
124
end
36
125
37
- test :fragment do
126
+ test :escape_fragment do
38
127
assert IO.ANSI . escape ( "%{red}" , true ) == "#{ IO.ANSI . red } #{ IO.ANSI . reset } "
39
128
assert IO.ANSI . escape_fragment ( "" , true ) == ""
40
129
end
41
130
42
- test :noop do
131
+ test :escape_noop do
43
132
assert IO.ANSI . escape ( "" ) == ""
44
133
end
45
134
46
- test :invalid do
135
+ test :escape_invalid do
47
136
assert_raise ArgumentError , "invalid ANSI sequence specification: brigh" , fn ->
48
137
IO.ANSI . escape ( "%{brigh}, yes" )
49
138
end
0 commit comments