comparison spec/util_format_spec.lua @ 13930:1914675b6727

util.format: Handle Lua 5.5 change in precision tostring(big number) sed -i '/73786976294838206464/s/equal("\[7\.3786976294838e+19]"/matches("%[7%.3786976294838%d*e%+19%]"/' sed -i '/73786976294838206464/s/equal("7\.3786976294838e+19"/matches("7%.3786976294838%d*e%+19"/' Don't think this change in Lua affects anything else, we shouldn't be depending on the exact number format tostring() uses.
author Kim Alvefur <zash@zash.se>
date Fri, 08 Aug 2025 15:04:48 +0200
parents c0e3e0d79574
children
comparison
equal deleted inserted replaced
13929:203a0b5ade55 13930:1914675b6727
13 assert.equal("true", format("%s", true)); 13 assert.equal("true", format("%s", true));
14 assert.equal("[true]", format("%d", true)); 14 assert.equal("[true]", format("%d", true));
15 assert.equal("% [true]", format("%%", true)); 15 assert.equal("% [true]", format("%%", true));
16 assert.equal("{}", format("%q", {})); 16 assert.equal("{}", format("%q", {}));
17 assert.equal("[1.5]", format("%d", 1.5)); 17 assert.equal("[1.5]", format("%d", 1.5));
18 assert.equal("[7.3786976294838e+19]", format("%d", 73786976294838206464)); 18 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%d", 73786976294838206464));
19 end); 19 end);
20 20
21 it("escapes ascii control stuff", function () 21 it("escapes ascii control stuff", function ()
22 assert.equal("␁", format("%s", "\1")); 22 assert.equal("␁", format("%s", "\1"));
23 assert.equal("[␁]", format("%d", "\1")); 23 assert.equal("[␁]", format("%d", "\1"));
260 describe("number", function () 260 describe("number", function ()
261 describe("to %c", function () 261 describe("to %c", function ()
262 it("works", function () 262 it("works", function ()
263 assert.equal("a", format("%c", 97)) 263 assert.equal("a", format("%c", 97))
264 assert.equal("[1.5]", format("%c", 1.5)) 264 assert.equal("[1.5]", format("%c", 1.5))
265 assert.equal("[7.3786976294838e+19]", format("%c", 73786976294838206464)) 265 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%c", 73786976294838206464))
266 assert.equal("[inf]", format("%c", math.huge)) 266 assert.equal("[inf]", format("%c", math.huge))
267 end); 267 end);
268 end); 268 end);
269 269
270 describe("to %d", function () 270 describe("to %d", function ()
271 it("works", function () 271 it("works", function ()
272 assert.equal("97", format("%d", 97)) 272 assert.equal("97", format("%d", 97))
273 assert.equal("-12345", format("%d", -12345)) 273 assert.equal("-12345", format("%d", -12345))
274 assert.equal("[1.5]", format("%d", 1.5)) 274 assert.equal("[1.5]", format("%d", 1.5))
275 assert.equal("[7.3786976294838e+19]", format("%d", 73786976294838206464)) 275 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%d", 73786976294838206464))
276 assert.equal("[inf]", format("%d", math.huge)) 276 assert.equal("[inf]", format("%d", math.huge))
277 assert.equal("2147483647", format("%d", 2147483647)) 277 assert.equal("2147483647", format("%d", 2147483647))
278 end); 278 end);
279 end); 279 end);
280 280
281 describe("to %i", function () 281 describe("to %i", function ()
282 it("works", function () 282 it("works", function ()
283 assert.equal("97", format("%i", 97)) 283 assert.equal("97", format("%i", 97))
284 assert.equal("-12345", format("%i", -12345)) 284 assert.equal("-12345", format("%i", -12345))
285 assert.equal("[1.5]", format("%i", 1.5)) 285 assert.equal("[1.5]", format("%i", 1.5))
286 assert.equal("[7.3786976294838e+19]", format("%i", 73786976294838206464)) 286 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%i", 73786976294838206464))
287 assert.equal("[inf]", format("%i", math.huge)) 287 assert.equal("[inf]", format("%i", math.huge))
288 assert.equal("2147483647", format("%i", 2147483647)) 288 assert.equal("2147483647", format("%i", 2147483647))
289 end); 289 end);
290 end); 290 end);
291 291
292 describe("to %o", function () 292 describe("to %o", function ()
293 it("works", function () 293 it("works", function ()
294 assert.equal("141", format("%o", 97)) 294 assert.equal("141", format("%o", 97))
295 assert.equal("[-12345]", format("%o", -12345)) 295 assert.equal("[-12345]", format("%o", -12345))
296 assert.equal("[1.5]", format("%o", 1.5)) 296 assert.equal("[1.5]", format("%o", 1.5))
297 assert.equal("[7.3786976294838e+19]", format("%o", 73786976294838206464)) 297 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%o", 73786976294838206464))
298 assert.equal("[inf]", format("%o", math.huge)) 298 assert.equal("[inf]", format("%o", math.huge))
299 assert.equal("17777777777", format("%o", 2147483647)) 299 assert.equal("17777777777", format("%o", 2147483647))
300 end); 300 end);
301 end); 301 end);
302 302
303 describe("to %u", function () 303 describe("to %u", function ()
304 it("works", function () 304 it("works", function ()
305 assert.equal("97", format("%u", 97)) 305 assert.equal("97", format("%u", 97))
306 assert.equal("[-12345]", format("%u", -12345)) 306 assert.equal("[-12345]", format("%u", -12345))
307 assert.equal("[1.5]", format("%u", 1.5)) 307 assert.equal("[1.5]", format("%u", 1.5))
308 assert.equal("[7.3786976294838e+19]", format("%u", 73786976294838206464)) 308 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%u", 73786976294838206464))
309 assert.equal("[inf]", format("%u", math.huge)) 309 assert.equal("[inf]", format("%u", math.huge))
310 assert.equal("2147483647", format("%u", 2147483647)) 310 assert.equal("2147483647", format("%u", 2147483647))
311 end); 311 end);
312 end); 312 end);
313 313
314 describe("to %x", function () 314 describe("to %x", function ()
315 it("works", function () 315 it("works", function ()
316 assert.equal("61", format("%x", 97)) 316 assert.equal("61", format("%x", 97))
317 assert.equal("[-12345]", format("%x", -12345)) 317 assert.equal("[-12345]", format("%x", -12345))
318 assert.equal("[1.5]", format("%x", 1.5)) 318 assert.equal("[1.5]", format("%x", 1.5))
319 assert.equal("[7.3786976294838e+19]", format("%x", 73786976294838206464)) 319 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%x", 73786976294838206464))
320 assert.equal("[inf]", format("%x", math.huge)) 320 assert.equal("[inf]", format("%x", math.huge))
321 assert.equal("7fffffff", format("%x", 2147483647)) 321 assert.equal("7fffffff", format("%x", 2147483647))
322 end); 322 end);
323 end); 323 end);
324 324
325 describe("to %X", function () 325 describe("to %X", function ()
326 it("works", function () 326 it("works", function ()
327 assert.equal("61", format("%X", 97)) 327 assert.equal("61", format("%X", 97))
328 assert.equal("[-12345]", format("%X", -12345)) 328 assert.equal("[-12345]", format("%X", -12345))
329 assert.equal("[1.5]", format("%X", 1.5)) 329 assert.equal("[1.5]", format("%X", 1.5))
330 assert.equal("[7.3786976294838e+19]", format("%X", 73786976294838206464)) 330 assert.matches("%[7%.3786976294838%d*e%+19%]", format("%X", 73786976294838206464))
331 assert.equal("[inf]", format("%X", math.huge)) 331 assert.equal("[inf]", format("%X", math.huge))
332 assert.equal("7FFFFFFF", format("%X", 2147483647)) 332 assert.equal("7FFFFFFF", format("%X", 2147483647))
333 end); 333 end);
334 end); 334 end);
335 335
424 describe("to %s", function () 424 describe("to %s", function ()
425 it("works", function () 425 it("works", function ()
426 assert.equal("97", format("%s", 97)) 426 assert.equal("97", format("%s", 97))
427 assert.equal("-12345", format("%s", -12345)) 427 assert.equal("-12345", format("%s", -12345))
428 assert.equal("1.5", format("%s", 1.5)) 428 assert.equal("1.5", format("%s", 1.5))
429 assert.equal("7.3786976294838e+19", format("%s", 73786976294838206464)) 429 assert.matches("7%.3786976294838%d*e%+19", format("%s", 73786976294838206464))
430 assert.equal("inf", format("%s", math.huge)) 430 assert.equal("inf", format("%s", math.huge))
431 assert.equal("2147483647", format("%s", 2147483647)) 431 assert.equal("2147483647", format("%s", 2147483647))
432 end); 432 end);
433 end); 433 end);
434 434