Ejemplo n.º 1
0
        public void GetStatus()
        {
            using (var lua = new NLua.Lua())
            {
                lua.LoadCoroutineManager();
                lua.DoString("function test() coroutine.yield() coroutine.yield() coroutine.yield() end");

                lua.CreateCoroutine("test");
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Suspended);

                bool isValid;
                lua.ResumeCoroutine("test", out isValid);
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Suspended);
                lua.ResumeCoroutine("test", out isValid);
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Suspended);
                lua.ResumeCoroutine("test", out isValid);
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Suspended);
                lua.ResumeCoroutine("test", out isValid);
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Dead);
            }
        }
Ejemplo n.º 2
0
        public void ResumeCoroutine()
        {
            using (var lua = new NLua.Lua())
            {
                lua.LoadCoroutineManager();
                lua.DoString("function test() local x = 1; coroutine.yield(x); return 2 end");

                lua.CreateCoroutine("test");
                bool isValid;
                object[] results = lua.ResumeCoroutine("test", out isValid);
                Assert.IsTrue(isValid);
                Assert.IsTrue((int)(double)results[0] == 1);

                results = lua.ResumeCoroutine("test", out isValid);
                Assert.IsTrue(isValid);
                Assert.IsTrue((int)(double)results[0] == 2);

                results = lua.ResumeCoroutine("test", out isValid);
                Assert.IsFalse(isValid);
                Assert.IsTrue((string)results[0] == "cannot resume dead coroutine");
            }
        }
Ejemplo n.º 3
0
        public void RunCoroutine()
        {
            using (var lua = new NLua.Lua())
            {
                lua.LoadCoroutineManager();
                lua.DoString("function test() return 'truc', 2 end");

                lua.CreateCoroutine("test");
                bool isValid;
                object[] results = lua.ResumeCoroutine("test", out isValid);

                Assert.IsTrue(isValid);
                Assert.IsTrue((string)results[0] == "truc");
                Assert.IsTrue((int)(double)results[1] == 2);
            }
        }
Ejemplo n.º 4
0
        public void ResumeCoroutineBis()
        {
            using (var lua = new NLua.Lua())
            {
                lua.LoadCoroutineManager();
                lua.DoString("function test() x = 1; coroutine.yield(x); return 2 end");

                lua.CreateCoroutine("test");
                LuaCoroutineResult result = lua.ResumeCoroutine("test");

                Assert.IsTrue(result.IsValid);
                Assert.IsTrue((int)(double)result.Results[0] == 1);
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Suspended);

                result = lua.ResumeCoroutine("test");

                Assert.IsTrue(result.IsValid);
                Assert.IsTrue((int)(double)result.Results[0] == 2);
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Dead);

                result = lua.ResumeCoroutine("test");

                Assert.IsFalse(result.IsValid);
                Assert.IsTrue(result.ErrorMessage == "cannot resume dead coroutine");
                Assert.IsTrue(lua.StatusCoroutine("test") == LuaCoroutineStatus.Dead);
            }
        }