Files
mir_server/Gateway/srvlib/include/luabase/testCLVariant.txt
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

160 lines
7.0 KiB
Plaintext

local function printexpr(expr, match)
local n, e= loadstring("return ("..expr..")")
if not n then
print(e)
else
e = n()
if match and match ~= e then
print("###########################################\n["..expr.."] = "..tostring(e).." not matched for wanted "..tostring(match).."\n###########################################")
else
print("["..expr.."] = "..tostring(e))
end
end
end
function main(sysarg)
var = CCLVariant:new(5)--从数字构造
print(getmetatable(var).__mode)
--__add测试
print("----------------------------------------------------")
printexpr("var + 5", 10) --数字 + 数字 = 数字
printexpr("var + \"abc\"", "5abc") --数字 + 字符串 = 字符串
printexpr("var + CCLVariant:new(6)", 11) --数字 + 数字 = 数字
printexpr("var + CCLVariant:new(\"6\")", 11) --数字 + 数字 = 数字
printexpr("var + \"6\"", 11) --数字 + 数字 = 数字
printexpr("CCLVariant:new(\"ABC\") + CCLVariant:new(6)", "ABC6") --数字 + 字符串 = 字符串
printexpr("CCLVariant:new(\"ABC\") + CCLVariant:new(\"XYZ\")", "ABCXYZ")--字符串 + 字符串 = 字符串
--__sub测试
print("----------------------------------------------------")
printexpr("var - 2", 3)
printexpr("var - \"abc\"", 5)
printexpr("var - \"3\"", 2)
printexpr("var - CCLVariant:new(8)", -3)
printexpr("var - CCLVariant:new(\"8\")", -3)
printexpr("CCLVariant:new(\"abc\") - CCLVariant:new(8)", nil)
printexpr("CCLVariant:new(\"abc\") - CCLVariant:new(\"xyz\")", nil)
--__mul测试
print("----------------------------------------------------")
printexpr("var * 2", 10)
printexpr("var * \"abc\"", 0)
printexpr("var * \"3\"", 15)
printexpr("var * CCLVariant:new(8)", 40)
printexpr("var * CCLVariant:new(\"8\")", 40)
printexpr("CCLVariant:new(\"abc\") * CCLVariant:new(8)", nil)
printexpr("CCLVariant:new(\"abc\") * CCLVariant:new(\"xyz\")", nil)
--__div测试
print("----------------------------------------------------")
printexpr("var / 2", 2.5)
printexpr("var / \"abc\"", 0)
printexpr("var / \"3\"", 5/3)
printexpr("var / CCLVariant:new(8)", 5/8)
printexpr("var / CCLVariant:new(\"2\")", 2.5)
printexpr("CCLVariant:new(\"abc\") * CCLVariant:new(8)", nil)
printexpr("CCLVariant:new(\"abc\") * CCLVariant:new(\"xyz\")", nil)
--__mod测试
print("----------------------------------------------------")
printexpr("var % 2", 1)
printexpr("var % \"abc\"", 0)
printexpr("var % \"3\"", 2)
printexpr("var % CCLVariant:new(8)", 5)
printexpr("var % CCLVariant:new(\"8\")", 5)
printexpr("CCLVariant:new(\"abc\") % CCLVariant:new(8)", nil)
printexpr("CCLVariant:new(\"abc\") % CCLVariant:new(\"xyz\")", nil)
--__newindex测试
print("----------------------------------------------------")
var.x = 1 --设置成员
var.y = 2
var.size = { width = 100, height = 50 } --从表中设置成员
--__index测试
print("----------------------------------------------------")
printexpr("var.x..\":\"..var.y..\"/\"..var.size.width..\":\"..var.size.height") --读取成员
--[[__call测试
print("----------------------------------------------------")
var.str1 = "hellow 123"
var.uz = 55
var.uz2 = 66
var.uz = nil
var.str2 = "你好"
printexpr("var:test()")--]]
--__eq测试
print("----------------------------------------------------")
printexpr("var.x == var.y", false) --读取成员,原始原始
printexpr("CCLVariant:new(5) == CCLVariant:new(5)", true)
printexpr("CCLVariant:new(5) ~= CCLVariant:new(5)", false)
printexpr("CCLVariant:new(2) == CCLVariant:new(3)", false)
printexpr("CCLVariant:new(2) ~= CCLVariant:new(3)", true)
printexpr("CCLVariant:new(5) == 5", false) --false LUA不支持==、!=、<=、>=的不同类型之间的运算符重载
printexpr("CCLVariant:new(5) ~= 5", true)
printexpr("CCLVariant:new(3) == CCLVariant:new(\"3\")", true)
printexpr("CCLVariant:new(3) ~= CCLVariant:new(\"3\")", false)
printexpr("CCLVariant:new(3) == CCLVariant:new(\"3aa\")", false)
printexpr("CCLVariant:new(3) ~= CCLVariant:new(\"3aa\")", true)
printexpr("CCLVariant:new(\"ABC\") == CCLVariant:new(\"ABC\")", true)
printexpr("CCLVariant:new(\"ABC\") ~= CCLVariant:new(\"ABC\")", false)
printexpr("CCLVariant:new(\"ABC\") == \"ABC\"", false) --false LUA不支持==、!=、<=、>=的不同类型之间的运算符重载
printexpr("CCLVariant:new(\"ABC\") ~= \"ABC\"", true)
printexpr("CCLVariant:new(\"XYZ\") == 3", false) --false LUA不支持==、!=、<=、>=的不同类型之间的运算符重载
printexpr("CCLVariant:new(\"XYZ\") ~= 3", true)
printexpr("3 == CCLVariant:new(3)", false) --false LUA不支持==、!=、<=、>=的不同类型之间的运算符重载
printexpr("3 ~= CCLVariant:new(3)", true)
--__lt测试
print("----------------------------------------------------")
printexpr("CCLVariant:new(5) < CCLVariant:new(5)", false)
printexpr("CCLVariant:new(5) > CCLVariant:new(5)", false)
printexpr("CCLVariant:new(5) < CCLVariant:new(6)", true)
printexpr("CCLVariant:new(5) > CCLVariant:new(6)", false)
printexpr("CCLVariant:new(6) > CCLVariant:new(5)", true)
printexpr("CCLVariant:new(6) < CCLVariant:new(5)", false)
printexpr("CCLVariant:new(5) < CCLVariant:new(\"5\")", false)
printexpr("CCLVariant:new(5) > CCLVariant:new(\"5\")", false)
printexpr("CCLVariant:new(5) < CCLVariant:new(\"6\")", true)
printexpr("CCLVariant:new(5) > CCLVariant:new(\"6\")", false)
printexpr("CCLVariant:new(6) > CCLVariant:new(\"5\")", true)
printexpr("CCLVariant:new(6) < CCLVariant:new(\"5\")", false)
--__le测试
print("----------------------------------------------------")
printexpr("CCLVariant:new(5) <= CCLVariant:new(5)", true)
printexpr("CCLVariant:new(5) >= CCLVariant:new(5)", true)
printexpr("CCLVariant:new(5) <= CCLVariant:new(6)", true)
printexpr("CCLVariant:new(5) >= CCLVariant:new(6)", false)
printexpr("CCLVariant:new(6) >= CCLVariant:new(5)", true)
printexpr("CCLVariant:new(6) <= CCLVariant:new(5)", false)
printexpr("CCLVariant:new(5) <= CCLVariant:new(\"5\")", true)
printexpr("CCLVariant:new(5) >= CCLVariant:new(\"5\")", true)
printexpr("CCLVariant:new(5) <= CCLVariant:new(\"6\")", true)
printexpr("CCLVariant:new(5) >= CCLVariant:new(\"6\")", false)
printexpr("CCLVariant:new(6) >= CCLVariant:new(\"5\")", true)
printexpr("CCLVariant:new(6) <= CCLVariant:new(\"5\")", false)
--__unm测试
print("----------------------------------------------------")
printexpr("-CCLVariant:new(\"35\")", -35)
--__len测试
print("----------------------------------------------------")
printexpr("#var", 3)
--__concat测试
print("----------------------------------------------------")
printexpr("CCLVariant:new(5)..6", "56")
printexpr("CCLVariant:new(\"abcdef\")..CCLVariant:new(\"XYZ\")", "abcdefXYZ")
printexpr("CCLVariant:new(\"abcdef\")..\"123\"", "abcdef123")
printexpr("CCLVariant:new(\"abcdef\")..654", "abcdef654")
var = nil
collectgarbage("collect")
end