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);
        }
Exemple #18
0
        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);
        }