You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1404 lines
58 KiB

require("ltest.init")
require "libtdrlua"
pkg_table = {
head = {
magic = 0x7FFF,
msgid = 10000001,
cmd = 1,
version = 0,
bodyLen = 0,
datetime = libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"),
srcIp = libtdrlua.str2tdrip("127.0.0.1"),
},
body = {
login = {
name = "FrancisHe",
pass = "123456",
zone = "Japan",
destIp = libtdrlua.str2tdrip("127.0.0.1"),
},
logout = {
reason = -1,
count = 2,
attr = {-1, 0, 1},
},
xxx = {
typeTester = {
date = libtdrlua.str2tdrdate("2015-09-08"),
time = libtdrlua.str2tdrtime("22:17:59"),
int8 = -1,
uint8Array = {0, 23, 255},
int8VarArrayRefer = 2,
int8VarArray = {-128, 127 ,0},
int = -6, -- -6.6
uintArray = {0, 1721, 0xFFFFFFFF},
intVarArrayRefer = 1, -- 0
intVarArray = {-0x80000000, 0x7FFFFFFF, 0},
strArray = {"Francis", "Francis"},
uint64 = 0xFFFFFFFFFFFFF, -- 1(s) + 11(e) + 52(m)
int64Array = {-0x8000000000000000, 0xFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF},
float = 0xFFFFFFFF,
floatArray = {-3.40282346e+38, 1.17549435e-38, 3.40282346e+38}, -- 3.40282347e+38
double = 2.2250738585072014e-308,
doubleArray = {-1.7976931348623157e+308, -2.2250738585072014e-308, 1.7976931348623157e+308},
},
boundary = -1.1,
selector = 1,
innerUnion = {
field1 = {
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0,
}
}
},
structArray = {
count = 1, -- 0
array = {
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
}
},
boundary2 = 1.111111,
},
ext1 = -1,
ext2 = {0, 1, 2},
ext3 = {"Francis", "Francis"},
ext4 = "Francis",
}
}
pkg_table_v4 = {
head = {
magic = 0x7FFF,
msgid = 10000001,
cmd = 1,
version = 0,
bodyLen = 0,
datetime = libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"),
srcIp = libtdrlua.str2tdrip("127.0.0.1"),
destIp = libtdrlua.str2tdrip("127.0.0.2"),
},
body = {
login = {
name = "FrancisHe",
pass = "123456",
zone = "Japan",
destIp = libtdrlua.str2tdrip("127.0.0.1"),
},
logout = {
reason = -1,
count = 2,
attr = {-1, 0, 1},
},
xxx = {
typeTester = {
date = libtdrlua.str2tdrdate("2015-09-08"),
time = libtdrlua.str2tdrtime("22:17:59"),
int8 = -1,
uint8Array = {0, 23, 255},
int8VarArrayRefer = 2,
int8VarArray = {-128, 127 ,0},
int = -6, -- -6.6
uintArray = {0, 1721, 0xFFFFFFFF},
intVarArrayRefer = 1, -- 0
intVarArray = {-0x80000000, 0x7FFFFFFF, 0},
strArray = {"Francis", "Francis"},
uint64 = 0xFFFFFFFFFFFFF, -- 1(s) + 11(e) + 52(m)
int64Array = {-0x8000000000000000, 0xFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF},
float = 0xFFFFFFFF,
floatArray = {-3.40282346e+38, 1.17549435e-38, 3.40282346e+38}, -- 3.40282347e+38
double = 2.2250738585072014e-308,
doubleArray = {-1.7976931348623157e+308, -2.2250738585072014e-308, 1.7976931348623157e+308},
},
boundary = -1.1,
selector = 1,
innerUnion = {
field1 = {
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0,
}
}
},
structArray = {
count = 1, -- 0
array = {
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
{
uint64 = 0x0FFFFFFFFFFFFFFF,
uint = 0xFFFFFFFF,
},
}
},
boundary2 = 1.111111,
},
ext1 = -1,
ext2 = {0, 1, 2},
ext3 = {"Francis", "Francis"},
ext4 = "Francis",
}
}
function copyTab(st)
local tab = {}
for k, v in pairs(st or {}) do
if type(v) ~= "table" then
tab[k] = v
else
tab[k] = copyTab(v)
end
end
return tab
end
local function table_to_string(t)
local ret = ''
local ltype = type(t)
if (ltype == 'table') then
ret = ret .. '{ '
for key,value in pairs(t) do
ret = ret .. tostring(key) .. '=' .. table_to_string(value) .. ' '
end
ret = ret .. '}'
elseif ltype == 'string' then
ret = ret .. "'" .. tostring(t) .. "'"
else
ret = ret .. tostring(t)
end
return ret
end
-- for test case
CMyTestCaseLuaTdr = TestCase:new()
function CMyTestCaseLuaTdr:new(oo)
local o = oo or {}
o.count = 1
setmetatable(o, self)
self.__index = self
return o
end
function CMyTestCaseLuaTdr.SetUpTestCase(self)
self.count = 1 + self.count
print("CMyTestCaseLuaTdr.SetUpTestCase")
end
function CMyTestCaseLuaTdr.TearDownTestCase(self)
self.count = 1 + self.count
print("CMyTestCaseLuaTdr.TearDownTestCase")
end
function CMyTestCaseLuaTdr.SetUp(self)
self.count = 1 + self.count
print("CMyTestCaseLuaTdr.SetUp")
end
function CMyTestCaseLuaTdr.TearDown(self)
self.count = 1 + self.count
print("CMyTestCaseLuaTdr.TearDown")
end
function CMyTestCaseLuaTdr.LoadMetalib(self, load_type, file_path, cmd)
--加载meta元数据库
local ret_code, metalib
if load_type == 0 then
ret_code, metalib = libtdrlua.load_metalib(file_path)
if ret_code ~= 0 then
print("libtdrlua.load_metalib() failed: " .. metalib)
end
end
if load_type == 1 then
local tdrmeta = CS.UnityEngine.Resources.Load(file_path).bytes
ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
if ret_code ~= 0 then
print("libtdrlua.load_metalib_buf() failed: " .. metalib)
end
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.load_metalib ok")
--获取最大meta buff size
local ret_code, buf_size = libtdrlua.metamaxbufsize(metalib, "Pkg")
if ret_code ~= 0 then
print("libtdrlua.metamaxbufsize() failed: " .. buf_size)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.metamaxbufsize() ok: buf_size = " .. buf_size)
--分配buff
local ret_code, buf = libtdrlua.bufalloc(buf_size)
if ret_code ~= 0 then
print("libtdrlua.bufalloc() failed: " .. buf)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.bufalloc() ok")
print( "pkg = " .. table_to_string(pkg_table))
------------------------------------------------------------------------
-- API - get_meta
-- return value - ret_code, meta/err_msg
----------------------------------------------------------------------
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
if ret_code ~= 0 then
print("libtdrlua.get_meta() failed: " .. meta)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.get_meta() ok")
pkg_table.head.cmd = cmd
----------------------------------------------------------------------
-- API - table2buf
-- return value - ret_code, used_size/err_msg
----------------------------------------------------------------------
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
if ret_code ~= 0 then
print("libtdrlua.table2buf() failed: " .. used_size)
libtdrlua.buffree(buf)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.table2buf() ok, used_size = " .. used_size)
----------------------------------------------------------------------
-- API - buf2str
-- return value - ret_code, str/err_msg
----------------------------------------------------------------------
local ret_code, str = libtdrlua.buf2str(buf, used_size)
if ret_code ~= 0 then
print("libtdrlua.buf2str() failed: " .. str)
libtdrlua.buffree(buf)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.buf2str() ok")
print("buf2str:" .. str)
----------------------------------------------------------------------
-- API - buf2table
-- return value - ret_code, pkg_table, used_size/err_msg
----------------------------------------------------------------------
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size, 0)
if ret_code ~= 0 then
print("libtdrlua.buf2table() failed: " .. used_size2)
print(DataDumper(pkg_table2, "pkg2 = "))
libtdrlua.buffree(buf)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.buf2table() ok, used_size = " .. used_size2)
print("unpakc pkg = ", table_to_string(pkg_table2))
--print(DataDumper(pkg_table2, "pkg2 = "))
--因为str为空,所以会引起Unity crash
----------------------------------------------------------------------
-- API - str2table
-- return value - ret_code, pkg_table, used_size/err_msg
----------------------------------------------------------------------
local ret_code, pkg_table3, used_size3 = libtdrlua.str2table(meta, str, 0)
if ret_code ~= 0 then
print("libtdrlua.str2table() failed: " .. used_size3)
print(DataDumper(pkg_table3, "pkg3 = "))
libtdrlua.buffree(buf)
end
ASSERT_EQ(ret_code, 0)
print("libtdrlua.str2table() ok, used_size = " .. used_size3)
print("str2buf unpack pkg = ", table_to_string(pkg_table2))
----------------------------------------------------------------------
-- API - buffree
-- return value - nil/err_msg
----------------------------------------------------------------------
local err_msg = libtdrlua.buffree(buf)
if err_msg ~= nil then
print("libtdrlua.buffree() failed: " .. err_msg)
end
print("libtdrlua.buffree() ok")
ASSERT_EQ(err_msg, nil)
----------------------------------------------------------------------
-- API - free_metalib
-- return value - nil/err_msg
-- Note: metalib will be automatically released by lua gc. Thus, this
-- step is optional.
----------------------------------------------------------------------
local err_msg = libtdrlua.free_metalib(metalib)
if err_msg ~= nil then
print("libtdrlua.free_metalib() failed: " .. err_msg)
end
print("libtdrlua.free_metalib() ok")
ASSERT_EQ(err_msg, nil)
return pkg_table2, pkg_table3
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_1(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2, pkg_table3 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 1)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
--ASSERT_EQ(tostring(pkg_table2.head.bodyLen),"39")
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
ASSERT_EQ(pkg_table3.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table3.head.msgid), "10000001")
ASSERT_EQ(pkg_table3.head.cmd, 1)
ASSERT_EQ(pkg_table3.head.version, 3)
ASSERT_EQ(pkg_table3.head.bodyLen, 39)
--ASSERT_EQ(tostring(pkg_table3.head.bodyLen),"39")
ASSERT_EQ(pkg_table3.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table3.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table3.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table3.body.login.pass, "123456")
ASSERT_EQ(pkg_table3.body.login.zone, "Japan")
ASSERT_EQ(pkg_table3.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table3.body.ext1, nil)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_1(self)
self.count = 1 + self.count
pkg_table2, pkg_table3 = self:LoadMetalib(1, "testxxx.tdr", 1)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
ASSERT_EQ(pkg_table3.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table3.head.msgid), "10000001")
ASSERT_EQ(pkg_table3.head.cmd, 1)
ASSERT_EQ(pkg_table3.head.version, 3)
ASSERT_EQ(pkg_table3.head.bodyLen, 39)
ASSERT_EQ(pkg_table3.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table3.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table3.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table3.body.login.pass, "123456")
ASSERT_EQ(pkg_table3.body.login.zone, "Japan")
ASSERT_EQ(pkg_table3.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table3.body.ext1, nil)
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_2(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2, pkg_table3 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 2)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 2)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 16)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(tostring(pkg_table2.body.logout.reason + 1), "0")
ASSERT_EQ(pkg_table2.body.logout.count, 2)
ASSERT_EQ(pkg_table2.body.logout.attr, {-1, 0})
ASSERT_EQ(pkg_table2.body.ext1, nil)
ASSERT_EQ(pkg_table3.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table3.head.msgid), "10000001")
ASSERT_EQ(pkg_table3.head.cmd, 2)
ASSERT_EQ(pkg_table3.head.version, 3)
ASSERT_EQ(pkg_table3.head.bodyLen, 16)
ASSERT_EQ(pkg_table3.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table3.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table3.body.login, nil)
ASSERT_EQ(tostring(pkg_table3.body.logout.reason + 1), "0")
ASSERT_EQ(pkg_table3.body.logout.count, 2)
ASSERT_EQ(pkg_table3.body.logout.attr, {-1, 0})
ASSERT_EQ(pkg_table3.body.ext1, nil)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_2(self)
self.count = 1 + self.count
pkg_table2, pkg_table3 = self:LoadMetalib(1, "testxxx.tdr", 2)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 2)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 16)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
local ret = -1
ASSERT_EQ(ret, -1)
ASSERT_EQ(tostring(pkg_table2.body.logout.reason + 1), "0")
ASSERT_EQ(pkg_table2.body.logout.count, 2)
ASSERT_EQ(pkg_table2.body.logout.attr, {-1, 0})
ASSERT_EQ(pkg_table2.body.ext1, nil)
ASSERT_EQ(pkg_table3.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table3.head.msgid), "10000001")
ASSERT_EQ(pkg_table3.head.cmd, 2)
ASSERT_EQ(pkg_table3.head.version, 3)
ASSERT_EQ(pkg_table3.head.bodyLen, 16)
ASSERT_EQ(pkg_table3.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table3.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table3.body.login, nil)
local ret = -1
ASSERT_EQ(ret, -1)
ASSERT_EQ(tostring(pkg_table3.body.logout.reason + 1), "0")
ASSERT_EQ(pkg_table3.body.logout.count, 2)
ASSERT_EQ(pkg_table3.body.logout.attr, {-1, 0})
ASSERT_EQ(pkg_table3.body.ext1, nil)
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_3(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2, pkg_table3 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 3)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 3)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 222)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(libtdrlua.tdrip2str(pkg_table2.head.srcIp), "127.0.0.1")
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.logout, nil)
ASSERT_EQ(libtdrlua.tdrdate2str(pkg_table2.body.xxx.typeTester.date), "2015-09-08")
ASSERT_EQ(libtdrlua.tdrtime2str(pkg_table2.body.xxx.typeTester.time), " 22:17:59")
ASSERT_EQ(pkg_table2.body.xxx.typeTester.time, libtdrlua.str2tdrtime("22:17:59"))
ASSERT_EQ(pkg_table2.body.xxx.typeTester.int8, -1)
ASSERT_EQ(pkg_table2.body.xxx.typeTester.uint8Array, {0, 23, 255})
ASSERT_EQ(pkg_table2.body.xxx.typeTester.int8VarArrayRefer, 2)
ASSERT_EQ(pkg_table2.body.xxx.typeTester.int8VarArray, {-128, 127})
--ASSERT_EQ(pkg_table2.body.xxx.typeTester.uintArray, {0, 1721, 0xFFFFFFFF}) --测试不过,0xFFFFFFFF解包后变长了0x80000000
ASSERT_EQ(pkg_table2.body.xxx.typeTester.intVarArray, {-0x80000000})
ASSERT_EQ(pkg_table2.body.xxx.typeTester.strArray, {"Francis", "Francis"})
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.uint64), "4503599627370495") --0xFFFFFFFFFFFFF
--ASSERT_EQ(pkg_table2.body.xxx.typeTester.int64Array, {-9223372036854775808, 4503599627370495, 9223372036854775807}) --{-0x8000000000000000, 0xFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF},,测试不过,解包后0x7FFFFFFFFFFFFFFF变长了-9223372036854775808
ASSERT_EQ(pkg_table.body.xxx.typeTester.int64Array[3], 0x7FFFFFFFFFFFFFFF)--此处验证打包前是ok的
--ASSERT_EQ(pkg_table2.body.xxx.typeTester.float, 0xFFFFFFFF) --此处验证不过,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table.body.xxx.typeTester.float, 0xFFFFFFFF)--此处验证打包前是ok的
---会存在精度问题,实际为{-3.40282346e+38, 1.17549435e-38, 3.40282346e+38}
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.floatArray[1]), "-3.4028234663853e+38")
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.floatArray[2]), "1.1754943508223e-38")
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.floatArray[3]), "3.4028234663853e+38")
ASSERT_EQ(pkg_table2.body.xxx.typeTester.double, 2.2250738585072014e-308)
ASSERT_EQ(pkg_table2.body.xxx.typeTester.doubleArray, {-1.7976931348623157e+308, -2.2250738585072014e-308, 1.7976931348623157e+308})
ASSERT_EQ(string.sub(tostring(pkg_table2.body.xxx.boundary),1, 4), "-1.1")
ASSERT_EQ(pkg_table2.body.xxx.selector, 1)
print("to_string filed1:" .. table_to_string(pkg_table2.body.xxx.innerUnion.field1[1]))
--ASSERT_EQ(pkg_table2.body.xxx.innerUnion.field1[1], {unit64 = 0x0FFFFFFFFFFFFFFF, uint = 0xFFFFFFFF})
ASSERT_EQ(type(pkg_table.body.xxx.innerUnion.field1[1]), 'table')
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(tostring(pkg_table2.body.xxx.innerUnion.field1[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table2.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(tostring(pkg_table2.body.xxx.innerUnion.field1[2].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
ASSERT_EQ(pkg_table2.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(pkg_table2.body.xxx.structArray.count, 1)
ASSERT_EQ(tostring(pkg_table2.body.xxx.structArray.array[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table2.body.xxx.structArray.array[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table2.body.xxx.structArray.array[2], nil)
ASSERT_EQ(string.sub(tostring(pkg_table2.body.xxx.boundary2),1, 8), "1.111111")
ASSERT_EQ(pkg_table3.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table3.head.msgid), "10000001")
ASSERT_EQ(pkg_table3.head.cmd, 3)
ASSERT_EQ(pkg_table3.head.version, 3)
ASSERT_EQ(pkg_table3.head.bodyLen, 222)
ASSERT_EQ(pkg_table3.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(libtdrlua.tdrip2str(pkg_table3.head.srcIp), "127.0.0.1")
ASSERT_EQ(pkg_table3.body.login, nil)
ASSERT_EQ(pkg_table3.body.logout, nil)
ASSERT_EQ(libtdrlua.tdrdate2str(pkg_table3.body.xxx.typeTester.date), "2015-09-08")
ASSERT_EQ(libtdrlua.tdrtime2str(pkg_table3.body.xxx.typeTester.time), " 22:17:59")
ASSERT_EQ(pkg_table3.body.xxx.typeTester.time, libtdrlua.str2tdrtime("22:17:59"))
ASSERT_EQ(pkg_table3.body.xxx.typeTester.int8, -1)
ASSERT_EQ(pkg_table3.body.xxx.typeTester.uint8Array, {0, 23, 255})
ASSERT_EQ(pkg_table3.body.xxx.typeTester.int8VarArrayRefer, 2)
ASSERT_EQ(pkg_table3.body.xxx.typeTester.int8VarArray, {-128, 127})
--ASSERT_EQ(pkg_table3.body.xxx.typeTester.uintArray, {0, 1721, 0xFFFFFFFF}) --测试不过,0xFFFFFFFF解包后变长了0x80000000
ASSERT_EQ(pkg_table3.body.xxx.typeTester.intVarArray, {-0x80000000})
ASSERT_EQ(pkg_table3.body.xxx.typeTester.strArray, {"Francis", "Francis"})
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.uint64), "4503599627370495") --0xFFFFFFFFFFFFF
--ASSERT_EQ(pkg_table3.body.xxx.typeTester.int64Array, {-9223372036854775808, 4503599627370495, 9223372036854775807}) --{-0x8000000000000000, 0xFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF},,测试不过,解包后0x7FFFFFFFFFFFFFFF变长了-9223372036854775808
ASSERT_EQ(pkg_table.body.xxx.typeTester.int64Array[3], 0x7FFFFFFFFFFFFFFF)--此处验证打包前是ok的
--ASSERT_EQ(pkg_table3.body.xxx.typeTester.float, 0xFFFFFFFF) --此处验证不过,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table.body.xxx.typeTester.float, 0xFFFFFFFF)--此处验证打包前是ok的
---会存在精度问题,实际为{-3.40282346e+38, 1.17549435e-38, 3.40282346e+38}
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.floatArray[1]), "-3.4028234663853e+38")
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.floatArray[2]), "1.1754943508223e-38")
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.floatArray[3]), "3.4028234663853e+38")
ASSERT_EQ(pkg_table3.body.xxx.typeTester.double, 2.2250738585072014e-308)
ASSERT_EQ(pkg_table3.body.xxx.typeTester.doubleArray, {-1.7976931348623157e+308, -2.2250738585072014e-308, 1.7976931348623157e+308})
ASSERT_EQ(string.sub(tostring(pkg_table3.body.xxx.boundary),1, 4), "-1.1")
ASSERT_EQ(pkg_table3.body.xxx.selector, 1)
print("to_string filed1:" .. table_to_string(pkg_table3.body.xxx.innerUnion.field1[1]))
--ASSERT_EQ(pkg_table3.body.xxx.innerUnion.field1[1], {unit64 = 0x0FFFFFFFFFFFFFFF, uint = 0xFFFFFFFF})
ASSERT_EQ(type(pkg_table.body.xxx.innerUnion.field1[1]), 'table')
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(tostring(pkg_table3.body.xxx.innerUnion.field1[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table3.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(tostring(pkg_table3.body.xxx.innerUnion.field1[2].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
ASSERT_EQ(pkg_table3.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(pkg_table3.body.xxx.structArray.count, 1)
ASSERT_EQ(tostring(pkg_table3.body.xxx.structArray.array[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table3.body.xxx.structArray.array[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table3.body.xxx.structArray.array[2], nil)
ASSERT_EQ(string.sub(tostring(pkg_table3.body.xxx.boundary2),1, 8), "1.111111")
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_3(self)
self.count = 1 + self.count
pkg_table2, pkg_table3 = self:LoadMetalib(1, "testxxx.tdr", 3)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 3)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 222)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.logout, nil)
ASSERT_EQ(libtdrlua.tdrdate2str(pkg_table2.body.xxx.typeTester.date), "2015-09-08")
ASSERT_EQ(libtdrlua.tdrtime2str(pkg_table2.body.xxx.typeTester.time), " 22:17:59")
ASSERT_EQ(pkg_table2.body.xxx.typeTester.time, libtdrlua.str2tdrtime("22:17:59"))
ASSERT_EQ(pkg_table2.body.xxx.typeTester.int8, -1)
ASSERT_EQ(pkg_table2.body.xxx.typeTester.uint8Array, {0, 23, 255})
ASSERT_EQ(pkg_table2.body.xxx.typeTester.int8VarArrayRefer, 2)
ASSERT_EQ(pkg_table2.body.xxx.typeTester.int8VarArray, {-128, 127})
ASSERT_EQ(pkg_table.body.xxx.typeTester.uintArray, {0, 1721, 0xFFFFFFFF})
--ASSERT_EQ(pkg_table2.body.xxx.typeTester.uintArray, {0, 1721, 0xFFFFFFFF}) --测试不过,0xFFFFFFFF解包后变长了0x80000000
ASSERT_EQ(pkg_table2.body.xxx.typeTester.intVarArray, {-0x80000000})
ASSERT_EQ(pkg_table2.body.xxx.typeTester.strArray, {"Francis", "Francis"})
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.uint64), "4503599627370495") --0xFFFFFFFFFFFFF
--ASSERT_EQ(pkg_table2.body.xxx.typeTester.int64Array, {-9223372036854775808, 4503599627370495, 9223372036854775807}) --{-0x8000000000000000, 0xFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF},,测试不过,解包后0x7FFFFFFFFFFFFFFF变长了-9223372036854775808
ASSERT_EQ(pkg_table.body.xxx.typeTester.int64Array[3], 0x7FFFFFFFFFFFFFFF)--此处验证打包前是ok的
--ASSERT_EQ(pkg_table2.body.xxx.typeTester.float, 0xFFFFFFFF) --此处验证不过,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table.body.xxx.typeTester.float, 0xFFFFFFFF)--此处验证打包前是ok的
---会存在精度问题,实际为{-3.40282346e+38, 1.17549435e-38, 3.40282346e+38}
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.floatArray[1]), "-3.4028234663853e+38")
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.floatArray[2]), "1.1754943508223e-38")
ASSERT_EQ(tostring(pkg_table2.body.xxx.typeTester.floatArray[3]), "3.4028234663853e+38")
ASSERT_EQ(pkg_table2.body.xxx.typeTester.double, 2.2250738585072014e-308)
ASSERT_EQ(pkg_table2.body.xxx.typeTester.doubleArray, {-1.7976931348623157e+308, -2.2250738585072014e-308, 1.7976931348623157e+308})
ASSERT_EQ(string.sub(tostring(pkg_table2.body.xxx.boundary),1, 4), "-1.1")
ASSERT_EQ(pkg_table2.body.xxx.selector, 1)
print("to_string filed1:" .. table_to_string(pkg_table2.body.xxx.innerUnion.field1[1]))
--ASSERT_EQ(pkg_table2.body.xxx.innerUnion.field1[1], {unit64 = 0x0FFFFFFFFFFFFFFF, uint = 0xFFFFFFFF})
ASSERT_EQ(type(pkg_table.body.xxx.innerUnion.field1[1]), 'table')
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(tostring(pkg_table2.body.xxx.innerUnion.field1[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table2.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(tostring(pkg_table2.body.xxx.innerUnion.field1[2].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
ASSERT_EQ(pkg_table2.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(pkg_table2.body.xxx.structArray.count, 1)
ASSERT_EQ(tostring(pkg_table2.body.xxx.structArray.array[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table2.body.xxx.structArray.array[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table2.body.xxx.structArray.array[2], nil)
ASSERT_EQ(string.sub(tostring(pkg_table2.body.xxx.boundary2),1, 8), "1.111111")
ASSERT_EQ(pkg_table3.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table3.head.msgid), "10000001")
ASSERT_EQ(pkg_table3.head.cmd, 3)
ASSERT_EQ(pkg_table3.head.version, 3)
ASSERT_EQ(pkg_table3.head.bodyLen, 222)
ASSERT_EQ(pkg_table3.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(libtdrlua.tdrip2str(pkg_table3.head.srcIp), "127.0.0.1")
ASSERT_EQ(pkg_table3.body.login, nil)
ASSERT_EQ(pkg_table3.body.logout, nil)
ASSERT_EQ(libtdrlua.tdrdate2str(pkg_table3.body.xxx.typeTester.date), "2015-09-08")
ASSERT_EQ(libtdrlua.tdrtime2str(pkg_table3.body.xxx.typeTester.time), " 22:17:59")
ASSERT_EQ(pkg_table3.body.xxx.typeTester.time, libtdrlua.str2tdrtime("22:17:59"))
ASSERT_EQ(pkg_table3.body.xxx.typeTester.int8, -1)
ASSERT_EQ(pkg_table3.body.xxx.typeTester.uint8Array, {0, 23, 255})
ASSERT_EQ(pkg_table3.body.xxx.typeTester.int8VarArrayRefer, 2)
ASSERT_EQ(pkg_table3.body.xxx.typeTester.int8VarArray, {-128, 127})
--ASSERT_EQ(pkg_table3.body.xxx.typeTester.uintArray, {0, 1721, 0xFFFFFFFF}) --测试不过,0xFFFFFFFF解包后变长了0x80000000
ASSERT_EQ(pkg_table3.body.xxx.typeTester.intVarArray, {-0x80000000})
ASSERT_EQ(pkg_table3.body.xxx.typeTester.strArray, {"Francis", "Francis"})
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.uint64), "4503599627370495") --0xFFFFFFFFFFFFF
--ASSERT_EQ(pkg_table3.body.xxx.typeTester.int64Array, {-9223372036854775808, 4503599627370495, 9223372036854775807}) --{-0x8000000000000000, 0xFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF},,测试不过,解包后0x7FFFFFFFFFFFFFFF变长了-9223372036854775808
ASSERT_EQ(pkg_table.body.xxx.typeTester.int64Array[3], 0x7FFFFFFFFFFFFFFF)--此处验证打包前是ok的
--ASSERT_EQ(pkg_table3.body.xxx.typeTester.float, 0xFFFFFFFF) --此处验证不过,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table.body.xxx.typeTester.float, 0xFFFFFFFF)--此处验证打包前是ok的
---会存在精度问题,实际为{-3.40282346e+38, 1.17549435e-38, 3.40282346e+38}
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.floatArray[1]), "-3.4028234663853e+38")
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.floatArray[2]), "1.1754943508223e-38")
ASSERT_EQ(tostring(pkg_table3.body.xxx.typeTester.floatArray[3]), "3.4028234663853e+38")
ASSERT_EQ(pkg_table3.body.xxx.typeTester.double, 2.2250738585072014e-308)
ASSERT_EQ(pkg_table3.body.xxx.typeTester.doubleArray, {-1.7976931348623157e+308, -2.2250738585072014e-308, 1.7976931348623157e+308})
ASSERT_EQ(string.sub(tostring(pkg_table3.body.xxx.boundary),1, 4), "-1.1")
ASSERT_EQ(pkg_table3.body.xxx.selector, 1)
print("to_string filed1:" .. table_to_string(pkg_table3.body.xxx.innerUnion.field1[1]))
--ASSERT_EQ(pkg_table3.body.xxx.innerUnion.field1[1], {unit64 = 0x0FFFFFFFFFFFFFFF, uint = 0xFFFFFFFF})
ASSERT_EQ(type(pkg_table.body.xxx.innerUnion.field1[1]), 'table')
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint64, 0x0FFFFFFFFFFFFFFF)
ASSERT_EQ(pkg_table.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(tostring(pkg_table3.body.xxx.innerUnion.field1[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table3.body.xxx.innerUnion.field1[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(tostring(pkg_table3.body.xxx.innerUnion.field1[2].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
ASSERT_EQ(pkg_table3.body.xxx.innerUnion.field1[2].uint, 0)
ASSERT_EQ(pkg_table3.body.xxx.structArray.count, 1)
ASSERT_EQ(tostring(pkg_table3.body.xxx.structArray.array[1].uint64 - 0x0FFFFFFFFFFFFFFF), "0")
--ASSERT_EQ(pkg_table3.body.xxx.structArray.array[1].uint, 0xFFFFFFFF) --这个值解包后有问题,ASSERT_EQ failed --> left:4294967296, right:4294967295.
ASSERT_EQ(pkg_table3.body.xxx.structArray.array[2], nil)
ASSERT_EQ(string.sub(tostring(pkg_table3.body.xxx.boundary2),1, 8), "1.111111")
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_4(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 4)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 4)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 4)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext1, -1)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_4(self)
self.count = 1 + self.count
pkg_table2 = self:LoadMetalib(1, "testxxx.tdr", 5)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 5)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 4)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext1, -1)
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_5(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 70)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 70)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 3)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext2, {0, 1, 2})
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_5(self)
self.count = 1 + self.count
pkg_table2 = self:LoadMetalib(1, "testxxx.tdr", 80)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 80)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 3)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext2, {0, 1, 2})
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_6(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 75)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 75)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 3)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext2, {0, 1, 2})
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_6(self)
self.count = 1 + self.count
pkg_table2 = self:LoadMetalib(1, "testxxx.tdr", 81)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 81)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 4)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext1, -1)
end
function CMyTestCaseLuaTdr.CaseLoadMetalib_7(self)
self.count = 1 + self.count
if CS.LuaTestCommon.android_platform == true then
return
end
pkg_table2 = self:LoadMetalib(0, CS.LuaTestCommon.xxxtdrfilepath, 15)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 15)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 24)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext3, {"Francis", "Francis"})
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBuff_7(self)
self.count = 1 + self.count
pkg_table2 = self:LoadMetalib(1, "testxxx.tdr", 100)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 100)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 12)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
ASSERT_EQ(pkg_table2.body.ext4, "Francis")
end
function CMyTestCaseLuaTdr.CaseLoadMetalibNoExistTdr(self)
self.count = 1 + self.count
local ret_code, err_msg = libtdrlua.load_metalib("noexist.tdr")
ASSERT_EQ(ret_code, -2113862584)
print("CaseLoadMetalibNoExistTdr err_msg:" .. err_msg)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibErrorTdrFile(self)
self.count = 1 + self.count
local ret_code, err_msg = libtdrlua.load_metalib("test2.lua")
ASSERT_EQ(ret_code, -2113862584)
print("CaseLoadMetalibErrorTdrFile err_msg:" .. err_msg)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibMultiTimes(self)
self.count = 1 + self.count
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
local ret_code2, metalib2 = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(ret_code2, 0)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg2 = libtdrlua.free_metalib(metalib2)
ASSERT_EQ(err_msg2, nil)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibDiffTdrFile(self)
self.count = 1 + self.count
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local tdrmeta2 = CS.UnityEngine.Resources.Load("testxxx2.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
local ret_code2, metalib2 = libtdrlua.load_metalib_buf(tdrmeta2)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(ret_code2, 0)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg2 = libtdrlua.free_metalib(metalib2)
ASSERT_EQ(err_msg2, nil)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBufFromEmptyStr(self)
self.count = 1 + self.count
local ret_code, metalib = libtdrlua.load_metalib_buf("")
ASSERT_EQ(ret_code, -2113862536)
end
function CMyTestCaseLuaTdr.CaseLoadMetalibBufFromNoTdrStr(self)
self.count = 1 + self.count
local ret_code, metalib = libtdrlua.load_metalib_buf("testtdr")
ASSERT_EQ(ret_code, -2113862536)
end
function CMyTestCaseLuaTdr.CaseGetMeta(self)
--加载meta元数据库
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
print("libtdrlua.load_metalib ok")
------------------------------------------------------------------------
-- API - get_meta
-- return value - ret_code, meta/err_msg
----------------------------------------------------------------------
local ret_code, meta = libtdrlua.get_meta(metalib, "PkgBody")
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "PkgNoExist")
ASSERT_EQ(ret_code, -1)
local ret_code, meta = libtdrlua.get_meta(metalib, "PKG_ID")
ASSERT_EQ(ret_code, -1)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseTable2Buf_1(self)
--长度等于实际长度
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
buf_size = 71
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
ASSERT_EQ(ret_code, 0)
pkg_table.head.cmd = 1
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(used_size, buf_size)
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size, 0)
print("table2buf pkg_table2: " .. table_to_string(pkg_table2))
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseTable2Buf_2(self)
--buf 和 len 小于pkg_table实际长度
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
buf_size = 56
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
ASSERT_EQ(ret_code, 0)
pkg_table.head.cmd = 1
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, -2113862654)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseTable2Buf_3(self)
--4.不设置version参数打包
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
local buf_size = 71
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
ASSERT_EQ(ret_code, 0)
pkg_table.head.cmd = 1
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(used_size, buf_size)
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size)
print("table2buf pkg_table2: " .. table_to_string(pkg_table2))
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseTable2Buf_4(self)
--5.version参数值小于等于meta中设置的version
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
local buf_size = 71
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
ASSERT_EQ(ret_code, 0)
pkg_table.head.cmd = 1
--Struct Pkg有设置versionindicator="head.version",因此会按照打包时的version解包,buf2table输入的version不会生效
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 2)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size, 3)
print("table2buf pkg_table2: " .. table_to_string(pkg_table2))
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 2)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, 0) --srcIp的version为3
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
local ret_code, meta = libtdrlua.get_meta(metalib, "PkgHead")
ASSERT_EQ(ret_code, 0)
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table.head, buf, buf_size, 3)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size, 2)
print("table2buf pkghead pkg_table2: " .. table_to_string(pkg_table2))
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.msgid), "10000001")
ASSERT_EQ(pkg_table2.cmd, 1)
ASSERT_EQ(pkg_table2.version, 2)
ASSERT_EQ(pkg_table2.bodyLen, 0)
ASSERT_EQ(pkg_table2.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.srcIp, 0) --srcIp的version为3
--6.version参数值大于meta中设置的version
local ret_code, pkg_table3, used_size2 = libtdrlua.buf2table(meta, buf, used_size, 4)
print("table2buf pkghead pkg_table3: " .. table_to_string(pkg_table3))
ASSERT_EQ(ret_code, 0)
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table.head, buf, buf_size, 4)
ASSERT_EQ(ret_code, 0)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseBuf2Table_1(self)
--2.len 大于buf长度,version为0
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
buf_size = 128
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
ASSERT_EQ(ret_code, 0)
pkg_table.head.cmd = 1
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size + 10, 0)
print("table2buf pkg_table2: " .. table_to_string(pkg_table2))
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
--3.len小于message(buf)长度
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta, buf, used_size - 10, 0)
ASSERT_EQ(ret_code, -2113862654)
--4.meta和buf中数据结构定义不一致
local ret_code, meta_2 = libtdrlua.get_meta(metalib, "PkgBodyPrevious")
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2, used_size2 = libtdrlua.buf2table(meta_2, buf, used_size, 0)
ASSERT_EQ(ret_code, -2113862552)
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseStr2Buf(self)
--1. str为空
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
local buf_size = 71
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
pkg_table.head.cmd = 1
local ret_code, meta = libtdrlua.get_meta(metalib, "PkgHead")
ASSERT_EQ(ret_code, 0)
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table.head, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
local ret_code, str = libtdrlua.buf2str(buf, used_size)
ASSERT_EQ(ret_code, 0)
local ret_code, err_msg = libtdrlua.str2table(meta, "", 3)
ASSERT_EQ(ret_code, -2113862552)
--3.meta和str中数据结构定义不一致
local ret_code, meta2 = libtdrlua.get_meta(metalib, "PkgBody")
local ret_code, err_msg = libtdrlua.str2table(meta2, str, 0)
ASSERT_EQ(ret_code, -2113862552)
--4. version不设置
local ret_code, pkg_table2 = libtdrlua.str2table(meta, str)
ASSERT_EQ(ret_code, 0)
--5. version小于等于meta中version值
local ret_code, pkg_table3 = libtdrlua.str2table(meta, str, 2)
ASSERT_EQ(ret_code, 0)
--6. version大于meta中version值
local ret_code, pkg_table4 = libtdrlua.str2table(meta, str, 2)
ASSERT_EQ(ret_code, 0)
print("table2buf pkghead pkg_table2: " .. table_to_string(pkg_table2))
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.msgid), "10000001")
ASSERT_EQ(pkg_table2.cmd, 1)
ASSERT_EQ(pkg_table2.version, 3)
ASSERT_EQ(pkg_table2.bodyLen, 0)
ASSERT_EQ(pkg_table2.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseZZZRefer_1(self)
--2 某数组refer的值大于数组count,调用table2buf函数
self.count = 1 + self.count
pkg_table.body.logout.count = 4
pkg_table.head.cmd = 2
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
buf_size = 128
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta = libtdrlua.get_meta(metalib, "Pkg")
ASSERT_EQ(ret_code, 0)
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, -2113862521)
--3 某数组refer的值等于数组count,调用table2buf打包和buf2table解包
pkg_table.body.logout.count = 3
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta, buf, used_size, 0)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 2)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 17)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
local ret = -1
ASSERT_EQ(ret, -1)
ASSERT_EQ(tostring(pkg_table2.body.logout.reason + 1), "0")
ASSERT_EQ(pkg_table2.body.logout.count, 3)
ASSERT_EQ(pkg_table2.body.logout.attr, {-1, 0, 1})
ASSERT_EQ(pkg_table2.body.ext1, nil)
-- 4 某数组refer的值等于0,调用table2buf打包和buf2table解包
pkg_table.body.logout.count = 0
local ret_code, used_size = libtdrlua.table2buf(meta, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta, buf, used_size, 0)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 2)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 14)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.login, nil)
local ret = -1
ASSERT_EQ(ret, -1)
ASSERT_EQ(tostring(pkg_table2.body.logout.reason + 1), "0")
ASSERT_EQ(pkg_table2.body.logout.count, 0)
ASSERT_EQ(pkg_table2.body.logout.attr, {})
ASSERT_EQ(pkg_table2.body.ext1, nil)
pkg_table.body.logout.count = 2
pkg_table.head.cmd = 1
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseZZZZVersion_1(self)
--4.高版本多2个字段,用高版本meta,打包时传入低版本version, 然后用低版本meta解包(version为0)
self.count = 1 + self.count
pkg_table.head.cmd = 1
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib_v3 = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
local tdrmeta2 = CS.UnityEngine.Resources.Load("testxxx2.tdr").bytes
local ret_code, metalib_v4 = libtdrlua.load_metalib_buf(tdrmeta2)
ASSERT_EQ(ret_code, 0)
buf_size = 128
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta_v3 = libtdrlua.get_meta(metalib_v3, "Pkg")
ASSERT_EQ(ret_code, 0)
local ret_code, meta_v4 = libtdrlua.get_meta(metalib_v4, "Pkg")
ASSERT_EQ(ret_code, 0)
local ret_code, used_size = libtdrlua.table2buf(meta_v4, pkg_table_v4, buf, buf_size, 3)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta_v3, buf, used_size, 0)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.head.magic, 32767)
ASSERT_EQ(tostring(pkg_table2.head.msgid), "10000001")
ASSERT_EQ(pkg_table2.head.cmd, 1)
ASSERT_EQ(pkg_table2.head.version, 3)
ASSERT_EQ(pkg_table2.head.bodyLen, 39)
ASSERT_EQ(pkg_table2.head.datetime, libtdrlua.str2tdrdatetime("2015-09-08 21:17:59"))
ASSERT_EQ(pkg_table2.head.srcIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.head.destIp, nil)
ASSERT_EQ(pkg_table2.body.login.name, "FrancisHe")
ASSERT_EQ(pkg_table2.body.login.pass, "123456")
ASSERT_EQ(pkg_table2.body.login.zone, "Japan")
ASSERT_EQ(pkg_table2.body.login.destIp, libtdrlua.str2tdrip("127.0.0.1"))
ASSERT_EQ(pkg_table2.body.ext1, nil)
--1.1 pack低版本(meta对应低版本),unpack高版本(meta对应高版本)
local ret_code, used_size = libtdrlua.table2buf(meta_v3, pkg_table, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta_v4, buf, used_size, 0)
ASSERT_EQ(ret_code, 0)
--1.2 pack高版本,unpack低版本
local ret_code, used_size = libtdrlua.table2buf(meta_v4, pkg_table_v4, buf, buf_size, 0)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta_v3, buf, used_size, 0)
ASSERT_EQ(ret_code, -2113862544)
pkg_table.head.cmd = 1
local err_msg = libtdrlua.free_metalib(metalib_v3)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.free_metalib(metalib_v4)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end
function CMyTestCaseLuaTdr.CaseZZZZRandom(self)
--6.同一个结构类 entry 类型乱序排列,调用table2buf打包和buf2table解包
self.count = 1 + self.count
local tdrmeta = CS.UnityEngine.Resources.Load("testxxx.tdr").bytes
local ret_code, metalib = libtdrlua.load_metalib_buf(tdrmeta)
ASSERT_EQ(ret_code, 0)
buf_size = 128
local ret_code, buf = libtdrlua.bufalloc(buf_size)
ASSERT_EQ(ret_code, 0)
local ret_code, meta_v1 = libtdrlua.get_meta(metalib, "TestInnerStruct1")
ASSERT_EQ(ret_code, 0)
local ret_code, meta_v2 = libtdrlua.get_meta(metalib, "TestInnerStruct2")
ASSERT_EQ(ret_code, 0)
pkg_table_v1 = {
int8 = 127,
double = 2.2250738585072114e-308,
float = 1,
int16 = 32767,
int32Array = {-0x7FFFFFFF, 0, 0x7FFFFFFF},
}
pkg_table_v2 = {
double = 2.2250738585072114e-308,
int8 = 127,
int32Array = {-0x7FFFFFFF, 0, 0x7FFFFFFF},
int16 = 32767,
float = 1,
}
local ret_code, used_size = libtdrlua.table2buf(meta_v1, pkg_table_v1, buf, buf_size, 3)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta_v1, buf, used_size, 0)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.int8, 127)
ASSERT_EQ(pkg_table2.double, 2.2250738585072114e-308)
ASSERT_EQ(pkg_table2.float, 1)
ASSERT_EQ(pkg_table2.int16, 32767)
ASSERT_EQ(pkg_table2.int32Array, {-0x7FFFFFFF, 0, 0x7FFFFFFF})
local ret_code, used_size = libtdrlua.table2buf(meta_v2, pkg_table_v2, buf, buf_size, 3)
ASSERT_EQ(ret_code, 0)
local ret_code, pkg_table2 = libtdrlua.buf2table(meta_v2, buf, used_size, 0)
ASSERT_EQ(ret_code, 0)
ASSERT_EQ(pkg_table2.int8, 127)
ASSERT_EQ(pkg_table2.double, 2.2250738585072114e-308)
ASSERT_EQ(pkg_table2.float, 1)
ASSERT_EQ(pkg_table2.int16, 32767)
ASSERT_EQ(pkg_table2.int32Array, {-0x7FFFFFFF, 0, 0x7FFFFFFF})
local err_msg = libtdrlua.free_metalib(metalib)
ASSERT_EQ(err_msg, nil)
local err_msg = libtdrlua.buffree(buf)
ASSERT_EQ(err_msg, nil)
end