public void TestXMove() { LuaState L = null; using (L = new LuaState()) { L.PushString("#1 Line 1"); L.PushString("#1 Line 2"); L.PushString("#1 Line 3"); Assert.Equal(3, L.GetTop()); using (LuaState L2 = new LuaState()) { L2.PushString("#2 Line 1"); L2.PushString("#2 Line 2"); L2.PushString("#2 Line 3"); Assert.Equal(3, L2.GetTop()); Assert.Same(L, L.XMove(L2, 2)); Assert.Equal(1, L.GetTop()); Assert.Equal(5, L2.GetTop()); Assert.Equal("#1 Line 1", L.ToString(1)); Assert.Equal(null, L.ToString(2)); Assert.Equal("#2 Line 1", L2.ToString(1)); Assert.Equal("#2 Line 2", L2.ToString(2)); Assert.Equal("#2 Line 3", L2.ToString(3)); Assert.Equal("#1 Line 2", L2.ToString(4)); Assert.Equal("#1 Line 3", L2.ToString(5)); } Assert.Throws<ArgumentNullException>(() => L.XMove(null, 1)); var mockLs = new Mock<ILuaState>(); Assert.Throws<InvalidOperationException>(() => L.XMove(mockLs.Object, 1)); } }