113 lines
2.9 KiB
Lua
113 lines
2.9 KiB
Lua
![]() |
mg.write("HTTP/1.0 200 OK\r\n")
|
||
|
mg.write("Connection: close\r\n")
|
||
|
mg.write("Cache-Control: no-cache, no-store, must-revalidate, max-age=0\r\n")
|
||
|
mg.write("Content-Type: text/plain\r\n")
|
||
|
mg.write("\r\n")
|
||
|
|
||
|
if not shared then
|
||
|
mg.write("\"shared\" does not exist\n")
|
||
|
return
|
||
|
elseif type(shared) ~= "userdata" then
|
||
|
mg.write("\"shared\" is not userdata\n")
|
||
|
return
|
||
|
end
|
||
|
|
||
|
-- Test with number
|
||
|
mg.write("\nNumber:\n")
|
||
|
x = shared.count
|
||
|
mg.write("Previous count was " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
x = x or 0
|
||
|
x = x + 1
|
||
|
shared.count = x
|
||
|
mg.write("Store new count " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
x = shared.count
|
||
|
mg.write("New count is " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
|
||
|
-- Test with name
|
||
|
mg.write("\nString:\n")
|
||
|
x = shared.name
|
||
|
mg.write("Previous name was " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
x = x or ""
|
||
|
l = string.len(x) % 26
|
||
|
x = x .. string.char(string.byte("a") + l)
|
||
|
shared.name = x
|
||
|
mg.write("Store new name " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
x = shared.name
|
||
|
mg.write("New name is " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
|
||
|
|
||
|
-- Test with boolean
|
||
|
mg.write("\nBoolean:\n")
|
||
|
x = shared.condition
|
||
|
mg.write("Previous condition was " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
x = not x
|
||
|
shared.condition = x
|
||
|
mg.write("Store new condition " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
x = shared.condition
|
||
|
mg.write("New condition is " .. tostring(x) .. " (type " .. type(x) .. ")\n")
|
||
|
|
||
|
|
||
|
-- Test using "shared" as array
|
||
|
mg.write("\nArray element:\n")
|
||
|
mg.write("Previous array was: ")
|
||
|
for i=1,10 do
|
||
|
x = shared[i]
|
||
|
mg.write(tostring(x) .. " (" .. type(x):sub(1,1) .. ") ")
|
||
|
end
|
||
|
mg.write("\n")
|
||
|
for i=1,10 do
|
||
|
shared[i] = shared[(i + 1) % 10 + 1] or i
|
||
|
end
|
||
|
mg.write("Shifted array is: ")
|
||
|
for i=1,10 do
|
||
|
x = shared[i]
|
||
|
mg.write(tostring(x) .. " (" .. type(x):sub(1,1) .. ") ")
|
||
|
end
|
||
|
mg.write("\n")
|
||
|
|
||
|
|
||
|
-- Test using "shared" as array
|
||
|
mg.write("\nBoolean indexed element:\n")
|
||
|
x = shared[true]
|
||
|
y = shared[false]
|
||
|
mg.write("Previous elements were "
|
||
|
.. tostring(x) .. " (type " .. type(x) .. ") / "
|
||
|
.. tostring(y) .. " (type " .. type(y) .. ")\n")
|
||
|
x = not x
|
||
|
y = not x
|
||
|
shared[true] = x
|
||
|
shared[false] = y
|
||
|
mg.write("New elements are "
|
||
|
.. tostring(x) .. " (type " .. type(x) .. ") / "
|
||
|
.. tostring(y) .. " (type " .. type(y) .. ")\n")
|
||
|
|
||
|
|
||
|
-- Check if experimental functions (starting with __) are available
|
||
|
if not shared.__inc then
|
||
|
mg.write("\nExperimental functions not available\n")
|
||
|
return
|
||
|
else
|
||
|
mg.write("\nTesting experimental functions\n")
|
||
|
end
|
||
|
|
||
|
|
||
|
-- Test __inc/__dec functions
|
||
|
if not shared.x then
|
||
|
shared.x = 0
|
||
|
shared.y = 0
|
||
|
end
|
||
|
mg.write("__inc(x) = " .. shared.__inc("x") .. "\n")
|
||
|
mg.write("__dec(y) = " .. shared.__dec("y") .. "\n")
|
||
|
|
||
|
|
||
|
-- Test __add function
|
||
|
if not shared.x then
|
||
|
shared.x = 0
|
||
|
shared.y = 0
|
||
|
end
|
||
|
mg.write("__add(x, 10) = " .. shared.__add("x", 10) .. "\n")
|
||
|
mg.write("__add(y, -10) = " .. shared.__add("y", -10) .. "\n")
|
||
|
|
||
|
|
||
|
-- end
|