diff options
Diffstat (limited to 'testes')
-rw-r--r-- | testes/strings.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/testes/strings.lua b/testes/strings.lua index 8bcbb391..66c1176d 100644 --- a/testes/strings.lua +++ b/testes/strings.lua | |||
@@ -400,5 +400,66 @@ do | |||
400 | assert(co() == "2") | 400 | assert(co() == "2") |
401 | end | 401 | end |
402 | 402 | ||
403 | |||
404 | if T==nil then | ||
405 | (Message or print) | ||
406 | ("\n >>> testC not active: skipping 'pushfstring' tests <<<\n") | ||
407 | else | ||
408 | |||
409 | print"testing 'pushfstring'" | ||
410 | |||
411 | -- formats %U, %f, %I already tested elsewhere | ||
412 | |||
413 | local blen = 400 -- internal buffer length in 'luaO_pushfstring' | ||
414 | |||
415 | local function callpfs (op, fmt, n) | ||
416 | local x = {T.testC("pushfstring" .. op .. "; return *", fmt, n)} | ||
417 | -- stack has code, 'fmt', 'n', and result from operation | ||
418 | assert(#x == 4) -- make sure nothing else was left in the stack | ||
419 | return x[4] | ||
420 | end | ||
421 | |||
422 | local function testpfs (op, fmt, n) | ||
423 | assert(callpfs(op, fmt, n) == string.format(fmt, n)) | ||
424 | end | ||
425 | |||
426 | testpfs("I", "", 0) | ||
427 | testpfs("I", string.rep("a", blen - 1), 0) | ||
428 | testpfs("I", string.rep("a", blen), 0) | ||
429 | testpfs("I", string.rep("a", blen + 1), 0) | ||
430 | |||
431 | local str = string.rep("ab", blen) .. "%d" .. string.rep("d", blen / 2) | ||
432 | testpfs("I", str, 2^14) | ||
433 | testpfs("I", str, -2^15) | ||
434 | |||
435 | str = "%d" .. string.rep("cd", blen) | ||
436 | testpfs("I", str, 2^14) | ||
437 | testpfs("I", str, -2^15) | ||
438 | |||
439 | str = string.rep("c", blen - 2) .. "%d" | ||
440 | testpfs("I", str, 2^14) | ||
441 | testpfs("I", str, -2^15) | ||
442 | |||
443 | for l = 12, 14 do | ||
444 | local str1 = string.rep("a", l) | ||
445 | for i = 0, 500, 13 do | ||
446 | for j = 0, 500, 13 do | ||
447 | str = string.rep("a", i) .. "%s" .. string.rep("d", j) | ||
448 | testpfs("S", str, str1) | ||
449 | testpfs("S", str, str) | ||
450 | end | ||
451 | end | ||
452 | end | ||
453 | |||
454 | str = "abc %c def" | ||
455 | testpfs("I", str, string.byte("A")) | ||
456 | -- non-printable character | ||
457 | assert(callpfs("I", str, 255) == "abc <\\255> def") | ||
458 | |||
459 | str = string.rep("a", blen - 1) .. "%p" .. string.rep("cd", blen) | ||
460 | testpfs("P", str, {}) | ||
461 | end | ||
462 | |||
463 | |||
403 | print('OK') | 464 | print('OK') |
404 | 465 | ||