1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
-module(gleam@string_test).
-compile(no_auto_import).
-export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0, compare_test/0, contains_test/0, concat_test/0, repeat_test/0, join_test/0, trim_test/0, trim_left_test/0, trim_right_test/0, starts_with_test/0, ends_with_test/0, slice_test/0, pad_left_test/0, pad_right_test/0]).
length_test() ->
gleam@should:equal(gleam@string:length(<<"ß↑e̊"/utf8>>), 3),
gleam@should:equal(gleam@string:length(<<"Gleam"/utf8>>), 5),
gleam@should:equal(gleam@string:length(<<""/utf8>>), 0).
lowercase_test() ->
gleam@should:equal(
gleam@string:lowercase(<<"Gleam"/utf8>>),
<<"gleam"/utf8>>
).
uppercase_test() ->
gleam@should:equal(
gleam@string:uppercase(<<"Gleam"/utf8>>),
<<"GLEAM"/utf8>>
).
reverse_test() ->
gleam@should:equal(
gleam@string:reverse(<<"Gleam"/utf8>>),
<<"maelG"/utf8>>
).
split_test() ->
gleam@should:equal(
gleam@string:split(<<"Gleam,Erlang,Elixir"/utf8>>, <<","/utf8>>),
[<<"Gleam"/utf8>>, <<"Erlang"/utf8>>, <<"Elixir"/utf8>>]
),
gleam@should:equal(
gleam@string:split(<<"Gleam, Erlang,Elixir"/utf8>>, <<", "/utf8>>),
[<<"Gleam"/utf8>>, <<"Erlang,Elixir"/utf8>>]
).
replace_test() ->
gleam@should:equal(
gleam@string:replace(
<<"Gleam,Erlang,Elixir"/utf8>>,
<<","/utf8>>,
<<"++"/utf8>>
),
<<"Gleam++Erlang++Elixir"/utf8>>
).
append_test() ->
gleam@should:equal(
gleam@string:append(<<"Test"/utf8>>, <<" Me"/utf8>>),
<<"Test Me"/utf8>>
).
compare_test() ->
gleam@should:equal(gleam@string:compare(<<""/utf8>>, <<""/utf8>>), eq),
gleam@should:equal(gleam@string:compare(<<"a"/utf8>>, <<""/utf8>>), gt),
gleam@should:equal(gleam@string:compare(<<"a"/utf8>>, <<"A"/utf8>>), gt),
gleam@should:equal(gleam@string:compare(<<"A"/utf8>>, <<"B"/utf8>>), lt),
gleam@should:equal(gleam@string:compare(<<"t"/utf8>>, <<"ABC"/utf8>>), gt).
contains_test() ->
gleam@should:equal(
gleam@string:contains(<<"gleam"/utf8>>, <<"ea"/utf8>>),
true
),
gleam@should:equal(
gleam@string:contains(<<"gleam"/utf8>>, <<"x"/utf8>>),
false
),
gleam@should:equal(
gleam@string:contains(<<"bellwether"/utf8>>, <<"bell"/utf8>>),
true
).
concat_test() ->
gleam@should:equal(
gleam@string:concat(
[<<"Hello"/utf8>>, <<", "/utf8>>, <<"world!"/utf8>>]
),
<<"Hello, world!"/utf8>>
).
repeat_test() ->
gleam@should:equal(
gleam@string:repeat(<<"hi"/utf8>>, 3),
<<"hihihi"/utf8>>
),
gleam@should:equal(gleam@string:repeat(<<"hi"/utf8>>, 0), <<""/utf8>>),
gleam@should:equal(gleam@string:repeat(<<"hi"/utf8>>, -1), <<""/utf8>>).
join_test() ->
gleam@should:equal(
gleam@string:join([<<"Hello"/utf8>>, <<"world!"/utf8>>], <<", "/utf8>>),
<<"Hello, world!"/utf8>>
),
gleam@should:equal(
gleam@string:join([<<"Hello"/utf8>>, <<"world!"/utf8>>], <<"-"/utf8>>),
<<"Hello-world!"/utf8>>
).
trim_test() ->
gleam@should:equal(
gleam@string:trim(<<" hats \n"/utf8>>),
<<"hats"/utf8>>
).
trim_left_test() ->
gleam@should:equal(
gleam@string:trim_left(<<" hats \n"/utf8>>),
<<"hats \n"/utf8>>
).
trim_right_test() ->
gleam@should:equal(
gleam@string:trim_right(<<" hats \n"/utf8>>),
<<" hats"/utf8>>
).
starts_with_test() ->
gleam@should:equal(
gleam@string:starts_with(<<"theory"/utf8>>, <<""/utf8>>),
true
),
gleam@should:equal(
gleam@string:starts_with(<<"theory"/utf8>>, <<"the"/utf8>>),
true
),
gleam@should:equal(
gleam@string:starts_with(<<"theory"/utf8>>, <<"ory"/utf8>>),
false
),
gleam@should:equal(
gleam@string:starts_with(<<"theory"/utf8>>, <<"theory2"/utf8>>),
false
).
ends_with_test() ->
gleam@should:equal(
gleam@string:ends_with(<<"theory"/utf8>>, <<""/utf8>>),
true
),
gleam@should:equal(
gleam@string:ends_with(<<"theory"/utf8>>, <<"ory"/utf8>>),
true
),
gleam@should:equal(
gleam@string:ends_with(<<"theory"/utf8>>, <<"the"/utf8>>),
false
),
gleam@should:equal(
gleam@string:ends_with(<<"theory"/utf8>>, <<"theory2"/utf8>>),
false
).
slice_test() ->
gleam@should:equal(
gleam@string:slice(<<"gleam"/utf8>>, 1, 2),
<<"le"/utf8>>
),
gleam@should:equal(
gleam@string:slice(<<"gleam"/utf8>>, 1, 10),
<<"leam"/utf8>>
),
gleam@should:equal(
gleam@string:slice(<<"gleam"/utf8>>, 10, 3),
<<""/utf8>>
),
gleam@should:equal(
gleam@string:slice(<<"gleam"/utf8>>, -2, 2),
<<"am"/utf8>>
),
gleam@should:equal(
gleam@string:slice(<<"gleam"/utf8>>, -12, 2),
<<""/utf8>>
).
pad_left_test() ->
gleam@should:equal(
gleam@string:pad_left(<<"121"/utf8>>, 5, <<"."/utf8>>),
<<"..121"/utf8>>
),
gleam@should:equal(
gleam@string:pad_left(<<"121"/utf8>>, 3, <<"."/utf8>>),
<<"121"/utf8>>
),
gleam@should:equal(
gleam@string:pad_left(<<"121"/utf8>>, 2, <<"."/utf8>>),
<<"121"/utf8>>
),
gleam@should:equal(
gleam@string:pad_left(<<"121"/utf8>>, 5, <<"XY"/utf8>>),
<<"XYXY121"/utf8>>
).
pad_right_test() ->
gleam@should:equal(
gleam@string:pad_right(<<"121"/utf8>>, 5, <<"."/utf8>>),
<<"121.."/utf8>>
),
gleam@should:equal(
gleam@string:pad_right(<<"121"/utf8>>, 3, <<"."/utf8>>),
<<"121"/utf8>>
),
gleam@should:equal(
gleam@string:pad_right(<<"121"/utf8>>, 2, <<"."/utf8>>),
<<"121"/utf8>>
),
gleam@should:equal(
gleam@string:pad_right(<<"121"/utf8>>, 5, <<"XY"/utf8>>),
<<"121XYXY"/utf8>>
).
|