aboutsummaryrefslogtreecommitdiff
path: root/testes/pm.lua
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-12-28 18:34:11 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-12-28 18:34:11 -0300
commit314745ed8438d1276c6c928d5f9d4be018dfadb6 (patch)
tree594b7e873f2c29113d95c75147ab10865cdd772c /testes/pm.lua
parent0825cf237d9d3505155f8b40bcf83ea1b135e8da (diff)
downloadlua-314745ed8438d1276c6c928d5f9d4be018dfadb6.tar.gz
lua-314745ed8438d1276c6c928d5f9d4be018dfadb6.tar.bz2
lua-314745ed8438d1276c6c928d5f9d4be018dfadb6.zip
Avoid excessive name pollution in test files
Test files are more polite regarding the use of globals when locals would do, and when globals are necessary deleting them after use.
Diffstat (limited to 'testes/pm.lua')
-rw-r--r--testes/pm.lua32
1 files changed, 17 insertions, 15 deletions
diff --git a/testes/pm.lua b/testes/pm.lua
index 94bb63ca..795596d4 100644
--- a/testes/pm.lua
+++ b/testes/pm.lua
@@ -9,12 +9,12 @@ local function checkerror (msg, f, ...)
9end 9end
10 10
11 11
12function f(s, p) 12local function f (s, p)
13 local i,e = string.find(s, p) 13 local i,e = string.find(s, p)
14 if i then return string.sub(s, i, e) end 14 if i then return string.sub(s, i, e) end
15end 15end
16 16
17a,b = string.find('', '') -- empty patterns are tricky 17local a,b = string.find('', '') -- empty patterns are tricky
18assert(a == 1 and b == 0); 18assert(a == 1 and b == 0);
19a,b = string.find('alo', '') 19a,b = string.find('alo', '')
20assert(a == 1 and b == 0) 20assert(a == 1 and b == 0)
@@ -88,7 +88,7 @@ assert(f("alo alo", "%C+") == "alo alo")
88print('+') 88print('+')
89 89
90 90
91function f1(s, p) 91local function f1 (s, p)
92 p = string.gsub(p, "%%([0-9])", function (s) 92 p = string.gsub(p, "%%([0-9])", function (s)
93 return "%" .. (tonumber(s)+1) 93 return "%" .. (tonumber(s)+1)
94 end) 94 end)
@@ -113,7 +113,7 @@ local abc = string.char(range(0, 127)) .. string.char(range(128, 255));
113 113
114assert(string.len(abc) == 256) 114assert(string.len(abc) == 256)
115 115
116function strset (p) 116local function strset (p)
117 local res = {s=''} 117 local res = {s=''}
118 string.gsub(abc, p, function (c) res.s = res.s .. c end) 118 string.gsub(abc, p, function (c) res.s = res.s .. c end)
119 return res.s 119 return res.s
@@ -147,7 +147,7 @@ assert(string.gsub('ülo ülo', 'ü', 'x') == 'xlo xlo')
147assert(string.gsub('alo úlo ', ' +$', '') == 'alo úlo') -- trim 147assert(string.gsub('alo úlo ', ' +$', '') == 'alo úlo') -- trim
148assert(string.gsub(' alo alo ', '^%s*(.-)%s*$', '%1') == 'alo alo') -- double trim 148assert(string.gsub(' alo alo ', '^%s*(.-)%s*$', '%1') == 'alo alo') -- double trim
149assert(string.gsub('alo alo \n 123\n ', '%s+', ' ') == 'alo alo 123 ') 149assert(string.gsub('alo alo \n 123\n ', '%s+', ' ') == 'alo alo 123 ')
150t = "abç d" 150local t = "abç d"
151a, b = string.gsub(t, '(.)', '%1@') 151a, b = string.gsub(t, '(.)', '%1@')
152assert('@'..a == string.gsub(t, '', '@') and b == 5) 152assert('@'..a == string.gsub(t, '', '@') and b == 5)
153a, b = string.gsub('abçd', '(.)', '%0@', 2) 153a, b = string.gsub('abçd', '(.)', '%0@', 2)
@@ -184,6 +184,7 @@ do
184 local function setglobal (n,v) rawset(_G, n, v) end 184 local function setglobal (n,v) rawset(_G, n, v) end
185 string.gsub("a=roberto,roberto=a", "(%w+)=(%w%w*)", setglobal) 185 string.gsub("a=roberto,roberto=a", "(%w+)=(%w%w*)", setglobal)
186 assert(_G.a=="roberto" and _G.roberto=="a") 186 assert(_G.a=="roberto" and _G.roberto=="a")
187 _G.a = nil; _G.roberto = nil
187end 188end
188 189
189function f(a,b) return string.gsub(a,'.',b) end 190function f(a,b) return string.gsub(a,'.',b) end
@@ -195,20 +196,21 @@ assert(string.gsub("alo $a='x'$ novamente $return a$",
195 "$([^$]*)%$", 196 "$([^$]*)%$",
196 dostring) == "alo novamente x") 197 dostring) == "alo novamente x")
197 198
198x = string.gsub("$x=string.gsub('alo', '.', string.upper)$ assim vai para $return x$", 199local x = string.gsub("$x=string.gsub('alo', '.', string.upper)$ assim vai para $return x$",
199 "$([^$]*)%$", dostring) 200 "$([^$]*)%$", dostring)
200assert(x == ' assim vai para ALO') 201assert(x == ' assim vai para ALO')
201 202_G.a, _G.x = nil
202t = {} 203
203s = 'a alo jose joao' 204local t = {}
204r = string.gsub(s, '()(%w+)()', function (a,w,b) 205local s = 'a alo jose joao'
205 assert(string.len(w) == b-a); 206local r = string.gsub(s, '()(%w+)()', function (a,w,b)
206 t[a] = b-a; 207 assert(string.len(w) == b-a);
207 end) 208 t[a] = b-a;
209 end)
208assert(s == r and t[1] == 1 and t[3] == 3 and t[7] == 4 and t[13] == 4) 210assert(s == r and t[1] == 1 and t[3] == 3 and t[7] == 4 and t[13] == 4)
209 211
210 212
211function isbalanced (s) 213local function isbalanced (s)
212 return not string.find(string.gsub(s, "%b()", ""), "[()]") 214 return not string.find(string.gsub(s, "%b()", ""), "[()]")
213end 215end
214 216
@@ -251,7 +253,7 @@ if not _soft then
251end 253end
252 254
253-- recursive nest of gsubs 255-- recursive nest of gsubs
254function rev (s) 256local function rev (s)
255 return string.gsub(s, "(.)(.+)", function (c,s1) return rev(s1)..c end) 257 return string.gsub(s, "(.)(.+)", function (c,s1) return rev(s1)..c end)
256end 258end
257 259