-- Test that metatables are protected from manipulation

-- Test 1: String metatable should return protection value, not actual metatable
local mt = getmetatable("")
if mt ~= "string" then
    error("FAIL: string metatable should return 'string', got " .. tostring(mt))
end

-- Test 2: Cannot add new globals
local ok, err = pcall(function()
    _G.my_new_global = "test"
end)
if ok then
    error("FAIL: Should not be able to add new globals")
end

-- Test 3: Cannot modify existing globals
local ok2, err2 = pcall(function()
    _G.print = nil
end)
if ok2 then
    error("FAIL: Should not be able to modify print")
end

-- Test 4: Cannot replace math table
local ok3, err3 = pcall(function()
    _G.math = {}
end)
if ok3 then
    error("FAIL: Should not be able to replace math")
end

print("PASS: Metatables protected")
