#if !XLUA_GENERAL using UnityEngine; #endif using System.Collections; using System.Collections.Generic; using XLua; using System; using System.IO; public class LuaEnvSingletonForTest { static private LuaEnv instance = null; static public LuaEnv Instance { get { if(instance == null) { instance = new LuaEnv(); #if XLUA_GENERAL instance.DoString("package.path = package.path..';../Test/UnitTest/xLuaTest/CSharpCallLua/Resources/?.lua.txt;../Test/UnitTest/StreamingAssets/?.lua'"); #endif } return instance; } } } public static class GenClass { [CSharpCallLua] public static List mymodule_lua_call_cs_list = new List() { typeof(System.Action), }; } public struct Pedding { public byte c; } [GCOptimize] [LuaCallCSharp] public struct TestStruct { public TestStruct(int p1, int p2) { a = p1; b = p2; c = p2; e.c = (byte)p1; } public int a; public int b; public decimal c; public Pedding e; } [LuaCallCSharp] public class TCForTestCSCallLua{ public static LuaEnv luaEnv = LuaEnvSingletonForTest.Instance; string msg = ""; public void LOG(string text) { msg += text; } string script = @" bValue1 = false bValue2 = true strValueEmpty = '' strValueLong = string.rep('a', 2^10) strValueShort = 'boo123' strValueExp = '.* ? [ ] ^ $~`!@#$%^&()_-+=[];\',““〈〉〖【℃ $ ¤№ ☆ ★■ⅷ②㈣' strValue5 = '\r\na' strValue6 = [[ test this is just a test lua multi lines string ]] strValueChin = '中文字符串' strValueComp = '繁體國陸' strValueHoX = '吙煋呅僦媞這樣孒' sbyteValueMax = 127 sbyteValueMin = -128 byteValueMax = 255 byteValueMin = 0 shortValueMax = 32767 shortValueMin= -32768 ushortValueMax = 65535 ushortValueMid = 32768 intValueMax = 2147483647 intValueMin = -2147483648 uintValueMax = 4294967295 uintValueMid = 2147483648 longValue = 42949672960 longValue2 = -42949672960 ulongValueMax = 42949672961111 ulongValueMin = 0 doubleValue = 3.14159265 doubleValue2 = -3.14159265 floatValue = 3.14159265 floatValue2 = -3.14 charValue = 97 charValue2 = 65 decValue = 12.3111111111 decValue2 = -12.3111111111 intValue3 = 0 intZero = 0 tableValue1 = { key1 = 100000, key2 = 10, key3 = true, 'red', 'yellow', 'green', sub = function(self, a, b) print('tableValue1.sub called') return a - b end, tableValueInclude = { 1,2,3,4,5,6,7,8,9,0 }, tableVarInclude = {ikey1 = 10, ikey2 = 12} } tableValue2 = { kv1 = true, kv2 = 'monday', kv3 = 1 } tableValue3 = { 'apple', 'banana', 'orange', 'kiwi', 'grape', 'lemon', 'strawberry', 'pear' } tableValue4 = { k1= 1, k2= 10, k3 = 100, k4 = 1000, k5 = 10000 } tableValue5 = { [100] = 100, [101] = 1000, [102] = 10000 } tableValue6 = {1,2,3} tableValue7 = { key1 = 'abc', key2 = 10} function func_self_increase() print('func_self_inscrease called') intValue3 = intValue3 + 1; end function func_add_table(a) local sum = 0 for i, v in ipairs(a) do sum = sum + v end return sum end function func_add_2(a) local sum = 0 for i, v in pairs(a) do sum = sum + v end return sum end function func_return_multivalues() local update = false local strShort = 'false' print('intValue3=', intValue3) if intValue3 > 0 then print('in if, intValue3=', intValue3) update = true strShort = 'true' end return update, strShort, {k1 = 11, k2 = 12} end function func_return_multivalues2() local update = false local strShort = 'false' print('intValue3=', intValue3) if intValue3 > 0 then print('in if, intValue3=', intValue3) update = true strShort = 'true' end return update, strShort, {k1 = 11, k2 = 12} end function func_return_func() print('func_return_func called') return func_self_increase end function func_closure() local i = 0 return function() i = i + 1 return i end end function func_multi_params(a, b, c) if a == true then b = b + 1 c = string.lower(c) end return a, b, c end function func_multi_params2(a, b) local sum = 0 if a == true then sum = b + 1 end return func_self_increase, a, sum end function func_multi_params3(b, a) local sum = 0 if a == true then sum = b + 1 end return sum, a end function func_multi_params4(b, a) local sum = 0 if a == true then sum = b + 1 end return sum, a end function func_varparams(...) local arg={...} local sum = 0 print(select('#', ...)) for key, value in ipairs(arg) do sum = sum + value --print(value) --sum = sum + 1 end return sum end function func_readfile(file_name) local hFile = io.open(file_name, r) if hFile then local strContent = hFile:read('*all') print(strContent) return strContent else print('file is not exist') end return nil end function func_return_object(type) if type == 0 then local ret = io.open(CS.LuaTestCommon.xxxtdrfilepath, r) print('open A.lua.txt ret is ', ret) return ret end if type == 1 then return CS.LongStatic.LONG_MAX end if type == 2 then return CS.LongStatic.ULONG_MAX end return 0 end "; public struct TestResult { public bool result; public string msg; public override string ToString() { return "Result: " + result.ToString () + ", Msg:" + msg; } } public TCForTestCSCallLua() { } public void setResult(bool result, string msg, out TestResult resultStruct) { resultStruct.result = result; resultStruct.msg = msg; } public void updateResult(bool result, string msg, ref TestResult resultStruct) { if (resultStruct.result == true) { resultStruct.msg = msg; } else { resultStruct.msg = resultStruct.msg + "\r\n" + msg; } resultStruct.result = result; } public byte[] AddLoader1(ref string filename) { if (filename == "InMemory") { string script = "return {ccc = 9999}"; return System.Text.Encoding.UTF8.GetBytes(script); } return null; } public byte[] AddLoader2(ref string filename) { if (filename == "InFile") { string script = "filestring = 'addloader2'"; return System.Text.Encoding.UTF8.GetBytes (script); } else if (filename == "other") { string script = "error('filename is error')"; return System.Text.Encoding.UTF8.GetBytes (script); } else if (filename == "error_lua") { string script = "maths:abs(-10)"; return System.Text.Encoding.UTF8.GetBytes (script); } return null; } public string listToString(List a) { string result = ""; foreach (int i in a) { result += i.ToString() + ","; } return result.TrimEnd(','); } public string listToStr(List a) { string result = ""; foreach (string i in a) { result += i + ","; } return result.TrimEnd(','); } public TestResult testDoString2LoadLua_Step_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486934,第1步 */ string caseName = "testDoString2LoadLua_Step_1: "; LOG ("*************" + caseName); TestResult result; try { string luaScript = @" --call standard lib require 'math' a = math.abs(-10) print('abs: ', a) "; luaEnv.DoString (luaScript); setResult (true, "pass", out result); } catch(Exception e) { setResult(false, e.Message , out result); } LOG (caseName + result.ToString()); return result; } public TestResult testDoString2LoadLua_Step_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486934,第2步 * */ string caseName = "testDoString2LoadLua_Step_2: "; LOG ("*************" + caseName); TestResult result; try { string luaScript = @" checkFlag = false; a = 100 b = 1000 if a < b then error('error raise') end "; luaEnv.DoString (luaScript); setResult(false, "syntax error should be found, but there is no exception.", out result); } catch(Exception e) { setResult (true, "pass" , out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testDoString2LoadLua_Step_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486934,第3步 * */ string caseName = "testDoString2LoadLua_Step_3: "; LOG ("*************" + caseName); TestResult result; try { string luaScript = @" --call standard lib a = maths.abs(-10) print('abs: ', a) "; luaEnv.DoString (luaScript); setResult(false, "exception should be raised, but there is no exception.", out result); } catch(Exception e) { setResult (true, "pass" , out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testRequire2LoadLua_Step_1_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486935,第1~3,8,9步 */ string caseName = "testRequire2LoadLua_Step_1_3: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString("require 'A'"); luaEnv.DoString("require 'testlua.B';require 'D'"); luaEnv.DoString("require 'empty'"); // luaEnv.DoString ("require 'testlua.main'"); setResult (true, "pass", out result); } catch(Exception e) { setResult(false, e.Message , out result); } string dValue = luaEnv.Global.Get ("strValue"); LOG ("_G.strValue = " + dValue); if (dValue != "D.lua.txt") { setResult (false, result.msg + ", require should require d from Resources, but strValue=" + dValue, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testRequire2LoadLua_Step_4() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486935,第4步 */ string caseName = "testRequire2LoadLua_Step_4: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString ("require 'testlua.main'"); setResult (true, "pass", out result); } catch(Exception e) { setResult(false, e.Message , out result); } string dValue = luaEnv.Global.Get ("strValue"); LOG ("_G.strValue = " + dValue); if (dValue != "D.lua.txt") { setResult (false, result.msg + ", require should require d from Resources, but strValue=" + dValue, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testRequire2LoadLua_Step_5() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486935,第5步 */ string caseName = "testRequire2LoadLua_Step_5: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString ("require 'E'"); setResult(false, "E.lua in Resources path, but be loaded, no exception be raised.", out result); } catch(Exception e) { setResult (true, "pass" , out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testRequire2LoadLua_Step_6() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486935,第6步 */ string caseName = "testRequire2LoadLua_Step_6: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString ("require 'F'"); setResult(false, "F.lua deesn't exist, but no exception be raised.", out result); } catch(Exception e) { setResult (true, "pass" , out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testRequire2LoadLua_Step_7() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486935,第7步 */ string caseName = "testRequire2LoadLua_Step_7: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString ("require 'error'"); setResult(false, "there is syntax errors in error.lua, but no exception be raised.", out result); } catch(Exception e) { setResult (true, "pass" , out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testAddLoader2LoadLua_Step_1_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486936,第1~2,5步 */ string caseName = "testAddLoader2LoadLua_Step_1_2: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.AddLoader(AddLoader1); luaEnv.DoString("inmemory = require('InMemory').ccc"); luaEnv.AddLoader(AddLoader2); luaEnv.DoString("require('InFile')"); luaEnv.AddLoader(AddLoader2); luaEnv.DoString("require('InFile')"); setResult (true, "pass", out result); } catch(Exception e) { setResult(false, e.Message , out result); } LuaTestCommon.Log ("InMemory.ccc=" + luaEnv.Global.Get ("inmemory")); LuaTestCommon.Log("InFile.filestring=" + luaEnv.Global.Get("filestring")); LOG (caseName + result.ToString()); return result; } public TestResult testAddLoader2LoadLua_Step_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486936,第3步 */ string caseName = "testAddLoader2LoadLua_Step_3: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.AddLoader(AddLoader2); luaEnv.DoString(" require('other')"); setResult(false, "AddLoader2 should raise exception, but it doesn't.", out result); } catch(Exception e) { setResult (true, "pass" , out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testAddLoader2LoadLua_Step_6() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486936,第6步 */ string caseName = "testAddLoader2LoadLua_Step_6: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.AddLoader(AddLoader2); luaEnv.DoString(" require('error_lua')"); setResult(false, "AddLoader2 should raise exception, but it doesn't.", out result); } catch(Exception e) { setResult (true, "pass", out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testAddLoader2LoadLua_Step_7() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486936,第7步 */ string caseName = "testAddLoader2LoadLua_Step_7: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.AddLoader(AddLoader2); luaEnv.DoString(@"package.loaded['InFil'] = nil"); luaEnv.DoString("require('InFile')"); setResult (true, "pass", out result); } catch(Exception e) { setResult(false, e.Message , out result); } string filestring = luaEnv.Global.Get ("filestring"); if (filestring != "addloader2") { setResult(false, "shoulde load loader defined, but loadfile in Resources.", out result); } LuaTestCommon.Log ("InFile.filestring=" + filestring); LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeBool_Step_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第1步 */ string caseName = "testGetBasicDataTypeBool_step_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); bool falseVar = luaEnv.Global.Get ("bValue1"); bool trueVar = luaEnv.Global.Get ("bValue2"); LOG ("bValue1=" + falseVar + "; bValue2=" + trueVar); if (falseVar == false && trueVar == true) { setResult (true, "pass", out result); } else { setResult (false, "fail", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeString_Step_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第2步 */ string caseName = "testGetBasicDataTypeString_step_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); string emptyStr = luaEnv.Global.Get ("strValueEmpty"); string longStr = luaEnv.Global.Get ("strValueLong"); string shortStr = luaEnv.Global.Get ("strValueShort"); string expStr = luaEnv.Global.Get ("strValueExp"); string zhuanyiStr = luaEnv.Global.Get ("strValue5"); string linesStr = luaEnv.Global.Get ("strValue6"); string chinStr = luaEnv.Global.Get ("strValueChin"); string compStr = luaEnv.Global.Get ("strValueComp"); string huoxingStr = luaEnv.Global.Get ("strValueHoX"); LOG ("strValueEmpty=" + emptyStr + "; strValueLong length=" + longStr.Length); LOG ("strValueShort=" + shortStr + "; trValueExp=" + expStr); LOG ("strValue5=" + zhuanyiStr + "; strValue6=" + linesStr); LOG ("strValueChin=" + chinStr + "; strValueComp=" + compStr); LOG ("strValueHoX=" + huoxingStr); if (emptyStr == "") { setResult (true, "pass", out result); } else { setResult (false, "(1).empty string isn't empty, is " + emptyStr, out result); } if (longStr.Length != 1024) { updateResult(false, "(2). long string's length should be 1024, but is " + longStr.Length, ref result); } if (shortStr != "boo123") { updateResult(false, "(3). short string should be bool123 but is " + shortStr, ref result); } if (expStr != ".* ? [ ] ^ $~`!@#$%^&()_-+=[];\',““〈〉〖【℃ $ ¤№ ☆ ★■ⅷ②㈣") { updateResult(false, "(4). complex string is wrong, which is " + expStr, ref result); } if (zhuanyiStr != "\r\na") { updateResult(false, "(5).zhuanyi string is wrong, which is " + zhuanyiStr, ref result); } if (linesStr.Split('\n').Length !=8) { updateResult(false, "(6).multi lines string should have 8 liens, but it is " + linesStr.Split('\n').Length, ref result); } if (chinStr != "中文字符串") { updateResult(false, "(7).chinese string is wrong, which is " + chinStr, ref result); } if (compStr != "繁體國陸") { updateResult(false, "(8).fanti string is wrong, which is " + compStr, ref result); } if (huoxingStr != "吙煋呅僦媞這樣孒") { updateResult(false, "(9).huoxing string is wrong, which is " + huoxingStr, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToSByte() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToSByte: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> sbyte sbyte sbyteValueMax = luaEnv.Global.Get ("sbyteValueMax"); sbyte sbyteValueMin = luaEnv.Global.Get ("sbyteValueMin"); sbyte sbyteOverMax = luaEnv.Global.Get ("intValueMax"); sbyte sbyteOverMin = luaEnv.Global.Get ("intValueMin"); LOG ("sbyteValueMax=" + sbyteValueMax + "; sbyteValueMin=" + sbyteValueMin); LOG ("sbyteOverMax=" + sbyteOverMax + "; sbyteOverMin=" + sbyteOverMin); if (sbyteValueMax == System.SByte.MaxValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).sbyteValueMax, is " + sbyteValueMax, out result); } if (sbyteValueMin != System.SByte.MinValue) { updateResult(false, "(2).sbyteValueMin, is " + sbyteValueMin, ref result); } if (sbyteOverMax != -1) { updateResult(false, "(3).sbyteOverMax, is " + sbyteOverMax, ref result); } if (sbyteOverMin != 0) { updateResult(false, "(4).sbyteOverMin, is " + sbyteOverMin, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToByte() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToByte: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> byte byte byteValueMax = luaEnv.Global.Get ("byteValueMax"); byte byteValueMin = luaEnv.Global.Get ("byteValueMin"); byte byteOverMax = luaEnv.Global.Get ("intValueMax"); byte byteOverMin = luaEnv.Global.Get ("intValueMin"); LOG ("byteValueMax=" + byteValueMax + "; byteValueMin=" + byteValueMin); LOG ("byteOverMax=" + byteOverMax + "; byteOverMin=" + byteOverMin); if (byteValueMax == System.Byte.MaxValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).byteValueMax, is " + byteValueMax, out result); } if (byteValueMin != System.Byte.MinValue) { updateResult(false, "(2).byteValueMin, is " + byteValueMin, ref result); } if (byteOverMax != 255) { updateResult(false, "(3).byteOverMax, is " + byteOverMax, ref result); } if (byteOverMin != 0) { updateResult(false, "(4).sbyteOverMin, is " + byteOverMin, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToShort() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToShort: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> short short shortValueMax = luaEnv.Global.Get ("shortValueMax"); short shortValueMin = luaEnv.Global.Get ("shortValueMin"); LOG ("shortValueMax=" + shortValueMax + "; shortValueMin=" + shortValueMin); if (shortValueMax == System.Int16.MaxValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).shortValueMax, is " + shortValueMax, out result); } if (shortValueMin != System.Int16.MinValue) { updateResult(false, "(2).shortValueMin, is " + shortValueMin, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToUShort() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToUShort: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> ushort ushort ushortValueMax = luaEnv.Global.Get ("ushortValueMax"); ushort ushortValueMid = luaEnv.Global.Get ("ushortValueMid"); LOG ("ushortValueMax=" + ushortValueMax + "; shortValueMin=" + ushortValueMid); if (ushortValueMax == System.UInt16.MaxValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).ushortValueMax, is " + ushortValueMax, out result); } if (ushortValueMid != 32768) { updateResult(false, "(2).ushortValueMid, is " + ushortValueMid, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToInt() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToInt: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> int int intValueMax = luaEnv.Global.Get ("intValueMax"); int intValueMin = luaEnv.Global.Get ("intValueMin"); int intZero = luaEnv.Global.Get ("intZero"); LOG ("intValueMax=" + intValueMax + "; intValueMin=" + intValueMin); if (intValueMax == System.Int32.MaxValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).intValueMax, is " + intValueMax, out result); } if (intValueMin != System.Int32.MinValue) { updateResult(false, "(2).intValueMin, is " + intValueMin, ref result); } if (intZero != 0) { updateResult(false, "(3).intZero, is " + intZero, ref result); } try { int intValueOverMax = luaEnv.Global.Get ("longValue"); int intValueOverMin = luaEnv.Global.Get ("uintValueMax"); LOG ("intValueOverMax=" + intValueOverMax + "; intValueOverMin=" + intValueOverMin); } catch(Exception e) { updateResult(false, "it shouldn't raise exception, but e.msg:" + e.Message, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToUInt() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToUInt: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> uint uint uintValueMax = luaEnv.Global.Get ("uintValueMax"); uint uintValueMid = luaEnv.Global.Get ("uintValueMid"); LOG ("uintValueMax=" + uintValueMax + "; uintValueMid=" + uintValueMid); if (uintValueMax == System.UInt32.MaxValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).uintValueMax, is " + uintValueMax, out result); } if (uintValueMid != 2147483648) { updateResult(false, "(2).uintValueMid, is " + uintValueMid, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToLong() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToLong: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> long long longValue = luaEnv.Global.Get ("longValue"); long longValue2 = luaEnv.Global.Get ("longValue2"); LOG ("longValue=" + longValue + "; longValue2=" + longValue2); LuaTestCommon.Log("longValue=" + longValue + "; longValue2=" + longValue2); if (longValue == 42949672960) { setResult (true, "pass", out result); } else { setResult (false, "(1).longValue, is " + longValue, out result); } if (longValue2 != -42949672960) { updateResult(false, "(2).longValue2, is " + longValue2, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToULong() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步,不支持number转64位,会报错 */ string caseName = "testGetBasicDataTypeNumberToULong: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> ulong ulong ulongValueMax = luaEnv.Global.Get ("ulongValueMax"); ulong ulongValueMin = luaEnv.Global.Get ("ulongValueMin"); LOG ("ulongValueMax=" + ulongValueMax + "; ulongValueMin=" + ulongValueMin); if (ulongValueMax == 42949672961111) { setResult (true, "pass", out result); } else { setResult (false, "(1).ulongValueMax, is " + ulongValueMax, out result); } if (ulongValueMin != 0) { updateResult(false, "(2).ulongValueMin, is " + ulongValueMin, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToDouble() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToDouble: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> double double doubleValue = luaEnv.Global.Get ("doubleValue"); double doubleValue2 = luaEnv.Global.Get ("doubleValue2"); LOG ("doubleValue=" + doubleValue + "; doubleValue2=" + doubleValue2); if (doubleValue == 3.14159265) { setResult (true, "pass", out result); } else { setResult (false, "(1).doubleValue, is " + doubleValue, out result); } if (doubleValue2 != -3.14159265) { updateResult(false, "(2).doubleValue2, is " + doubleValue2, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToChar() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToChar: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> char char charValue = luaEnv.Global.Get ("charValue"); char charValue2 = luaEnv.Global.Get ("charValue2"); LOG ("charValue=" + charValue + "; charValue2=" + charValue2); if (charValue == 'a') { setResult (true, "pass", out result); } else { setResult (false, "(1).charValue, is " + charValue, out result); } if (charValue2 != 'A') { updateResult(false, "(2).charValue2, is " + charValue2, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToFloat() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToFloat: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> float float floatValue = luaEnv.Global.Get ("floatValue"); float floatValue2 = luaEnv.Global.Get ("floatValue2"); LOG ("floatValue=" + floatValue.ToString("F8") + "; charValue2=" + floatValue2); if (System.Math.Abs(floatValue - 3.141593) < 0.000001) { setResult (true, "pass", out result); } else { setResult (false, "(1).floatValue, is " + floatValue, out result); } if (System.Math.Abs(floatValue + 3.14) < 0.000001) { updateResult(false, "(2).floatValue2, is " + floatValue2, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataTypeNumberToDecimal() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第3步 */ string caseName = "testGetBasicDataTypeNumberToDecimal: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); // number -> decimal decimal decValue = luaEnv.Global.Get ("decValue"); decimal decValue2 = luaEnv.Global.Get ("decValue2"); decimal expectValue = 12.3111111111m; decimal expectValue2 = -12.3111111111m; LOG ("decValue=" + decValue + "; decValue2=" + decValue2); if (decValue == expectValue) { setResult (true, "pass", out result); } else { setResult (false, "(1).decValue, is " + decValue, out result); } if (decValue2 != expectValue2) { updateResult(false, "(2).decValue2, is " + decValue2, ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataType_Step_4() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第4步 */ string caseName = "testGetBasicDataType_Step_4: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString(script); int noExistInt = luaEnv.Global.Get ("noExistValue"); string noExistString = luaEnv.Global.Get ("noExistString"); LOG ("noExistInt=" + noExistInt + "; noExistString=" + noExistString); //setResult (false, "no exist value should raise exception", out result); //setResult(false, "there is no var defined, should raise exception, but it doesn't.", out result); setResult (false, "v2.1.3 change,noExistValue, only value type and nil value will raise exception", out result); } catch(Exception e) { LOG(e.Message); setResult (true, "pass", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetBasicDataType_Step_5() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486937,第5步 */ string caseName = "testGetBasicDataType_Step_5: "; LOG ("*************" + caseName); TestResult result; try { luaEnv.DoString(script); luaEnv.DoString("str2int='123'"); int string2Int = luaEnv.Global.Get ("str2int"); /*string number2str = luaEnv.Global.Get("byteValueMax"); LOG ("string2Int=" + string2Int + ", number2str=" + number2str); int bool2int = luaEnv.Global.Get ("bValue2"); string bool2str = luaEnv.Global.Get ("bValue1"); LOG ("bool2int=" + bool2int + ", bool2str=" + bool2str);*/ //setResult (false, "type is not same, should raise exception", out result); // setResult(false, "there is no var defined, should raise exception, but it doesn't.", out result); setResult (true, "pass", out result); } catch(Exception e) { LOG(e.Message); setResult (false, "v2.1.3 change, type is not same, only value type and nil value will raise exception", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第1和1.2步 */ string caseName = "testGetTableToClass_Step_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassEqual tb1Class = luaEnv.Global.Get ("tableValue1"); List tableValueIncludeList = new List(){1,2,3,4,5,6,7,8,9,0}; LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2= " + tb1Class.key2); LOG ("tableValue1.key3 = " + tb1Class.key3 + "; tableValue1.tableValueInclude= " + listToString(tb1Class.tableValueInclude)); if (tb1Class.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Class.key1 + "", out result); } if (tb1Class.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb1Class.key2 , ref result); } if (tb1Class.key3 != true) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb1Class.key3 , ref result); } if (tb1Class.tableValueInclude.Count != tableValueIncludeList.Count || tb1Class.tableValueInclude[0] != tableValueIncludeList[0]) { updateResult(false, "(4).tableValue1.tableValueInclude should be {1,2,3,4,5,6,7,8,9,0}," + "but in fact is " + listToString(tb1Class.tableValueInclude), ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第2步 */ string caseName = "testGetTableToClass_Step_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassLess tb1Class = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2= " + tb1Class.key2); if (tb1Class.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Class.key1 + "", out result); } if (tb1Class.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb1Class.key2 , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第3步 */ string caseName = "testGetTableToClass_Step_3: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassMore tb1Class = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2 = " + tb1Class.key2); LOG ("tableValue1.key3 = " + tb1Class.key3 + "; tableValue1ClassMore.key4 = " + tb1Class.key4); if (tb1Class.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Class.key1 + "", out result); } if (tb1Class.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb1Class.key2 , ref result); } if (tb1Class.key3 != true) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb1Class.key3 , ref result); } if (tb1Class.key4 != 0) { updateResult(false, "(4).key4 should be 0 default, but in fact is " + tb1Class.key4 , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_4() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第4步 */ string caseName = "testGetTableToClass_Step_4: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassMore tb1Class = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2 = " + tb1Class.key2); LOG ("tableValue1.key3 = " + tb1Class.key3 + "; tableValue1ClassMore.key4 = " + tb1Class.key4); if (tb1Class.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Class.key1 + "", out result); } tb1Class.key1 = 100; tableValue1ClassMore tb1Class2 = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Class2.key1); if (tb1Class2.key1 != 100000){ updateResult(false, "(2).tableValue1.key1 should be 100000, but int fact is" + tb1Class2.key1 , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_5() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第5步 */ string caseName = "testGetTableToClass_Step_5: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassPrivate tb1Class = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2 = " + tb1Class.Get()); LOG ("tableValue1.key3 = " + tb1Class.key3); if (tb1Class.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Class.key1 + "", out result); } if (tb1Class.Get () != 0){ updateResult(false, "(2).private key2 should be 0, but int fact is " + tb1Class.Get () , ref result); } if (tb1Class.key3 != true) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb1Class.key3 , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_1_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第1.1步 */ string caseName = "testGetTableToClass_Step_1_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); try{ tableValue1ClassParamConstucter tb1Class = luaEnv.Global.Get ("tableValue1"); // LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2 = " + tb1Class.key2); // LOG ("tableValue1.key3 = " + tb1Class.key3); setResult (true, "pass", out result); } catch(Exception e){ setResult (false, "v2.1.3change, only value type and nil value will raise exception ,class has no non-param constructor will not", out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_1_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第1.3步 */ string caseName = "testGetTableToClass_Step_1_3: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassTwoConstructer tb1Class = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Class.key1 + "; tableValue1.key2 = " + tb1Class.key2); LOG ("tableValue1.key3 = " + tb1Class.key3 ); if (tb1Class.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Class.key1 + "", out result); } if (tb1Class.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb1Class.key2 , ref result); } if (tb1Class.key3 != true) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb1Class.key3 , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToClass_Step_1_4() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第1.4步 */ string caseName = "testGetTableToClass_Step_1_4: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); try{ tableValue1ClassException tb1Class = luaEnv.Global.Get ("tableValue1"); setResult (false, "class constructor should raise exception, but it doesnpt", out result); } catch(Exception e){ setResult (true, "pass", out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToInterface_Step_6() { //对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第6步 string caseName = "testGetTableToInterface_Step_6: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1InfEqual tb1Inf = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Inf.key1 + "; tableValue1.key2 = " + tb1Inf.key2); LOG ("tableValue1.key3 = " + tb1Inf.key3 ); LOG ("tableValue1.tableVarInclude.ikey1 = " + tb1Inf.tableVarInclude.ikey1 + "; tableValue1.tableVarInclude.ikey2 = " + tb1Inf.tableVarInclude.ikey2); if (tb1Inf.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Inf.key1 + "", out result); } if (tb1Inf.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb1Inf.key2 , ref result); } if (tb1Inf.key3 != true) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb1Inf.key3 , ref result); } if (tb1Inf.tableVarInclude.ikey1 != 10) { updateResult(false, "(4).tableValue1.tableVarInclude.ikey1 should be 10, but in fact is " + tb1Inf.tableVarInclude.ikey1 , ref result); } if (tb1Inf.tableVarInclude.ikey2 != 12) { updateResult(false, "(5).tableValue1.tableVarInclude.ikey2 should be 12, but in fact is " + tb1Inf.tableVarInclude.ikey2, ref result); } int subResult = tb1Inf.sub (1000, 100); if (subResult != 900 ) { updateResult(false, "(6).sub result is error, 1000 - 100 = " + subResult , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToInterface_Step_7() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第7步 */ string caseName = "testGetTableToInterface_Step_7: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1InfLess tb1Inf = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Inf.key1 + "; tableValue1.key2 = " + tb1Inf.key2); if (tb1Inf.key1 == 100000){ setResult (true, "pass", out result); } else { setResult (false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb1Inf.key1 + "", out result); } if (tb1Inf.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb1Inf.key2 , ref result); } int subResult = tb1Inf.sub (1000, 100); if (subResult != 900 ) { updateResult(false, "(3).sub result is error, 1000 - 100 = " + subResult , ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToInterface_Step_8() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第8步 */ string caseName = "testGetTableToInterface_Step_8: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1InfMore tb1Inf = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1InfMore.key4 = " + tb1Inf.key4); if (tb1Inf.key4 == null){ setResult (true, "pass", out result); } else { setResult (false, "(1).key4 should be '' default, but int fact is : " + tb1Inf.key4 + "", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToInterface_Step_9() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第9步 */ string caseName = "testGetTableToInterface_Step_9: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue2Inf tb1Inf = luaEnv.Global.Get ("tableValue2"); LOG ("tableValue2.kv1 = " + tb1Inf.kv1 + "; tableValue2.kv2 = " + tb1Inf.kv2); LOG ("tableValue2.kv3 = " + tb1Inf.kv3 ); tb1Inf.kv1 = false; tb1Inf.kv2 = "test"; tb1Inf.kv3 = 3; tableValue2Inf tb1Inf2 = luaEnv.Global.Get ("tableValue2"); LOG ("tableValue2.kv1 = " + tb1Inf2.kv1 + "; tableValue2.kv2 = " + tb1Inf2.kv2); LOG ("tableValue2.kv3 = " + tb1Inf2.kv3 ); if (tb1Inf2.kv1 == false && tb1Inf2.kv2 == "test" && tb1Inf2.kv3 == 3){ setResult (true, "pass", out result); } else { setResult (false, "by ref, kv1, kv2, kv3 = " + tb1Inf2.kv1 + ", " + tb1Inf2.kv2 + ", " + tb1Inf2.kv3, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToInterface_Step_6_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第6.1步 */ string caseName = "testGetTableToInterface_Step_6_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); try{ tableValue1InfTypeDiff tb1Inf = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + tb1Inf.key1 + "; tableValue1.key2 = " + tb1Inf.key2); tableValue1InfLess tb2Inf = luaEnv.Global.Get ("tableValue7"); LOG ("tableValue1.key1 = " + tb2Inf.key1 + "; tableValue2.key2 = " + tb2Inf.key2); setResult (true, "pass", out result); } catch(Exception e){ setResult (false, "class constructor should raise exception, but it doesnpt", out result); LOG (e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToDic_Step_10() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第10步 */ string caseName = "testGetTableToDic_Step_10: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); Dictionary dict = luaEnv.Global.Get> ("tableValue4"); LOG ("tableValue4.k1 = " + dict["k1"] + "; tableValue4.k2 = " + dict["k2"]); LOG ("tableValue4.k3 = " + dict["k3"] + "; tableValue4.k4 = " + dict["k4"]); LOG ("tableValue4.k5 = " + dict["k5"]); if (dict["k1"] == 1 && dict["k2"] == 10 && dict["k3"] == 100 && dict["k4"] == 1000 && dict["k5"] == 10000){ setResult (true, "pass", out result); } else { setResult (false, "tableValue4 should be k1= 1, k2= 10, k3 = 100, k4 = 1000, k5 = 10000", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToDic_Step_11_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第11.1步 */ string caseName = "testGetTableToDic_Step_11_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); Dictionary dict = luaEnv.Global.Get> ("tableValue4"); LOG ("dict.Count = " + dict.Count); if (dict.Count == 0){ setResult (true, "pass", out result); } else { setResult (false, "dict should be {}", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToDic_Step_11_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第11.2步 */ string caseName = "testGetTableToDic_Step_11_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); Dictionary dict = luaEnv.Global.Get> ("tableValue1"); LOG ("tableValue1.key1 = " + dict["key1"] + ", tableValue1.key2 = " + dict["key2"]); LOG ("dict.Count = " + dict.Count); if (dict.Count == 2 && dict["key1"] == 100000 && dict["key2"] == 10){ setResult (true, "pass", out result); } else { setResult (false, "dict should have key1 = 100000, key2 = 10", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToDic_Step_11_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第11.3步 */ string caseName = "testGetTableToDic_Step_11_3: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); Dictionary dict = luaEnv.Global.Get> ("tableValue3"); LOG ("dict.Count = " + dict.Count); if (dict.Count == 0){ setResult (true, "pass", out result); } else { setResult (false, "dict should {}", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToList_Step_12() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第12步 */ string caseName = "testGetTableToList_Step_12: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); List listVar = luaEnv.Global.Get> ("tableValue3"); LOG ("listVar = " + listToStr(listVar)); if (listVar.Count == 8){ setResult (true, "pass", out result); } else { setResult (false, "listVar should be {'apple', 'banana', 'orange', 'kiwi', " + "'grape', 'lemon', 'strawberry', 'pear'}", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToList_Step_13_1_int() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第13.1步 */ string caseName = "testGetTableToList_Step_13_1_int: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); List listVar = luaEnv.Global.Get> ("tableValue3"); LOG ("listVar = " + listToString(listVar)); if (listVar.Count == 0){ setResult (true, "pass", out result); } else { setResult (false, "listVar should be {}", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToList_Step_13_1_string() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第13.1步 */ string caseName = "testGetTableToList_Step_13_1_string: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); List listVar = luaEnv.Global.Get> ("tableValue6"); LOG ("listVar.count = " + listVar.Count); if (listVar.Count == 0){ setResult (true, "pass", out result); } else { setResult (false, "listVar should be {}", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToList_Step_13_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第13.2步 */ string caseName = "testGetTableToList_Step_13_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); List listVar = luaEnv.Global.Get> ("tableValue1"); LOG ("listVar.count = " + listVar.Count + ", listVar = " + listToStr(listVar)); if (listVar.Count == 3){ setResult (true, "pass", out result); } else { setResult (false, "listVar should be {'red', 'yellow', 'green''}", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetTableToLuaTable_Step_14() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486938,第14, 15步 */ string caseName = "testGetTableToLuaTable_Step_14: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); LuaTable table = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + table.Get("key1")); LOG ("tableValue1.key2 = " + table.Get("key2")); LOG ("tableValue1.key3 = " + table.Get("key3")); LOG ("tableValue1.1 = " + table[1]); LOG ("tableValue1.2 = " + table[2]); LOG ("tableValue1.3 = " + table[3]); LOG ("tableValue1.sub = " + Convert.ToInt32(table.Get("sub").Call (table, 100, 10)[0])); LOG ("tableValue1.tableValueInclude.count = " + table.Get>("tableValueInclude").Count); LOG ("tableValue1.tableVarInclude.count = " + table.Get>("tableVarInclude").Count); if (table.Get("key1") == 100000){ setResult (true, "pass", out result); } else { setResult (false, "tablevalue1 is error", out result); } table ["key1"] = 100; LuaTable table2 = luaEnv.Global.Get ("tableValue1"); LOG ("tableValue1.key1 = " + table2.Get("key1")); if (Convert.ToInt32(table2["key1"]) != 100) { updateResult(false, "modify no change.", ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第1步 */ string caseName = "testGetFuncToDelegate_Step_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncSelfINcreaseDelegate delegate1 = luaEnv.Global.Get ("func_self_increase"); delegate1 (); int intValue3 = luaEnv.Global.Get ("intValue3"); LOG ("intValues = " + intValue3); if (intValue3 == 1){ setResult (true, "pass", out result); } else { setResult (false, "intValue3 + 1 = 1, but is " + intValue3, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_2_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第2.1步 */ string caseName = "testGetFuncToDelegate_Step_2_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnMultivaluesDelegate2 delegate1 = luaEnv.Global.Get ("func_return_multivalues"); string str; tableValue4Class table; bool update; delegate1(out update, out str, out table); LOG ("str = " + str + ", update = " + update + ", {k1 = " + table.k1 + ", k2 = " + table.k2 + "}"); if (update == false && str == "false" && table.k1 == 11 && table.k2 == 12){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be false, 'false', {k1=11, k2=12}", out result); } FuncSelfINcreaseDelegate delegate2 = luaEnv.Global.Get ("func_self_increase"); delegate2 (); // int intValue3 = luaEnv.Global.Get ("intValue3"); // intValue3 = 3; delegate1(out update, out str, out table); LOG ("get again, str = " + str + ", update = " + update + ", {k1 = " + table.k1 + ", k2 = " + table.k2 + "}"); if (update != true || str != "true" || table.k1 != 11 || table.k2 != 12){ updateResult (false, "function return error, should be true, 'true', {k1=11, k2=12}", ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_2_2() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第2.2步 */ string caseName = "testGetFuncToDelegate_Step_2_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnMultivaluesDelegate1 delegate1 = luaEnv.Global.Get ("func_return_multivalues"); string str; tableValue4Class table; bool update = delegate1(out str, out table); if (update == false && str == "false" && table.k1 == 11 && table.k2 == 12){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be false, 'false', {k1=11, k2=12}", out result); } FuncSelfINcreaseDelegate delegate2 = luaEnv.Global.Get ("func_self_increase"); delegate2 (); update = delegate1(out str, out table); LOG ("get again, str = " + str + ", update = " + update + ", {k1 = " + table.k1 + ", k2 = " + table.k2 + "}"); if (update != true || str != "true" || table.k1 != 11 || table.k2 != 12){ updateResult (false, "function return error, should be true, 'true', {k1=11, k2=12}", ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_2_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第2.3步 */ string caseName = "testGetFuncToDelegate_Step_2_3: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnMultivaluesDelegate3 delegate1 = luaEnv.Global.Get ("func_return_multivalues"); int a; string str; tableValue4Class table; bool update; delegate1(out update, out str, out table, out a); LOG ("str = " + str + ", update = " + update + ", {k1 = " + table.k1 + ", k2 = " + table.k2 + "}"); if (update == false && str == "false" && table.k1 == 11 && table.k2 == 12 && a == 0){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be false, 'false', {k1=11, k2=12}", out result); } FuncReturnMultivaluesDelegate31 delegate2 = luaEnv.Global.Get ("func_return_multivalues2"); tableValue4Class noreturn; delegate2(out update, out str, out table, out noreturn); LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_2_4() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第2.4步 */ string caseName = "testGetFuncToDelegate_Step_2_4: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnMultivaluesDelegate4 delegate1 = luaEnv.Global.Get ("func_return_multivalues"); string str; bool update = delegate1(out str); LOG ("str = " + str + ", update = " + update); if (update == false && str == "false"){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be false, 'false'", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_3() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第3步 */ string caseName = "testGetFuncToDelegate_Step_3: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); GetFuncIncreaseDelegate delegate1 = luaEnv.Global.Get ("func_return_func"); Action e = delegate1(); e (); int intValue3 = luaEnv.Global.Get("intValue3"); if ( intValue3 == 1){ setResult (true, "pass", out result); } else { setResult (false, "intValue3 should be 1, but is" + intValue3, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_5() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第5步 */ string caseName = "testGetFuncToDelegate_Step_5: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncMultiParamsDelegate delegate1 = luaEnv.Global.Get ("func_multi_params"); bool a = true; int b = 2; string c = "ABC"; int d; delegate1(ref a, ref b, ref c, out d); LOG ("a = " + a + ", b = " + b + ", c = " + c); if (a == true && b == 3 && c == "abc"){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be true, 3, 'abc'", out result); } a = false; b = 2; c = "ABC"; delegate1(ref a, ref b, ref c, out d); if (a != false || b != 2 || c != "ABC") { updateResult (false, "function return error, should be false, 2, 'ABC'", ref result); } LOG (caseName + result.ToString()); return result; } FuncMultiParams3Delegate2 delegate1; public TestResult testGetFuncToDelegate_Step_5_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第5.1和5.2步, 1个function映射到2个delegate,第2个预期抛异常----->v2.0.5调整为一个function可以映射到多个delegate上 */ string caseName = "testGetFuncToDelegate_Step_5_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); delegate1 = luaEnv.Global.Get ("func_multi_params3"); bool a = true; int b = 5; int sum; delegate1(b, out sum, ref a); LOG ("sum = " + sum + ", a = " + a); if (a == true && sum == 6 ){ setResult (true, "pass", out result); } else { setResult (false, "should be sum = 6, a = true", out result); } try { FuncMultiParams3Delegate delegate2 = luaEnv.Global.Get ("func_multi_params3"); } catch (Exception e){ updateResult(false, "FuncMultiParams3Delegate to same function raise exception.", ref result); LOG(e.Message); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_5_1_0() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第5.1和5.2步, 1个function映射到1个delegate */ string caseName = "testGetFuncToDelegate_Step_5_1_0: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncMultiParams3Delegate2 delegate1 = luaEnv.Global.Get ("func_multi_params3"); bool a = true; int b = 5; int sum; delegate1(b, out sum, ref a); LOG ("sum = " + sum + ", a = " + a); if (a == true && sum == 6 ){ setResult (true, "pass", out result); } else { setResult (false, "should be sum = 6, a = true", out result); } FuncMultiParams3Delegate delegate2 = luaEnv.Global.Get ("func_multi_params4"); a = false; delegate2(out sum, b, ref a); LOG ("FuncMultiParams3Delegate, sum = " + sum + ", a = " + a); if (a != false || sum != 0) { updateResult (false, "FuncMultiParams3Delegate, should be sum = 0, a = false", ref result); } LOG (caseName + result.ToString()); return result; } /* public TestResult testGetFuncToDelegate_Step_5_2() { //对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第5步,返回function string caseName = "testGetFuncToDelegate_Step_5_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncMultiParams2Delegate delegate1 = luaEnv.Global.Get ("func_multi_params2"); bool a = true; int b = 5; int sum; Action d; d = delegate1(ref a, b, out sum); LOG ("sum = " + sum + ", a = " + a); d(); int intValue3 = luaEnv.Global.Get ("intValue3"); if (a == true && sum == 6 && intValue3 == 1){ setResult (true, "pass", out result); } else { setResult (false, "should be sum = 6, a = true, intValue3 = 1", out result); } LOG (caseName + result.ToString()); return result; } */ public TestResult testGetFuncToDelegate_Step_6() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第6步 */ string caseName = "testGetFuncToDelegate_Step_6: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FucnVarParamsDelegate delegate1 = luaEnv.Global.Get ("func_varparams"); int sum = delegate1(6, 4); LOG ("sum = " + sum ); if ( sum == 10){ setResult (true, "pass", out result); } else { setResult (false, "should be sum = 10", out result); } sum = delegate1(10, 5); LOG ("sum = " + sum ); if (sum != 15) { updateResult (false, "more input params, should be sum = 15", ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToLuaFunc_Step_8() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第8步 */ string caseName = "testGetFuncToLuaFunc_Step_8: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); LuaFunction func1 = luaEnv.Global.Get ("func_self_increase"); func1.Call (); int intValue3 = luaEnv.Global.Get ("intValue3"); LOG ("intValues = " + intValue3); if (intValue3 == 1){ setResult (true, "pass", out result); } else { setResult (false, "intValue3 + 1 = 1, but is " + intValue3, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToLuaFunc_Step_9_1() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第9.1步 */ string caseName = "testGetFuncToLuaFunc_Step_9_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); LuaFunction func1 = luaEnv.Global.Get ("func_return_multivalues"); object[] returns = func1.Call(); string str = (string)returns[1]; LuaTable table = (LuaTable)returns[2]; bool update = (bool)returns[0]; LOG ("str = " + str + ", update = " + update + ", {k1 = " + table["k1"] + ", k2 = " + table["k2"] + "}"); if (update == false && str == "false" && Convert.ToInt32(table["k1"]) == 11 && Convert.ToInt32(table["k2"]) == 12){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be false, 'false', {k1=11, k2=12}", out result); } FuncSelfINcreaseDelegate delegate2 = luaEnv.Global.Get ("func_self_increase"); delegate2 (); // int intValue3 = luaEnv.Global.Get ("intValue3"); // intValue3 = 3; returns = func1.Call(); str = (string)returns[1]; table = (LuaTable)returns[2]; update = (bool)returns[0]; LOG ("get again, str = " + str + ", update = " + update + ", {k1 = " + table["k1"] + ", k2 = " + table["k2"] + "}"); if (update != true || str != "true" || Convert.ToInt32(table["k1"]) != 11 || Convert.ToInt32(table["k2"]) != 12){ updateResult (false, "function return error, should be true, 'true', {k1=11, k2=12}", ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToLuaFunc_Step_10() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第10步 */ string caseName = "testGetFuncToLuaFunc_Step_10: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); LuaFunction func1 = luaEnv.Global.Get ("func_return_func"); LuaFunction e = (LuaFunction)func1.Call ()[0]; e.Call (); int intValue3 = luaEnv.Global.Get("intValue3"); if ( intValue3 == 1){ setResult (true, "pass", out result); } else { setResult (false, "intValue3 should be 1, but is" + intValue3, out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToLuaFunc_Step_12() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第12步 */ string caseName = "testGetFuncToLuaFunc_Step_12: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); LuaFunction func1 = luaEnv.Global.Get ("func_multi_params"); bool a = true; int b = 2; string c = "ABC"; int d; object[] returns = func1.Call(a, b, c); a = (bool)returns [0]; b = Convert.ToInt32(returns [1]); c = (string)returns [2]; LOG ("a = " + a + ", b = " + b + ", c = " + c); if (a == true && b == 3 && c == "abc"){ setResult (true, "pass", out result); } else { setResult (false, "function return error, should be true, 3, 'abc'", out result); } a = false; b = 2; c = "ABC"; returns = func1.Call(a, b, c); a = (bool)returns [0]; b = Convert.ToInt32(returns [1]); c = (string)returns [2]; if (a != false || b != 2 || c != "ABC") { updateResult (false, "function return error, should be false, 2, 'ABC'", ref result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToLuaFunc_Step_13() { /* *对应测试用例http://itest.oa.com/v1/2272/case/home/detail/8486939,第13步 */ string caseName = "testGetFuncToLuaFunc_Step_13: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); LuaFunction func1 = luaEnv.Global.Get ("func_varparams"); object[] returns = func1.Call(6, 4); int sum = Convert.ToInt32(returns [0]); LOG ("sum = " + sum ); if ( sum == 10){ setResult (true, "pass", out result); } else { setResult (false, "should be sum = 10", out result); } returns = func1.Call(10, 1, 4); sum = Convert.ToInt32(returns [0]); LOG ("sum = " + sum ); LOG ("sum = " + sum ); if (sum != 15) { updateResult (false, "more input params, should be sum = 15", ref result); } LOG (caseName + result.ToString()); return result; } // 补充用例C#以返回值为object的delegate调用Lua函数, // (1)而在lua函数侧返回的是long,ulong,都能正确返回。 // (2)在lua函数返回别的地方创建的userdata,比如io.open返回的文件句柄,在c#那接收到的是null public TestResult testGetFuncToDelegate_Step_7_1() { string caseName = "testGetFuncToDelegate_Step_7_1: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnObjectDelegate delegate1 = luaEnv.Global.Get ("func_return_object"); System.Object ret = delegate1(0); LuaTestCommon.Log ("ret= " + ret ); if ( ret == null){ setResult (true, "pass", out result); } else { setResult (false, "should be ret = null", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_7_2() { string caseName = "testGetFuncToDelegate_Step_7_2: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnObjectDelegate delegate1 = luaEnv.Global.Get ("func_return_object"); System.Object ret = delegate1(1); LuaTestCommon.Log ("ret= " + ret ); if ( Convert.ToInt64(ret)== System.Int64.MaxValue){ setResult (true, "pass", out result); } else { setResult (false, "should be ret = System.Int64.MaxValue", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testGetFuncToDelegate_Step_7_3() { string caseName = "testGetFuncToDelegate_Step_7_3: "; LOG ("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncReturnObjectDelegate delegate1 = luaEnv.Global.Get ("func_return_object"); System.Object ret = delegate1(2); LuaTestCommon.Log ("ret= " + ret ); //if ( Convert.ToUInt64(ret) == System.UInt64.MaxValue){ if ( Convert.ToInt64(ret) == -1){ setResult (true, "pass", out result); } else { setResult (false, "should be ret = System.UInt64.MaxValue", out result); } LOG (caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_int_1() { string caseName = "testLuaTableGetSetKeyValue_BasicType_int_1: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); int ret = luaEnv.Global.Get("intValueMax"); LuaTestCommon.Log("ret= " + ret); if (ret == System.Int32.MaxValue) { setResult(true, "pass", out result); } else { setResult(false, "(1).intValueMax, is " + ret, out result); } luaEnv.Global.Set("intValueMax", 12345); ret = luaEnv.Global.Get("intValueMax"); LuaTestCommon.Log("ret= " + ret); if (ret == 12345) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2).after set intValueMax=12345, get is " + ret, ref result); } ret = 0; luaEnv.Global.Get("intValueMax", out ret); LuaTestCommon.Log("out ret= " + ret); if (ret == 12345) { updateResult(true, "pass", ref result); } else { updateResult(false, "(3).after set intValueMax=12345, get is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_int_2() { string caseName = "testLuaTableGetSetKeyValue_BasicType_int_2: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); int ret; luaEnv.Global.Set(123, 12345); ret = luaEnv.Global.Get(123); LuaTestCommon.Log("ret= " + ret); if (ret == 12345) { setResult(true, "pass", out result); } else { setResult(false, "(1).after set 123=12345, get is " + ret, out result); } ret = 0; luaEnv.Global.Get(123, out ret); LuaTestCommon.Log("out ret= " + ret); if (ret == 12345) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2).after set intValueMax=12345, get is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_string_1() { string caseName = "testLuaTableGetSetKeyValue_BasicType_string_1: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); string ret; luaEnv.Global.Set("strValueChin", "中文字符串mix12345587"); luaEnv.Global.Get("strValueChin", out ret); LuaTestCommon.Log("ret= " + ret); if (ret == "中文字符串mix12345587") { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_sbyte() { string caseName = "testLuaTableGetSetKeyValue_BasicType_sbyte: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); sbyte ret; luaEnv.Global.Set((sbyte)12, (sbyte)23); luaEnv.Global.Get((sbyte)12, out ret); LuaTestCommon.Log("ret= " + ret); if (ret == (sbyte)23) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("sbyteValueMin", out ret); if (ret == -128) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get sbyteValueMin is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_byte() { string caseName = "testLuaTableGetSetKeyValue_BasicType_byte: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); byte ret; luaEnv.Global.Set((byte)255, (byte)23); luaEnv.Global.Get((byte)255, out ret); LuaTestCommon.Log("ret= " + ret); if (ret == (byte)23) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("byteValueMax", out ret); if (ret == (byte)255) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get byteValueMax is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_short() { string caseName = "testLuaTableGetSetKeyValue_BasicType_short: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); short ret; luaEnv.Global.Set((short)256, (short)512); luaEnv.Global.Get((short)256, out ret); LuaTestCommon.Log("ret= " + ret); if (ret == 512) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("shortValueMax", out ret); if (ret == 32767) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get shortValueMax is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_ushort() { string caseName = "testLuaTableGetSetKeyValue_BasicType_ushort: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); ushort ret; luaEnv.Global.Set((ushort)1024, (ushort)32768); luaEnv.Global.Get((ushort)1024, out ret); LuaTestCommon.Log("ret= " + ret); if (ret == 32768) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("ushortValueMax", out ret); if (ret == 65535) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get ushortValueMax is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_long() { string caseName = "testLuaTableGetSetKeyValue_BasicType_long: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); long ret; luaEnv.Global.Set("test", (long)3276800000); luaEnv.Global.Get("test", out ret); LuaTestCommon.Log("ret= " + ret); if (ret == 3276800000) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("longValue2", out ret); if (ret == -42949672960) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get longValue2 is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_ulong() { string caseName = "testLuaTableGetSetKeyValue_BasicType_ulong: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); ulong ret; luaEnv.Global.Set("test", (ulong)42949672960); luaEnv.Global.Get("test", out ret); LuaTestCommon.Log("ret= " + ret); if (ret == 42949672960) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("ulongValueMax", out ret); if (ret == 42949672961111) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get ulongValueMax is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_double() { string caseName = "testLuaTableGetSetKeyValue_BasicType_double: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); double ret; luaEnv.Global.Set((double)0.0000001, (double)1.000124587); luaEnv.Global.Get((double)0.0000001, out ret); LuaTestCommon.Log("ret= " + ret); if (ret == 1.000124587) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("doubleValue2", out ret); if (ret == -3.14159265) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get doubleValue2 is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_float() { string caseName = "testLuaTableGetSetKeyValue_BasicType_float: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); float ret; luaEnv.Global.Set((float)3.14, (float)3.15); luaEnv.Global.Get((float)3.14, out ret); LuaTestCommon.Log("ret= " + ret); if (System.Math.Abs(ret - 3.15) < 0.000001) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } ret = 0; luaEnv.Global.Get("floatValue2", out ret); if (System.Math.Abs(ret + 3.14) < 0.000001) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get floatValue2 is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_char() { string caseName = "testLuaTableGetSetKeyValue_BasicType_char: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); char ret; luaEnv.Global.Set('a', 'b'); luaEnv.Global.Get('a', out ret); LuaTestCommon.Log("ret= " + ret); if (ret == 'b') { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("charValue", out ret); if (ret == 'a') { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get charValue is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_BasicType_decimal() { string caseName = "testLuaTableGetSetKeyValue_BasicType_decimal: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); decimal key = -32132143143100109.00010001010M; decimal value = 0.0000001M; decimal ret; luaEnv.Global.Set(123.01, value); luaEnv.Global.Get(123.01, out ret); LuaTestCommon.Log("ret= " + ret); if (ret == value) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + ret, out result); } luaEnv.Global.Get("decValue2", out ret); if (ret == -12.3111111111M) { updateResult(true, "pass", ref result); } else { updateResult(false, "(2) get decValue2 is " + ret, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_struct() { string caseName = "testLuaTableGetSetKeyValue_BasicType_struct: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); TestStruct mystruct = new TestStruct(5, 6); // custom complex value type TestStruct mystruct2; luaEnv.Global.Set(123, mystruct); luaEnv.Global.Get(123, out mystruct2); LuaTestCommon.Log("ret= " + mystruct2); if (mystruct.a == mystruct2.a) { setResult(true, "pass", out result); } else { setResult(false, "ret is " + mystruct2.a, out result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_class() { string caseName = "testLuaTableGetSetKeyValue_class: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1ClassPrivate tb1Class = luaEnv.Global.Get("tableValue1"); tableValue1ClassPrivate tb2Class; luaEnv.Global.Set(tb1Class.key1, tb1Class); luaEnv.Global.Get(tb1Class.key1, out tb2Class); LOG("tableValue1.key1 = " + tb2Class.key1 + "; tableValue1.key2 = " + tb2Class.Get()); LOG("tableValue1.key3 = " + tb2Class.key3); if (tb2Class.key1 == 100000) { setResult(true, "pass", out result); } else { setResult(false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb2Class.key1 + "", out result); } if (tb2Class.Get() != 0) { updateResult(false, "(2).private key2 should be 0, but int fact is " + tb2Class.Get(), ref result); } if (tb2Class.key3 != true) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb2Class.key3, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_interface() { string caseName = "testLuaTableGetSetKeyValue_interface: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); tableValue1InfEqual tb1Inf = luaEnv.Global.Get("tableValue1"); tb1Inf.key3 = false; tableValue1InfEqual tb2Inf; LOG("tableValue1.key1 = " + tb1Inf.key1 + "; tableValue1.key2 = " + tb1Inf.key2); LOG("tableValue1.key3 = " + tb1Inf.key3); LOG("tableValue1.tableVarInclude.ikey1 = " + tb1Inf.tableVarInclude.ikey1 + "; tableValue1.tableVarInclude.ikey2 = " + tb1Inf.tableVarInclude.ikey2); luaEnv.Global.Set("tableValue1", tb1Inf); luaEnv.Global.Get("tableValue1", out tb2Inf); if (tb2Inf.key1 == 100000) { setResult(true, "pass", out result); } else { setResult(false, "(1).tableValue1.key1 should be 100000, but int fact is : " + tb2Inf.key1 + "", out result); } if (tb2Inf.key2 != 10) { updateResult(false, "(2).tableValue1.key2 should be 10, but in fact is " + tb2Inf.key2, ref result); } if (tb2Inf.key3 != false) { updateResult(false, "(3).tableValue1.key3 should be true, but in fact is " + tb2Inf.key3, ref result); } if (tb2Inf.tableVarInclude.ikey1 != 10) { updateResult(false, "(4).tableValue1.tableVarInclude.ikey1 should be 10, but in fact is " + tb2Inf.tableVarInclude.ikey1, ref result); } if (tb2Inf.tableVarInclude.ikey2 != 12) { updateResult(false, "(5).tableValue1.tableVarInclude.ikey2 should be 12, but in fact is " + tb2Inf.tableVarInclude.ikey2, ref result); } int subResult = tb2Inf.sub(1000, 100); if (subResult != 900) { updateResult(false, "(6).sub result is error, 1000 - 100 = " + subResult, ref result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_dict() { string caseName = "testLuaTableGetSetKeyValue_dict: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); Dictionary dict = luaEnv.Global.Get>("tableValue1"); Dictionary dict2; LOG("tableValue1.key1 = " + dict["key1"] + ", tableValue1.key2 = " + dict["key2"]); LOG("dict.Count = " + dict.Count); luaEnv.Global.Set("tableValue1", dict); luaEnv.Global.Get("tableValue1", out dict2); LOG("tableValue1.key1 = " + dict2["key1"] + ", tableValue1.key2 = " + dict2["key2"]); LOG("dict.Count = " + dict2.Count); if (dict2.Count == 2 && dict2["key1"] == 100000 && dict2["key2"] == 10) { setResult(true, "pass", out result); } else { setResult(false, "dict should have key1 = 100000, key2 = 10", out result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_list() { string caseName = "testLuaTableGetSetKeyValue_list: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); List listVar = luaEnv.Global.Get>("tableValue3"); List listVar2; LOG("listVar = " + listToStr(listVar)); listVar[0] = "test"; luaEnv.Global.Set("tableValue3", listVar); luaEnv.Global.Get("tableValue3", out listVar2); if (listVar2.Count == 8) { setResult(true, "pass", out result); } else { setResult(false, "listVar2 should be {'test', 'banana', 'orange', 'kiwi', " + "'grape', 'lemon', 'strawberry', 'pear'}", out result); } LOG(caseName + result.ToString()); return result; } public TestResult testLuaTableGetSetKeyValue_delegate() { string caseName = "testLuaTableGetSetKeyValue_delegate: "; LOG("*************" + caseName); TestResult result; luaEnv.DoString(script); FuncSelfINcreaseDelegate delegate1 = luaEnv.Global.Get("func_self_increase"); FuncSelfINcreaseDelegate delegate2; luaEnv.Global.Set("test_delegate", delegate1); luaEnv.Global.Get("test_delegate", out delegate2); delegate2(); int intValue3 = luaEnv.Global.Get("intValue3"); LOG("intValues = " + intValue3); if (intValue3 == 1) { setResult(true, "pass", out result); } else { setResult(false, "intValue3 + 1 = 1, but is " + intValue3, out result); } LOG(caseName + result.ToString()); return result; } }