summaryrefslogtreecommitdiff
path: root/testes/api.lua
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-06-25 17:38:58 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-06-25 17:38:58 -0300
commit4487c28ced3dcf47c3ee19b6f6eeb0089ec64ba5 (patch)
treeddbbcea4caa8b8e8cfe1cbc578ac162033a2425d /testes/api.lua
parent05ba2880491fa1ecfe78d8a3542edcd6220e4022 (diff)
downloadlua-github-4487c28ced3dcf47c3ee19b6f6eeb0089ec64ba5.tar.gz
A few more tests for table access in the API
Added tests where the table being accessed is also the index or value in the operation.
Diffstat (limited to 'testes/api.lua')
-rw-r--r--testes/api.lua48
1 files changed, 47 insertions, 1 deletions
diff --git a/testes/api.lua b/testes/api.lua
index bcc04dac..8f4e89ac 100644
--- a/testes/api.lua
+++ b/testes/api.lua
@@ -498,7 +498,53 @@ do -- getp/setp
local a = {}
T.testC("rawsetp 2 1", a, 20)
assert(a[T.pushuserdata(1)] == 20)
- assert(T.testC("rawgetp 2 1; return 1", a) == 20)
+ assert(T.testC("rawgetp -1 1; return 1", a) == 20)
+end
+
+
+do -- using the table itself as index
+ local a = {}
+ a[a] = 10
+ local prog = "gettable -1; return *"
+ local res = {T.testC(prog, a)}
+ assert(#res == 2 and res[1] == prog and res[2] == 10)
+
+ local prog = "settable -2; return *"
+ local res = {T.testC(prog, a, 20)}
+ assert(a[a] == 20)
+ assert(#res == 1 and res[1] == prog)
+
+ -- raw
+ a[a] = 10
+ local prog = "rawget -1; return *"
+ local res = {T.testC(prog, a)}
+ assert(#res == 2 and res[1] == prog and res[2] == 10)
+
+ local prog = "rawset -2; return *"
+ local res = {T.testC(prog, a, 20)}
+ assert(a[a] == 20)
+ assert(#res == 1 and res[1] == prog)
+
+ -- using the table as the value to set
+ local prog = "rawset -1; return *"
+ local res = {T.testC(prog, 30, a)}
+ assert(a[30] == a)
+ assert(#res == 1 and res[1] == prog)
+
+ local prog = "settable -1; return *"
+ local res = {T.testC(prog, 40, a)}
+ assert(a[40] == a)
+ assert(#res == 1 and res[1] == prog)
+
+ local prog = "rawseti -1 100; return *"
+ local res = {T.testC(prog, a)}
+ assert(a[100] == a)
+ assert(#res == 1 and res[1] == prog)
+
+ local prog = "seti -1 200; return *"
+ local res = {T.testC(prog, a)}
+ assert(a[200] == a)
+ assert(#res == 1 and res[1] == prog)
end
a = {x=0, y=12}