aboutsummaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/04-term_spec.lua192
1 files changed, 191 insertions, 1 deletions
diff --git a/spec/04-term_spec.lua b/spec/04-term_spec.lua
index 9ca37e9..ee4145a 100644
--- a/spec/04-term_spec.lua
+++ b/spec/04-term_spec.lua
@@ -4,6 +4,19 @@ require("spec.helpers")
4 4
5describe("Terminal:", function() 5describe("Terminal:", function()
6 6
7 local wincodepage
8
9 setup(function()
10 wincodepage = system.getconsoleoutputcp()
11 assert(system.setconsoleoutputcp(65001))
12 end)
13
14 teardown(function()
15 assert(system.setconsoleoutputcp(wincodepage))
16 end)
17
18
19
7 describe("isatty()", function() 20 describe("isatty()", function()
8 21
9 local newtmpfile = require("pl.path").tmpname 22 local newtmpfile = require("pl.path").tmpname
@@ -93,7 +106,7 @@ describe("Terminal:", function()
93 106
94 107
95 108
96 describe("getconsoleflags()", function() 109 pending("getconsoleflags()", function()
97 110
98 pending("returns the consoleflags, if called without flags", function() 111 pending("returns the consoleflags, if called without flags", function()
99print"1" 112print"1"
@@ -111,4 +124,181 @@ for k,v in pairs(debug.getinfo(system.isatty)) do print(k,v) end
111 end) 124 end)
112 125
113 end) 126 end)
127
128
129
130 pending("setconsoleflags()", function()
131
132 pending("sets the consoleflags, if called with flags", function()
133 end)
134
135 end)
136
137
138
139 pending("tcgetattr()", function()
140
141 pending("sets the consoleflags, if called with flags", function()
142 end)
143
144 end)
145
146
147
148 pending("tcsetattr()", function()
149
150 pending("sets the consoleflags, if called with flags", function()
151 end)
152
153 end)
154
155
156
157 pending("getconsolecp()", function()
158
159 pending("sets the consoleflags, if called with flags", function()
160 end)
161
162 end)
163
164
165
166 pending("setconsolecp()", function()
167
168 pending("sets the consoleflags, if called with flags", function()
169 end)
170
171 end)
172
173
174
175 pending("getconsoleoutputcp()", function()
176
177 pending("sets the consoleflags, if called with flags", function()
178 end)
179
180 end)
181
182
183
184 pending("setconsoleoutputcp()", function()
185
186 pending("sets the consoleflags, if called with flags", function()
187 end)
188
189 end)
190
191
192
193 pending("getnonblock()", function()
194
195 pending("sets the consoleflags, if called with flags", function()
196 end)
197
198 end)
199
200
201
202 pending("setnonblock()", function()
203
204 pending("sets the consoleflags, if called with flags", function()
205 end)
206
207 end)
208
209
210
211 pending("termsize()", function()
212
213 pending("sets the consoleflags, if called with flags", function()
214 end)
215
216 end)
217
218
219
220 describe("utf8cwidth()", function()
221
222 local ch1 = string.char(226, 130, 172) -- "€" single
223 local ch2 = string.char(240, 159, 154, 128) -- "🚀" double
224 local ch3 = string.char(228, 189, 160) -- "你" double
225 local ch4 = string.char(229, 165, 189) -- "好" double
226
227 it("handles zero width characters", function()
228 assert.same({0}, {system.utf8cwidth("")}) -- empty string returns 0-size
229 assert.same({nil, 'Character width determination failed'}, {system.utf8cwidth("\a")}) -- bell character
230 assert.same({nil, 'Character width determination failed'}, {system.utf8cwidth("\27")}) -- escape character
231 end)
232
233 it("handles single width characters", function()
234 assert.same({1}, {system.utf8cwidth("a")})
235 assert.same({1}, {system.utf8cwidth(ch1)})
236 end)
237
238 it("handles double width characters", function()
239 assert.same({2}, {system.utf8cwidth(ch2)})
240 assert.same({2}, {system.utf8cwidth(ch3)})
241 assert.same({2}, {system.utf8cwidth(ch4)})
242 end)
243
244 it("returns the width of the first character in the string", function()
245 assert.same({nil, 'Character width determination failed'}, {system.utf8cwidth("\a" .. ch1)}) -- bell character + EURO
246 assert.same({1}, {system.utf8cwidth(ch1 .. ch2)})
247 assert.same({2}, {system.utf8cwidth(ch2 .. ch3 .. ch4)})
248 end)
249
250 end)
251
252
253
254 describe("utf8swidth()", function()
255
256 local ch1 = string.char(226, 130, 172) -- "€" single
257 local ch2 = string.char(240, 159, 154, 128) -- "🚀" double
258 local ch3 = string.char(228, 189, 160) -- "你" double
259 local ch4 = string.char(229, 165, 189) -- "好" double
260
261 it("handles zero width characters", function()
262 assert.same({0}, {system.utf8swidth("")}) -- empty string returns 0-size
263 assert.same({nil, 'Character width determination failed'}, {system.utf8swidth("\a")}) -- bell character
264 assert.same({nil, 'Character width determination failed'}, {system.utf8swidth("\27")}) -- escape character
265 end)
266
267 it("handles multi-character UTF8 strings", function()
268 assert.same({15}, {system.utf8swidth("hello " .. ch1 .. ch2 .. " world")})
269 assert.same({16}, {system.utf8swidth("hello " .. ch3 .. ch4 .. " world")})
270 end)
271
272 end)
273
274
275
276 pending("termbackup()", function()
277
278 end)
279
280
281
282 pending("termrestore()", function()
283
284 end)
285
286
287
288 pending("termwrap()", function()
289
290 end)
291
292
293
294 pending("readkey()", function()
295
296 end)
297
298
299
300 pending("readansi()", function()
301
302 end)
303
114end) 304end)