lua: string library (len/upper/lower/rep/sub/byte/char/find/match/gmatch/gsub/format) +19 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
This commit is contained in:
@@ -728,6 +728,46 @@ cat > "$TMPFILE" << 'EPOCHS'
|
||||
(epoch 1040)
|
||||
(eval "(lua-eval-ast \"local function iter() coroutine.yield(10) coroutine.yield(20) coroutine.yield(30) end local co = coroutine.create(iter) local sum = 0 for i = 1, 3 do local ok, v = coroutine.resume(co) sum = sum + v end return sum\")")
|
||||
|
||||
;; ── Phase 6: string library ───────────────────────────────────
|
||||
(epoch 1100)
|
||||
(eval "(lua-eval-ast \"return string.len(\\\"hello\\\")\")")
|
||||
(epoch 1101)
|
||||
(eval "(lua-eval-ast \"return string.upper(\\\"hi\\\")\")")
|
||||
(epoch 1102)
|
||||
(eval "(lua-eval-ast \"return string.lower(\\\"HI\\\")\")")
|
||||
(epoch 1103)
|
||||
(eval "(lua-eval-ast \"return string.rep(\\\"ab\\\", 3)\")")
|
||||
(epoch 1110)
|
||||
(eval "(lua-eval-ast \"return string.sub(\\\"hello\\\", 2, 4)\")")
|
||||
(epoch 1111)
|
||||
(eval "(lua-eval-ast \"return string.sub(\\\"hello\\\", -3)\")")
|
||||
(epoch 1112)
|
||||
(eval "(lua-eval-ast \"return string.sub(\\\"hello\\\", 1, -2)\")")
|
||||
(epoch 1120)
|
||||
(eval "(lua-eval-ast \"return string.byte(\\\"A\\\")\")")
|
||||
(epoch 1121)
|
||||
(eval "(lua-eval-ast \"return string.byte(\\\"ABC\\\", 2)\")")
|
||||
(epoch 1130)
|
||||
(eval "(lua-eval-ast \"return string.char(72, 105)\")")
|
||||
(epoch 1131)
|
||||
(eval "(lua-eval-ast \"return string.char(97, 98, 99)\")")
|
||||
(epoch 1140)
|
||||
(eval "(lua-eval-ast \"local s, e = string.find(\\\"hello world\\\", \\\"wor\\\") return s * 100 + e\")")
|
||||
(epoch 1141)
|
||||
(eval "(lua-eval-ast \"if string.find(\\\"abc\\\", \\\"z\\\") == nil then return 1 else return 0 end\")")
|
||||
(epoch 1150)
|
||||
(eval "(lua-eval-ast \"return string.match(\\\"hello\\\", \\\"ell\\\")\")")
|
||||
(epoch 1160)
|
||||
(eval "(lua-eval-ast \"local r, n = string.gsub(\\\"abcabc\\\", \\\"a\\\", \\\"X\\\") return r .. \\\":\\\" .. n\")")
|
||||
(epoch 1161)
|
||||
(eval "(lua-eval-ast \"local r, n = string.gsub(\\\"aaaa\\\", \\\"a\\\", \\\"b\\\", 2) return r .. \\\":\\\" .. n\")")
|
||||
(epoch 1170)
|
||||
(eval "(lua-eval-ast \"local c = 0 for w in string.gmatch(\\\"aa aa aa\\\", \\\"aa\\\") do c = c + 1 end return c\")")
|
||||
(epoch 1180)
|
||||
(eval "(lua-eval-ast \"return string.format(\\\"%s=%d\\\", \\\"x\\\", 42)\")")
|
||||
(epoch 1181)
|
||||
(eval "(lua-eval-ast \"return string.format(\\\"%d%%\\\", 50)\")")
|
||||
|
||||
EPOCHS
|
||||
|
||||
OUTPUT=$(timeout 60 "$SX_SERVER" < "$TMPFILE" 2>/dev/null)
|
||||
@@ -1090,6 +1130,27 @@ check 1020 "resume dead returns error" '"cannot resume dead coroutine"'
|
||||
check 1030 "coroutine.wrap" '6'
|
||||
check 1040 "iterator via coroutine" '60'
|
||||
|
||||
# ── Phase 6: string library ───────────────────────────────────
|
||||
check 1100 "string.len" '5'
|
||||
check 1101 "string.upper" '"HI"'
|
||||
check 1102 "string.lower" '"hi"'
|
||||
check 1103 "string.rep" '"ababab"'
|
||||
check 1110 "string.sub(s,i,j)" '"ell"'
|
||||
check 1111 "string.sub(s,-3)" '"llo"'
|
||||
check 1112 "string.sub(s,1,-2)" '"hell"'
|
||||
check 1120 "string.byte" '65'
|
||||
check 1121 "string.byte(s,i)" '66'
|
||||
check 1130 "string.char(72,105)" '"Hi"'
|
||||
check 1131 "string.char(97,98,99)" '"abc"'
|
||||
check 1140 "string.find literal hit" '709'
|
||||
check 1141 "string.find literal miss" '1'
|
||||
check 1150 "string.match literal" '"ell"'
|
||||
check 1160 "string.gsub replace all" '"XbcXbc:2"'
|
||||
check 1161 "string.gsub with limit" '"bbaa:2"'
|
||||
check 1170 "string.gmatch iterator" '3'
|
||||
check 1180 "string.format %s=%d" '"x=42"'
|
||||
check 1181 "string.format %d%%" '"50%"'
|
||||
|
||||
TOTAL=$((PASS + FAIL))
|
||||
if [ $FAIL -eq 0 ]; then
|
||||
echo "ok $PASS/$TOTAL Lua-on-SX tests passed"
|
||||
|
||||
Reference in New Issue
Block a user