public void TestFromLuaUnity() { string test_code = "return {vec3={x=1.2, y=3.45, z=6.7890}, vec2={x=1, y=2}, rota={x=1,y=2,z=3,w=4}, color={r=1,g=2,b=3,a=4}}"; var obj = LuaUtility.FromLua <TestLuaUnity>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.vec2); Assert.IsNotNull(obj.vec3); Assert.IsNotNull(obj.color); Assert.IsNotNull(obj.rota); AssertFloat(1.2, obj.vec3.x); AssertFloat(3.45, obj.vec3.y); AssertFloat(6.7890, obj.vec3.z); AssertFloat(1, obj.vec2.x); AssertFloat(2, obj.vec2.y); AssertFloat(1, obj.rota.x); AssertFloat(2, obj.rota.y); AssertFloat(3, obj.rota.z); AssertFloat(4, obj.rota.w); AssertFloat(1, obj.color.r); AssertFloat(2, obj.color.g); AssertFloat(3, obj.color.b); AssertFloat(4, obj.color.a); }
public void TestFromLuaList2() { var test_list = new List <int>() { 8, 6, 5, 3, 4, 2, 1, 7, 0, 9, 10 }; string test_code = "return {nums={"; var str_list = new List <string>(); for (int i = 0; i < test_list.Count; i++) { str_list.Add("[" + (i + 1) + "] = " + test_list[i] + ", "); } //打乱顺序 SwitchListValue(str_list, 0, 3); SwitchListValue(str_list, 1, 6); SwitchListValue(str_list, 2, 9); SwitchListValue(str_list, 4, 7); foreach (var str in str_list) { test_code += str; } test_code += "}}"; var obj = LuaUtility.FromLua <TestDataList>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.nums); Assert.AreEqual(test_list.Count, obj.nums.Count); for (int i = 0; i < test_list.Count; i++) { Assert.AreEqual(test_list[i], obj.nums[i]); } }
public void TestFromLuaEnum() { string test_code = "return {e=1, E=3}"; var obj = LuaUtility.FromLua <TestDataEnum>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.e); Assert.AreEqual(TestEnum.Haha, obj.e); Assert.AreEqual(TestEnum2.D, obj.E); }
public void TestFromLuaIntExtraData() { var str = @"return {i=1, ii=3, t={}, f=1.23, b=false, tt={1,2,3, ttt={a=1}}}"; LuaUtility.IsShowLog = true; var obj = LuaUtility.FromLua <TestLuaInt>(str); LuaUtility.IsShowLog = false; Assert.IsNotNull(obj); Assert.AreEqual(obj.i, 1); }
public void TestFromLuaDic2() { string test_code = "return {dic={[\"a\"]=1.2, [\'b\']=3.45, [\"c\"]=6.7890}}"; var obj = LuaUtility.FromLua <TestDataDicStrFlt>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.dic); AssertFloat(1.2, obj.dic["a"]); AssertFloat(3.45, obj.dic["b"]); AssertFloat(6.7890, obj.dic["c"]); }
public void TestFromLuaInlay() { string test_code = "return { id = 987, data_int = { i = 23847, }, data_base = " + TestLexStateBaseDataStr + ", content = '" + TestStr + "' }"; var obj = LuaUtility.FromLua <TestDataInlay>(test_code); Assert.IsNotNull(obj); Assert.AreEqual(987, obj.id); Assert.AreEqual(TestStr, obj.content); TestDataBase(obj.data_base); Assert.IsNotNull(obj.data_int); Assert.AreEqual(23847, obj.data_int.i); }
public void TestFromLuaListTable() { string test_code = "return {data={{i=1}, {i=2}, {i=3}, {i=4}, {i=5}, {i=6}, {i=7}, {i=8}, {i=9}, {i=10}, {i=11}, }, }"; var obj = LuaUtility.FromLua <TestDataListTable>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.data); Assert.AreEqual(11, obj.data.Count); for (int i = 0; i < 11; i++) { Assert.AreEqual(i + 1, obj.data[i].i); } }
public void TestFromLuaList() { string test_code = "return {nums={0,1,2,3,4,5,6,7,8,9,10}}"; var obj = LuaUtility.FromLua <TestDataList>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.nums); Assert.AreEqual(11, obj.nums.Count); for (int i = 0; i < 11; i++) { Assert.AreEqual(i, obj.nums[i]); } }
public void TestFromLuaComment() { var str = @"--哈哈忽略注释吧 --[[123456 忽略多行注释吧1 忽略多行注释吧2 654321--]] return {i=33}"; var obj = LuaUtility.FromLua <TestLuaInt>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.i, 33); }
public void TestFromLuaIntLocal() { var str = @"local t = {i=1} return t"; var obj = LuaUtility.FromLua <TestLuaInt>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.i, 1); // CAT_TODO: return前的赋值语法 LuaUtility.IsShowLog = true; str = @"local t = {i=1} t['i']=1 t['i']=2 return t"; obj = LuaUtility.FromLua <TestLuaInt>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.i, 1); LuaUtility.IsShowLog = false; }
public void TestFromLuaString() { var str = "return {str=\"" + TestStr + "\"}"; var obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); Assert.AreEqual(TestStr, obj.str); str = @"return {str='" + TestStr + "'}"; obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); Assert.AreEqual(TestStr, obj.str); var str_with_line = @"abcde\ fghijk"; str = "return {str=\"" + str_with_line + "\"}"; Debug.LogFormat("LuaUtilityTest[191:04] str:{0}", str); obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); //注意expect_str是故意和str_with_line不一样的,因为lua会把\符号给忽略掉或者转义 var expect_str = @"abcde fghijk"; Assert.AreEqual(expect_str, obj.str); //CAT_TODO:加上\符号的转义测试 // str_with_line = @"abcde\\a\\bfghijk"; // str = "return {str=\""+str_with_line+"\"}"; // Debug.LogFormat("LuaUtilityTest[191:04] str:{0}", str); // obj = LuaUtility.FromLua<TestLuaString>(str); // Assert.IsNotNull(obj); // //注意expect_str是故意和str_with_line不一样的,因为lua会把\符号给忽略掉或者转义 // expect_str = @"abcdefghijk"; // Assert.AreEqual(expect_str, obj.str); string test_str_mut = @"123456 多行字符串1 多行字符串2 654321"; str = @"return {str=[[" + test_str_mut + "]]}"; obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); Assert.AreEqual(test_str_mut, obj.str); }
public void TestFromLuaInt() { var str = @"return {i=1}"; var obj = LuaUtility.FromLua <TestLuaInt>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.i, 1); str = @"return {i=-1}"; obj = LuaUtility.FromLua <TestLuaInt>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.i, -1); str = @"{i=0}"; obj = LuaUtility.FromLua <TestLuaInt>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.i, 0); }
public void TestFromLuaFloat() { var str = @"return {f=1.2345}"; var obj = LuaUtility.FromLua <TestLuaFloat>(str); Assert.IsNotNull(obj); AssertFloat(1.2345, obj.f); str = @"return {f=-1e+11}"; obj = LuaUtility.FromLua <TestLuaFloat>(str); Assert.IsNotNull(obj); Assert.AreEqual(float.Parse("-1e+11"), obj.f); AssertFloat(float.Parse("-1e+11"), obj.f); str = @"return {f=.2345}"; obj = LuaUtility.FromLua <TestLuaFloat>(str); Assert.IsNotNull(obj); AssertFloat(0.2345, obj.f); }
public void TestFromLuaStaticArray() { var code = @"{ds={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}}"; var obj_new = LuaUtility.FromLua <TestDoubleStaticArray>("return " + code); Assert.IsNotNull(obj_new); Assert.AreEqual(12, obj_new.ds.Length); for (int i = 0; i < obj_new.ds.Length; i++) { Assert.AreEqual(i, obj_new.ds[i]); } var code2 = @"{ds={12, 33.80, 55.123, }}"; var obj_new2 = LuaUtility.FromLua <TestDoubleStaticArray>("return " + code2); Assert.IsNotNull(obj_new2); Assert.AreEqual(3, obj_new2.ds.Length); AssertFloat(12, obj_new2.ds[0]); AssertFloat(33.80, obj_new2.ds[1]); AssertFloat(55.123, obj_new2.ds[2]); }
public void TestMultiLineStr() { var test_str = @"1.哈哈哈 2。行要 国为\n3.line33333 4.asdfes 5.seirewsl 6。槈吸灯这;要 "; var obj = new TestLuaString() { str = test_str }; var code = LuaUtility.ToLua(obj); Debug.LogFormat("LuaUtilityTest[604:50] code:{0}", code); var obj_new = LuaUtility.FromLua <TestLuaString>("return " + code); Assert.IsNotNull(obj_new); Assert.AreEqual(test_str, obj_new.str); }
public void TestFromLuaDic3() { string test_code = "return {dic={[3]=\"haha\", [1234]=\"abcdefg_ ieow\", [555]=\"uwioerlskdjfo:123342\\354-=|\"}}"; var obj = LuaUtility.FromLua <TestDataDicIntStr>(test_code); Assert.IsNotNull(obj); Assert.IsNotNull(obj.dic); Assert.AreEqual("haha", obj.dic[3]); Assert.AreEqual("abcdefg_ ieow", obj.dic[1234]); Assert.AreEqual("uwioerlskdjfo:123342\\354-=|", obj.dic[555]); test_code = "return {dic={\"haha\", \"abcdefg_ ieow\", [555]=\"uwioerlskdjfo:123342\\354-=|\"}}"; LuaUtility.IsShowLog = true; obj = LuaUtility.FromLua <TestDataDicIntStr>(test_code); LuaUtility.IsShowLog = false; Assert.IsNotNull(obj); Assert.IsNotNull(obj.dic); Assert.AreEqual("haha", obj.dic[1]); Assert.AreEqual("abcdefg_ ieow", obj.dic[2]); Assert.AreEqual("uwioerlskdjfo:123342\\354-=|", obj.dic[555]); }
public void TestFromLuaPolymorphic() { var dog_type_name = typeof(TestDog).AssemblyQualifiedName; var dog_code = "{[\"$type\"] = \"" + dog_type_name + "\", type=\"dog\", can_run=true}"; var cat_type_name = typeof(TestCat).AssemblyQualifiedName; var cat_code = "{[\"$type\"] = \"" + cat_type_name + "\", type=\"cat\", life=9}"; string test_code = "return {" + dog_code + ", " + cat_code + "}"; Debug.LogFormat("LuaUtilityTest[574:49] test_code:{0}", test_code); // LuaUtility.IsShowLog = true; var obj = LuaUtility.FromLua <List <TestAnimal> >(test_code); // LuaUtility.IsShowLog = false; Assert.IsNotNull(obj); Assert.IsNotNull(obj[0]); Assert.IsNotNull(obj[1]); Assert.AreEqual(obj[0].GetType(), typeof(TestDog)); Assert.AreEqual(obj[1].GetType(), typeof(TestCat)); Assert.AreEqual(obj[0].type, "dog"); Assert.AreEqual(obj[1].type, "cat"); Assert.AreEqual((obj[0] as TestDog).can_run, true); Assert.AreEqual((obj[1] as TestCat).life, 9); }
public void TestFromLuaString() { var str = "return {str=\"" + TestStr + "\"}"; var obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.str, TestStr); str = @"return {str='" + TestStr + "'}"; obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.str, TestStr); string test_str_mut = @"123456 多行字符串1 多行字符串2 654321"; str = @"return {str=[[" + test_str_mut + "]]}"; obj = LuaUtility.FromLua <TestLuaString>(str); Assert.IsNotNull(obj); Assert.AreEqual(obj.str, test_str_mut); }
public void TestFromLuaBase() { var obj = LuaUtility.FromLua <TestDataBase>(TestLexStateStr1); TestDataBase(obj); }