コード例 #1
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_TooManyArgs_ThrowsLuaException()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("");

                Assert.Throws <LuaException>(() => function.Call(new object[10000000]));
            }
        }
コード例 #2
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
        public void CreateFunctionString_Disposed_ThrowsObjectDisposedException()
        {
            var lua = new Lua();

            lua.Dispose();

            Assert.Throws <ObjectDisposedException>(() => lua.CreateFunction(""));
        }
コード例 #3
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_NullArgs_ThrowsArgumentNullException()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("");

                Assert.Throws <ArgumentNullException>(() => function.Call(null));
            }
        }
コード例 #4
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
        public void CreateFunctionDelegate_NullDelegate_ThrowsArgumentNullException()
        {
            var lua = new Lua();

            lua.Dispose();

            Assert.Throws <ArgumentNullException>(() => lua.CreateFunction((Delegate)null));
        }
コード例 #5
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
        public void CreateFunctionDelegate_Disposed_ThrowsObjectDispossedException()
        {
            var lua = new Lua();

            lua.Dispose();

            Assert.Throws <ObjectDisposedException>(() => lua.CreateFunction(new Action(() => lua.Dispose())));
        }
コード例 #6
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_RuntimeError_ThrowsLuaException(string s)
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction(s);

                Assert.Throws <LuaException>(() => function.Call());
            }
        }
コード例 #7
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
        public void CreateThread_FunctionWrongLuaEnvironment_ThrowsArgumentNullException()
        {
            using (var lua = new Lua())
                using (var lua2 = new Lua()) {
                    var function = lua2.CreateFunction("");

                    Assert.Throws <ArgumentException>(() => lua.CreateThread(function));
                }
        }
コード例 #8
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
        public void CreateThread_Disposed_ThrowsObjectDisposedException()
        {
            var lua      = new Lua();
            var function = lua.CreateFunction("return 0");

            lua.Dispose();

            Assert.Throws <ObjectDisposedException>(() => lua.CreateThread(function));
        }
コード例 #9
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_ArgWrongLuaEnvironment_ThrowsArgumentException()
        {
            using (var lua = new Lua())
                using (var lua2 = new Lua()) {
                    var function = lua.CreateFunction("");
                    var table    = lua2.CreateTable();

                    Assert.Throws <ArgumentException>(() => function.Call(table));
                }
        }
コード例 #10
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_NoResults()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("return");

                var results = function.Call();

                Assert.Empty(results);
            }
        }
コード例 #11
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
        public void CreateFunctionDelegate()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction(new Func <int, int>(x => x * x));

                var results = function.Call(10);
                Assert.Single(results);
                Assert.Equal(100L, results[0]);
            }
        }
コード例 #12
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void CallDynamic()
        {
            using (var lua = new Lua()) {
                dynamic function = lua.CreateFunction("return 6");

                dynamic results = function();

                Assert.Single(results);
                Assert.Equal(6L, results[0]);
            }
        }
コード例 #13
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_NoArgs()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("return 1979");

                var results = function.Call();

                Assert.Single(results);
                Assert.Equal(1979L, results[0]);
            }
        }
コード例 #14
0
        public void GetSet_Function()
        {
            using (var lua = new Lua()) {
                var table    = lua.CreateTable();
                var function = lua.CreateFunction("return 0");

                table["test"] = function;

                Assert.Same(function, table["test"]);
            }
        }
コード例 #15
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_OneArg()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("return ...");

                var results = function.Call("test");

                Assert.Single(results);
                Assert.Equal("test", results[0]);
            }
        }
コード例 #16
0
        public void SetProperty(int n)
        {
            using (var lua = new Lua()) {
                lua["test"] = new TestClass();
                var function = lua.CreateFunction("test.TestProperty = 0");

                for (var i = 0; i < n; ++i)
                {
                    function.Call();
                }
            }
        }
コード例 #17
0
        public void CallMethod_Args(int n)
        {
            using (var lua = new Lua()) {
                lua["test"] = new TestClass();
                var function = lua.CreateFunction("test:TestMethod2(0, 0)");

                for (var i = 0; i < n; ++i)
                {
                    function.Call();
                }
            }
        }
コード例 #18
0
        public void CallGenericMethod(int n)
        {
            using (var lua = new Lua()) {
                lua.ImportType(typeof(int));
                lua["test"] = new TestClass();
                var function = lua.CreateFunction("test:TestMethod(Int32)()");

                for (var i = 0; i < n; ++i)
                {
                    function.Call();
                }
            }
        }
コード例 #19
0
        public void Test()
        {
            using (var lua = new Lua()) {
                var indexFunction = lua.CreateFunction("return 1");
                var metatable     = lua.CreateTable();
                metatable["__index"] = indexFunction;

                lua.DoString("table = {}");

                var table = (LuaTable)lua["table"];
                table.Metatable = metatable;

                lua.DoString(TestString);
            }
        }
コード例 #20
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_ManyResults()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("return 0, 1, 4, 9, 16");

                var results = function.Call("test");

                Assert.Equal(5, results.Length);
                Assert.Equal(0L, results[0]);
                Assert.Equal(1L, results[1]);
                Assert.Equal(4L, results[2]);
                Assert.Equal(9L, results[3]);
                Assert.Equal(16L, results[4]);
            }
        }
コード例 #21
0
ファイル: LuaFunctionTests.cs プロジェクト: bsnote/Triton
        public void Call_ManyArgs()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction(@"
                    result = 0
                    for _, val in ipairs({...}) do
                        result = result + val
                    end
                    return result");

                var results = function.Call(6, 51, 29, -51, -29, 12);

                Assert.Single(results);
                Assert.Equal(18L, results[0]);
            }
        }
コード例 #22
0
        public void LotsOfReferencesCleanedUp(int n)
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction("x = 0 + 0");

                for (var i = 0; i < n; ++i)
                {
                    lua.CreateTable();
                    lua.CreateTable();
                    lua.CreateTable();

                    for (var j = 0; j < 1000; ++j)
                    {
                        function.Call();
                    }
                }
            }
        }
コード例 #23
0
        public void Test()
        {
            using (var lua = new Lua()) {
                var function = lua.CreateFunction(TestString);
                var thread   = lua.CreateThread(function);
                Assert.True(thread.CanResume);

                for (var i = 1; i <= 10; ++i)
                {
                    var results = thread.Resume();

                    Assert.Single(results);
                    Assert.Equal((long)i, results[0]);
                    Assert.Equal((long)i, lua["x"]);
                    Assert.True(thread.CanResume);
                }

                var results2 = thread.Resume();

                Assert.Single(results2);
                Assert.Equal(-1L, results2[0]);
                Assert.False(thread.CanResume);
            }
        }
コード例 #24
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
 public void CreateFunctionString_NullS_ThrowsArgumentNullException()
 {
     using (var lua = new Lua()) {
         Assert.Throws <ArgumentNullException>(() => lua.CreateFunction((string)null));
     }
 }
コード例 #25
0
ファイル: LuaTests.cs プロジェクト: bsnote/Triton
 public void LoadString_SyntaxError_ThrowsLuaException(string s)
 {
     using (var lua = new Lua()) {
         Assert.Throws <LuaException>(() => lua.CreateFunction(s));
     }
 }