Unverified Commit 469c964b authored by Vinicius Jarina's avatar Vinicius Jarina Committed by GitHub
Browse files

Cleanup tests. (#277)

parent 5e9a190a
...@@ -778,7 +778,7 @@ namespace NLua ...@@ -778,7 +778,7 @@ namespace NLua
public void LoadCLRPackage() public void LoadCLRPackage()
{ {
_luaState.DoString(Lua.clr_package); _luaState.DoString(clr_package);
} }
/* /*
* Gets a function global variable as a delegate of * Gets a function global variable as a delegate of
......
using System;
using NLua;
namespace NLuaTest.TestTypes
{
class LuaITestClassHandler : ILuaGeneratedType, ITest
{
public LuaTable __luaInterface_luaTable;
public Type[][] __luaInterface_returnTypes;
public LuaITestClassHandler(LuaTable luaTable, Type[][] returnTypes)
{
__luaInterface_luaTable = luaTable;
__luaInterface_returnTypes = returnTypes;
}
public LuaTable LuaInterfaceGetLuaTable()
{
return __luaInterface_luaTable;
}
public int intProp
{
get
{
object[] args = { __luaInterface_luaTable };
object[] inArgs = { __luaInterface_luaTable };
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[0];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "get_intProp");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
set
{
int i = value;
object[] args = {
__luaInterface_luaTable ,
i
};
object[] inArgs = {
__luaInterface_luaTable,
i
};
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[1];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "set_intProp");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
}
}
public TestClass refProp
{
get
{
object[] args = { __luaInterface_luaTable };
object[] inArgs = { __luaInterface_luaTable };
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[2];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "get_refProp");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (TestClass)ret;
}
set
{
TestClass test = value;
object[] args = {
__luaInterface_luaTable ,
test
};
object[] inArgs = {
__luaInterface_luaTable,
test
};
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[3];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "set_refProp");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
}
}
public int test1(int a, int b)
{
object[] args = {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[4];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test1");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
public int test2(int a, out int b)
{
object[] args = {
__luaInterface_luaTable,
a,
0
};
object[] inArgs = {
__luaInterface_luaTable,
a
};
int[] outArgs = { 1 };
Type[] returnTypes = __luaInterface_returnTypes[5];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test2");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (int)args[1];
return (int)ret;
}
public void test3(int a, ref int b)
{
object[] args = {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = { 1 };
Type[] returnTypes = __luaInterface_returnTypes[6];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test3");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (int)args[1];
}
public TestClass test4(int a, int b)
{
object[] args = {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[7];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test4");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (TestClass)ret;
}
public int test5(TestClass a, TestClass b)
{
object[] args = {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = { };
Type[] returnTypes = __luaInterface_returnTypes[8];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test5");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
public int test6(int a, out TestClass b)
{
object[] args = {
__luaInterface_luaTable,
a,
null
};
object[] inArgs = {
__luaInterface_luaTable,
a,
};
int[] outArgs = { 1 };
Type[] returnTypes = __luaInterface_returnTypes[9];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test6");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (TestClass)args[1];
return (int)ret;
}
public void test7(int a, ref TestClass b)
{
object[] args = {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = { 1 };
Type[] returnTypes = __luaInterface_returnTypes[10];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test7");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (TestClass)args[1];
}
}
}
using System;
using NLua;
namespace NLuaTest.TestTypes
{
class LuaTestClassHandler : TestClass, ILuaGeneratedType
{
public LuaTable __luaInterface_luaTable;
public Type[][] __luaInterface_returnTypes;
public LuaTestClassHandler(LuaTable luaTable, Type[][] returnTypes)
{
__luaInterface_luaTable = luaTable;
__luaInterface_returnTypes = returnTypes;
}
public LuaTable LuaInterfaceGetLuaTable()
{
return __luaInterface_luaTable;
}
public override int overridableMethod(int x, int y)
{
object[] args = new object[] {
__luaInterface_luaTable,
x,
y
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
x,
y
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[0];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "overridableMethod");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
}
}
using System; using System;
using System.Text; using System.Text;
using System.Collections.Generic; using System.Collections.Generic;
using NUnit.Framework; using NUnit.Framework;
using NLuaTest.Mock;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using NLua; using NLua;
using NLua.Exceptions; using NLua.Exceptions;
#if !__TVOS__ && !__IOS__ && !__WATCHOS__ using NLuaTest.TestTypes;
#if !__TVOS__ && !__IOS__ && !__WATCHOS__
namespace NLuaTest namespace NLuaTest
{ {
[TestFixture] [TestFixture]
public class AAACodeGenTests public class CodeGenTests
{ {
/* /*
* Tests passing a Lua function to a delegate * Tests passing a Lua function to a delegate
...@@ -26,7 +29,7 @@ namespace NLuaTest ...@@ -26,7 +29,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return x+y; end"); lua.DoString("function func(x,y) return x+y; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
...@@ -46,7 +49,7 @@ namespace NLuaTest ...@@ -46,7 +49,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x) return x,x*2; end"); lua.DoString("function func(x) return x,x*2; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
...@@ -66,7 +69,7 @@ namespace NLuaTest ...@@ -66,7 +69,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return x+y; end"); lua.DoString("function func(x,y) return x+y; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
...@@ -86,7 +89,7 @@ namespace NLuaTest ...@@ -86,7 +89,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return TestClass(x+y); end"); lua.DoString("function func(x,y) return TestClass(x+y); end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
...@@ -106,7 +109,7 @@ namespace NLuaTest ...@@ -106,7 +109,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return x.testval+y.testval; end"); lua.DoString("function func(x,y) return x.testval+y.testval; end");
lua.DoString("a=test:callDelegate5(func)"); lua.DoString("a=test:callDelegate5(func)");
...@@ -125,7 +128,7 @@ namespace NLuaTest ...@@ -125,7 +128,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x) return x,TestClass(x*2); end"); lua.DoString("function func(x) return x,TestClass(x*2); end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
...@@ -145,7 +148,7 @@ namespace NLuaTest ...@@ -145,7 +148,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return TestClass(x+y.testval); end"); lua.DoString("function func(x,y) return TestClass(x+y.testval); end");
lua.DoString("a=test:callDelegate7(func)"); lua.DoString("a=test:callDelegate7(func)");
...@@ -166,7 +169,7 @@ namespace NLuaTest ...@@ -166,7 +169,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test1(x,y) return x+y; end"); lua.DoString("function itest:test1(x,y) return x+y; end");
...@@ -188,10 +191,10 @@ namespace NLuaTest ...@@ -188,10 +191,10 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test={}"); lua.DoString("test={}");
lua.DoString("function test:overridableMethod(x,y) print(self[base]); return 6 end"); lua.DoString("function test:overridableMethod(x,y) print(self[base]); return 6 end");
lua.DoString("luanet.make_object(test,'NLuaTest.Mock.TestClass')"); lua.DoString("luanet.make_object(test,'NLuaTest.TestTypes.TestClass')");
lua.DoString("a=TestClass.callOverridable(test,2,3)"); lua.DoString("a=TestClass.callOverridable(test,2,3)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
lua.DoString("luanet.free_object(test)"); lua.DoString("luanet.free_object(test)");
......
...@@ -17,7 +17,7 @@ namespace NLuaTest ...@@ -17,7 +17,7 @@ namespace NLuaTest
#endif #endif
public class Core public class Core
{ {
Lua lua = null; Lua _lua;
string GetTestPath(string name) string GetTestPath(string name)
{ {
...@@ -27,7 +27,7 @@ namespace NLuaTest ...@@ -27,7 +27,7 @@ namespace NLuaTest
void AssertFile(string path) void AssertFile(string path)
{ {
lua.DoFile(path); _lua.DoFile(path);
} }
void TestLuaFile(string name) void TestLuaFile(string name)
...@@ -39,10 +39,10 @@ namespace NLuaTest ...@@ -39,10 +39,10 @@ namespace NLuaTest
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
lua = new Lua(); _lua = new Lua();
lua.RegisterFunction("WriteLineString", typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) })); _lua.RegisterFunction("WriteLineString", typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }));
lua.DoString(@" _lua.DoString(@"
function print (param) function print (param)
WriteLineString (tostring(param)) WriteLineString (tostring(param))
end end
...@@ -52,8 +52,8 @@ namespace NLuaTest ...@@ -52,8 +52,8 @@ namespace NLuaTest
[TearDown] [TearDown]
public void TearDown() public void TearDown()
{ {
lua.Dispose(); _lua.Dispose();
lua = null; _lua = null;
} }
[Test] [Test]
...@@ -105,6 +105,5 @@ namespace NLuaTest ...@@ -105,6 +105,5 @@ namespace NLuaTest
{ {
TestLuaFile("sort"); TestLuaFile("sort");
} }
} }
} }
...@@ -2,8 +2,6 @@ using System; ...@@ -2,8 +2,6 @@ using System;
using System.IO; using System.IO;
using NLua; using NLua;
using NLuaTest.Mock;
using NUnit.Framework; using NUnit.Framework;
...@@ -45,7 +43,7 @@ namespace LoadFileTests ...@@ -45,7 +43,7 @@ namespace LoadFileTests
int height = (int)(double)lua["height"]; int height = (int)(double)lua["height"];
string message = (string)lua["message"]; string message = (string)lua["message"];
int color_g = (int)(double)lua["color.g"]; int color_g = (int)(double)lua["color.g"];
LuaFunction func = (LuaFunction)lua["func"]; var func = (LuaFunction)lua["func"];
object[] res = func.Call(12, 34); object[] res = func.Call(12, 34);
int x = (int)(double)res[0]; int x = (int)(double)res[0];
int y = (int)(double)res[1]; int y = (int)(double)res[1];
...@@ -82,7 +80,7 @@ namespace LoadFileTests ...@@ -82,7 +80,7 @@ namespace LoadFileTests
int height = (int)(double)lua["height"]; int height = (int)(double)lua["height"];
string message = (string)lua["message"]; string message = (string)lua["message"];
int color_g = (int)(double)lua["color.g"]; int color_g = (int)(double)lua["color.g"];
LuaFunction func = (LuaFunction)lua["func"]; var func = (LuaFunction)lua["func"];
object[] res = func.Call(12, 34); object[] res = func.Call(12, 34);
int x = (int)(double)res[0]; int x = (int)(double)res[0];
int y = (int)(double)res[1]; int y = (int)(double)res[1];
......
using System; using System;
using System.IO;
using System.Text; using System.Text;
using NLuaTest.Mock;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using LoadFileTests;
using NLua; using NLua;
using NLua.Exceptions; using NLua.Exceptions;
#if __IOS__ || __TVOS__ || __WATCHOS__ using LoadFileTests;
using Foundation; using NLuaTest.TestTypes;
#endif
using NUnit.Framework; using NUnit.Framework;
// ReSharper disable StringLiteralTypo
namespace NLuaTest namespace NLuaTest
{ {
public class parameter
{
public string field1 = "parameter-field1";
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class master
{
public static string read()
{
return "test-master";
}
public static string read(parameter test)
{
return test.field1;
}
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class testClass : master
{
public String strData;
public int intData;
public static string read2()
{
return "test";
}
public static string read(int test)
{
return "int-test";
}
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class DefaultElementModel
{
public Action<double> DrawMe { get; set; }
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class TestCaseName
{
public string name = "name";
public string Name => "**" + name + "**";
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class Vector
{
public double x;
public double y;
public static Vector operator *(float k, Vector v)
{
var r = new Vector();
r.x = v.x * k;
r.y = v.y * k;
return r;
}
public static Vector operator *(Vector v, float k)
{
var r = new Vector();
r.x = v.x * k;
r.y = v.y * k;
return r;
}
public void Func()
{
Console.WriteLine("Func");
}
}
public static class VectorExtension
{
public static double Length(this Vector v)
{
return v.x * v.x + v.y * v.y;
}
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class Person
{
public string firstName;
}
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class Employee : Person
{
public string occupation;
}
public static class PersonExentsions
{
public static string GetFirstName(this Person argPerson)
{
return argPerson.firstName;
}
}
[TestFixture] [TestFixture]
#if __IOS__ || __TVOS__ || __WATCHOS__
[Preserve (AllMembers = true)]
#endif
public class LuaTests public class LuaTests
{ {
public static readonly char UnicodeChar = '\uE007'; public static readonly char UnicodeChar = '\uE007';
public static string UnicodeString public static string UnicodeString => Convert.ToString(UnicodeChar);
{ public static string UnicodeStringRussian => "Файл";
get
{
return Convert.ToString(UnicodeChar);
}
}
public static string UnicodeStringRussian
{
get
{
return "Файл";
}
}
/* /*
* Tests capturing an exception * Tests capturing an exception
*/ */
...@@ -165,12 +33,13 @@ namespace NLuaTest ...@@ -165,12 +33,13 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass = luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test = TestClass()");
lua.DoString("err,errMsg=pcall(test.exceptionMethod,test)"); lua.DoString("err,errMsg = pcall(test.exceptionMethod,test)");
bool err = (bool)lua["err"]; bool err = (bool)lua["err"];
Exception errMsg = (Exception)lua["errMsg"];
var errMsg = (Exception)lua["errMsg"];
Assert.AreEqual(false, err); Assert.AreEqual(false, err);
Assert.AreNotEqual(null, errMsg.InnerException); Assert.AreNotEqual(null, errMsg.InnerException);
Assert.AreEqual("exception test", errMsg.InnerException.Message); Assert.AreEqual("exception test", errMsg.InnerException.Message);
...@@ -189,8 +58,8 @@ namespace NLuaTest ...@@ -189,8 +58,8 @@ namespace NLuaTest
lua["funcObject"] = lua.GetFunction("someFunc"); lua["funcObject"] = lua.GetFunction("someFunc");
//lua.DoString("luanet.load_assembly('mscorlib')"); //lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("b = TestClass():TestLuaFunction(funcObject)[0]"); lua.DoString("b = TestClass():TestLuaFunction(funcObject)[0]");
Assert.AreEqual(3, lua["b"]); Assert.AreEqual(3, lua["b"]);
lua.DoString("a = TestClass():TestLuaFunction(nil)"); lua.DoString("a = TestClass():TestLuaFunction(nil)");
...@@ -207,8 +76,8 @@ namespace NLuaTest ...@@ -207,8 +76,8 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
try try
...@@ -235,8 +104,8 @@ namespace NLuaTest ...@@ -235,8 +104,8 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("val=test.NullableBool"); lua.DoString("val=test.NullableBool");
Assert.AreEqual(null, (object)lua["val"]); Assert.AreEqual(null, (object)lua["val"]);
...@@ -254,10 +123,10 @@ namespace NLuaTest ...@@ -254,10 +123,10 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("TestStruct=luanet.import_type('NLuaTest.Mock.TestStruct')"); lua.DoString("TestStruct=luanet.import_type('NLuaTest.TestTypes.TestStruct')");
lua.DoString("struct=TestStruct(2)"); lua.DoString("struct=TestStruct(2)");
lua.DoString("test.Struct = struct"); lua.DoString("test.Struct = struct");
lua.DoString("val=test.Struct.val"); lua.DoString("val=test.Struct.val");
...@@ -273,8 +142,8 @@ namespace NLuaTest ...@@ -273,8 +142,8 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestStruct=luanet.import_type('NLuaTest.Mock.TestStruct')"); lua.DoString("TestStruct=luanet.import_type('NLuaTest.TestTypes.TestStruct')");
lua.DoString("struct=TestStruct()"); lua.DoString("struct=TestStruct()");
Assert.AreEqual(new TestStruct(), (TestStruct)lua["struct"]); Assert.AreEqual(new TestStruct(), (TestStruct)lua["struct"]);
} }
...@@ -285,8 +154,8 @@ namespace NLuaTest ...@@ -285,8 +154,8 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestStruct=luanet.import_type('NLuaTest.Mock.TestStruct')"); lua.DoString("TestStruct=luanet.import_type('NLuaTest.TestTypes.TestStruct')");
lua.DoString("struct1=TestStruct(0)"); lua.DoString("struct1=TestStruct(0)");
lua.DoString("struct2=TestStruct(0)"); lua.DoString("struct2=TestStruct(0)");
lua.DoString("struct2.val=1"); lua.DoString("struct2.val=1");
...@@ -299,8 +168,8 @@ namespace NLuaTest ...@@ -299,8 +168,8 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestEnum=luanet.import_type('NLuaTest.Mock.TestEnum')"); lua.DoString("TestEnum=luanet.import_type('NLuaTest.TestTypes.TestEnum')");
lua.DoString("enum1=TestEnum.ValueA"); lua.DoString("enum1=TestEnum.ValueA");
lua.DoString("enum2=TestEnum.ValueB"); lua.DoString("enum2=TestEnum.ValueB");
Assert.AreEqual(true, (bool)lua.DoString("return enum1 ~= enum2")[0]); Assert.AreEqual(true, (bool)lua.DoString("return enum1 ~= enum2")[0]);
...@@ -314,8 +183,8 @@ namespace NLuaTest ...@@ -314,8 +183,8 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("test:MethodOverload()"); lua.DoString("test:MethodOverload()");
lua.DoString("test:MethodOverload(test)"); lua.DoString("test:MethodOverload(test)");
...@@ -356,8 +225,6 @@ namespace NLuaTest ...@@ -356,8 +225,6 @@ namespace NLuaTest
"abs = math.abs;" "abs = math.abs;"
); );
lua.DoString("function calcVP(a,b) return a+b end"); lua.DoString("function calcVP(a,b) return a+b end");
//LuaFunction lf = lua.GetFunction("calcVP");
//lf.Call(i, 20);
} }
[Test] [Test]
...@@ -406,8 +273,8 @@ namespace NLuaTest ...@@ -406,8 +273,8 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
try try
...@@ -433,7 +300,7 @@ namespace NLuaTest ...@@ -433,7 +300,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.RegisterFunction("p", null, typeof(Console).GetMethod("WriteLine", new [] { typeof(string) })); lua.RegisterFunction("p", null, typeof(Console).GetMethod("WriteLine", new [] { typeof(string) }));
lua.DoString("p('Foo')"); lua.DoString("p('Foo')");
// Yet this works... // Yet this works...
...@@ -451,11 +318,11 @@ namespace NLuaTest ...@@ -451,11 +318,11 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test={}"); lua.DoString("test={}");
lua.DoString("function test:overridableMethod(x,y) return x*y; end"); lua.DoString("function test:overridableMethod(x,y) return x*y; end");
lua.DoString("luanet.make_object(test,'NLuaTest.Mock.TestClass')"); lua.DoString("luanet.make_object(test,'NLuaTest.TestTypes.TestClass')");
lua.DoString("a=TestClass.callOverridable(test,2,3)"); lua.DoString("a=TestClass.callOverridable(test,2,3)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
lua.DoString("luanet.free_object(test)"); lua.DoString("luanet.free_object(test)");
...@@ -473,17 +340,16 @@ namespace NLuaTest ...@@ -473,17 +340,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test={}"); lua.DoString("test={}");
lua.DoString("function test:overridableMethod(x,y) return x*y; end"); lua.DoString("function test:overridableMethod(x,y) return x*y; end");
lua.DoString("luanet.make_object(test,'NLuaTest.Mock.TestClass')"); lua.DoString("luanet.make_object(test,'NLuaTest.TestTypes.TestClass')");
lua.DoString("test:setVal(3)"); lua.DoString("test:setVal(3)");
lua.DoString("a=test.testval"); lua.DoString("a=test.testval");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
lua.DoString("luanet.free_object(test)"); lua.DoString("luanet.free_object(test)");
Assert.AreEqual(3, a); Assert.AreEqual(3, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
...@@ -499,16 +365,7 @@ namespace NLuaTest ...@@ -499,16 +365,7 @@ namespace NLuaTest
return val * val2; return val * val2;
} }
class LuaEventArgsHandler : NLua.Method.LuaDelegate
{
void CallFunction(object sender, EventArgs eventArgs)
{
object[] args = new object[] { sender, eventArgs };
object[] inArgs = new object[] { sender, eventArgs };
int[] outArgs = new int[] { };
base.CallFunction(args, inArgs, outArgs);
}
}
[Test] [Test]
public void TestEventException() public void TestEventException()
...@@ -516,7 +373,7 @@ namespace NLuaTest ...@@ -516,7 +373,7 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
//Register a C# function //Register a C# function
MethodInfo testException = this.GetType().GetMethod("_TestException", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Instance, null, new Type[] { MethodInfo testException = GetType().GetMethod("_TestException", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Instance, null, new Type[] {
typeof(float), typeof(float),
typeof(float) typeof(float)
}, null); }, null);
...@@ -540,7 +397,7 @@ namespace NLuaTest ...@@ -540,7 +397,7 @@ namespace NLuaTest
Entity entity = new Entity(); Entity entity = new Entity();
//Register the entity object with the event handler inside lua //Register the entity object with the event handler inside lua
LuaFunction lf = lua.GetFunction("SubscribeEntity"); LuaFunction lf = lua.GetFunction("SubscribeEntity");
lf.Call(new object[1] { entity }); lf.Call(entity);
try try
{ {
...@@ -609,8 +466,8 @@ namespace NLuaTest ...@@ -609,8 +466,8 @@ namespace NLuaTest
try try
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass(56)"); lua.DoString("test=TestClass(56)");
lua.DoString("genericMethod2(test)"); lua.DoString("genericMethod2(test)");
} }
...@@ -619,7 +476,7 @@ namespace NLuaTest ...@@ -619,7 +476,7 @@ namespace NLuaTest
} }
Assert.AreEqual(true, classWithGenericMethod.GenericMethodSuccess); Assert.AreEqual(true, classWithGenericMethod.GenericMethodSuccess);
Assert.AreEqual(56, (classWithGenericMethod.PassedValue as TestClass).val); Assert.AreEqual(56, (classWithGenericMethod.PassedValue as TestTypes.TestClass).val);
} }
} }
...@@ -646,12 +503,13 @@ namespace NLuaTest ...@@ -646,12 +503,13 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); TestTypes.TestClass t1 = new TestTypes.TestClass();
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("a,b,c=netobj:outValMutiple(2)"); lua.DoString("a,b,c=netobj:outValMutiple(2)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
string b = (string)lua.GetString("b"); string b = lua.GetString("b");
string c = (string)lua.GetString("c"); string c = lua.GetString("c");
Assert.AreEqual(2, a); Assert.AreEqual(2, a);
Assert.AreNotEqual(null, b); Assert.AreNotEqual(null, b);
Assert.AreNotEqual(null, c); Assert.AreNotEqual(null, c);
...@@ -720,8 +578,8 @@ namespace NLuaTest ...@@ -720,8 +578,8 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a = test:NullableMethod(nil)"); lua.DoString("a = test:NullableMethod(nil)");
Assert.AreEqual(null, lua["a"]); Assert.AreEqual(null, lua["a"]);
...@@ -774,7 +632,7 @@ namespace NLuaTest ...@@ -774,7 +632,7 @@ namespace NLuaTest
lua.DoString("a=2"); lua.DoString("a=2");
lua["a"] = 3; lua["a"] = 3;
double num = lua.GetNumber("a"); double num = lua.GetNumber("a");
//Console.WriteLine("a="+num);
Assert.AreEqual(num, 3d); Assert.AreEqual(num, 3d);
} }
} }
...@@ -849,7 +707,6 @@ namespace NLuaTest ...@@ -849,7 +707,6 @@ namespace NLuaTest
{ {
lua.DoString("a={b={c=\"test\"}}"); lua.DoString("a={b={c=\"test\"}}");
string str = lua.GetString("a.b.c"); string str = lua.GetString("a.b.c");
//Console.WriteLine("a.b.c="+str);
Assert.AreEqual(str, "test"); Assert.AreEqual(str, "test");
} }
} }
...@@ -865,7 +722,6 @@ namespace NLuaTest ...@@ -865,7 +722,6 @@ namespace NLuaTest
lua.DoString("a={b={c=\"test\"}}"); lua.DoString("a={b={c=\"test\"}}");
lua["a.b.c"] = "new test"; lua["a.b.c"] = "new test";
string str = lua.GetString("a.b.c"); string str = lua.GetString("a.b.c");
//Console.WriteLine("a.b.c="+str);
Assert.AreEqual(str, "new test"); Assert.AreEqual(str, "new test");
} }
} }
...@@ -881,7 +737,6 @@ namespace NLuaTest ...@@ -881,7 +737,6 @@ namespace NLuaTest
LuaTable tab = lua.GetTable("b"); LuaTable tab = lua.GetTable("b");
lua["a.b"] = tab; lua["a.b"] = tab;
double num = lua.GetNumber("a.b.c"); double num = lua.GetNumber("a.b.c");
//Console.WriteLine("a.b.c="+num);
Assert.AreEqual(num, 3d); Assert.AreEqual(num, 3d);
} }
} }
...@@ -896,7 +751,6 @@ namespace NLuaTest ...@@ -896,7 +751,6 @@ namespace NLuaTest
lua.DoString("a={b={c=2}}"); lua.DoString("a={b={c=2}}");
LuaTable tab = lua.GetTable("a.b"); LuaTable tab = lua.GetTable("a.b");
double num = (double)tab["c"]; double num = (double)tab["c"];
//Console.WriteLine("a.b.c="+num);
Assert.AreEqual(num, 2d); Assert.AreEqual(num, 2d);
} }
} }
...@@ -912,7 +766,6 @@ namespace NLuaTest ...@@ -912,7 +766,6 @@ namespace NLuaTest
lua.DoString("a={b={c=2}}"); lua.DoString("a={b={c=2}}");
LuaTable tab = lua.GetTable("a"); LuaTable tab = lua.GetTable("a");
double num = (double)tab["b.c"]; double num = (double)tab["b.c"];
//Console.WriteLine("a.b.c="+num);
Assert.AreEqual(num, 2d); Assert.AreEqual(num, 2d);
} }
} }
...@@ -928,7 +781,6 @@ namespace NLuaTest ...@@ -928,7 +781,6 @@ namespace NLuaTest
LuaTable tab = lua.GetTable("a.b"); LuaTable tab = lua.GetTable("a.b");
tab["c"] = 3; tab["c"] = 3;
double num = lua.GetNumber("a.b.c"); double num = lua.GetNumber("a.b.c");
//Console.WriteLine("a.b.c="+num);
Assert.AreEqual(num, 3d); Assert.AreEqual(num, 3d);
} }
} }
...@@ -945,7 +797,6 @@ namespace NLuaTest ...@@ -945,7 +797,6 @@ namespace NLuaTest
LuaTable tab = lua.GetTable("a"); LuaTable tab = lua.GetTable("a");
tab["b.c"] = 3; tab["b.c"] = 3;
double num = lua.GetNumber("a.b.c"); double num = lua.GetNumber("a.b.c");
//Console.WriteLine("a.b.c="+num);
Assert.AreEqual(num, 3d); Assert.AreEqual(num, 3d);
} }
} }
...@@ -960,7 +811,6 @@ namespace NLuaTest ...@@ -960,7 +811,6 @@ namespace NLuaTest
lua.DoString("a={b={c=\"test\"}}"); lua.DoString("a={b={c=\"test\"}}");
LuaTable tab = lua.GetTable("a.b"); LuaTable tab = lua.GetTable("a.b");
string str = (string)tab["c"]; string str = (string)tab["c"];
//Console.WriteLine("a.b.c="+str);
Assert.AreEqual(str, "test"); Assert.AreEqual(str, "test");
} }
} }
...@@ -976,7 +826,6 @@ namespace NLuaTest ...@@ -976,7 +826,6 @@ namespace NLuaTest
lua.DoString("a={b={c=\"test\"}}"); lua.DoString("a={b={c=\"test\"}}");
LuaTable tab = lua.GetTable("a"); LuaTable tab = lua.GetTable("a");
string str = (string)tab["b.c"]; string str = (string)tab["b.c"];
//Console.WriteLine("a.b.c="+str);
Assert.AreEqual(str, "test"); Assert.AreEqual(str, "test");
} }
} }
...@@ -992,7 +841,6 @@ namespace NLuaTest ...@@ -992,7 +841,6 @@ namespace NLuaTest
LuaTable tab = lua.GetTable("a.b"); LuaTable tab = lua.GetTable("a.b");
tab["c"] = "new test"; tab["c"] = "new test";
string str = lua.GetString("a.b.c"); string str = lua.GetString("a.b.c");
//Console.WriteLine("a.b.c="+str);
Assert.AreEqual(str, "new test"); Assert.AreEqual(str, "new test");
} }
} }
...@@ -1009,7 +857,6 @@ namespace NLuaTest ...@@ -1009,7 +857,6 @@ namespace NLuaTest
LuaTable tab = lua.GetTable("a"); LuaTable tab = lua.GetTable("a");
tab["b.c"] = "new test"; tab["b.c"] = "new test";
string str = lua.GetString("a.b.c"); string str = lua.GetString("a.b.c");
//Console.WriteLine("a.b.c="+str);
Assert.AreEqual(str, "new test"); Assert.AreEqual(str, "new test");
} }
} }
...@@ -1024,7 +871,6 @@ namespace NLuaTest ...@@ -1024,7 +871,6 @@ namespace NLuaTest
lua.DoString("a=2\nfunction f()\na=3\nend"); lua.DoString("a=2\nfunction f()\na=3\nend");
lua.GetFunction("f").Call(); lua.GetFunction("f").Call();
double num = lua.GetNumber("a"); double num = lua.GetNumber("a");
//Console.WriteLine("a="+num);
Assert.AreEqual(num, 3d); Assert.AreEqual(num, 3d);
} }
} }
...@@ -1039,7 +885,6 @@ namespace NLuaTest ...@@ -1039,7 +885,6 @@ namespace NLuaTest
lua.DoString("a=2\nfunction f(x)\na=a+x\nend"); lua.DoString("a=2\nfunction f(x)\na=a+x\nend");
lua.GetFunction("f").Call(1); lua.GetFunction("f").Call(1);
double num = lua.GetNumber("a"); double num = lua.GetNumber("a");
//Console.WriteLine("a="+num);
Assert.AreEqual(num, 3d); Assert.AreEqual(num, 3d);
} }
} }
...@@ -1054,7 +899,6 @@ namespace NLuaTest ...@@ -1054,7 +899,6 @@ namespace NLuaTest
lua.DoString("a=2\nfunction f(x,y)\na=x+y\nend"); lua.DoString("a=2\nfunction f(x,y)\na=x+y\nend");
lua.GetFunction("f").Call(1, 3); lua.GetFunction("f").Call(1, 3);
double num = lua.GetNumber("a"); double num = lua.GetNumber("a");
//Console.WriteLine("a="+num);
Assert.AreEqual(num, 4d); Assert.AreEqual(num, 4d);
} }
} }
...@@ -1068,7 +912,7 @@ namespace NLuaTest ...@@ -1068,7 +912,7 @@ namespace NLuaTest
{ {
lua.DoString("function f(x)\nreturn x+2\nend"); lua.DoString("function f(x)\nreturn x+2\nend");
object[] ret = lua.GetFunction("f").Call(3); object[] ret = lua.GetFunction("f").Call(3);
//Console.WriteLine("ret="+ret[0]);
Assert.AreEqual(1, ret.Length); Assert.AreEqual(1, ret.Length);
Assert.AreEqual(5, (double)ret[0]); Assert.AreEqual(5, (double)ret[0]);
} }
...@@ -1083,7 +927,7 @@ namespace NLuaTest ...@@ -1083,7 +927,7 @@ namespace NLuaTest
{ {
lua.DoString("function f(x,y)\nreturn x,x+y\nend"); lua.DoString("function f(x,y)\nreturn x,x+y\nend");
object[] ret = lua.GetFunction("f").Call(3, 2); object[] ret = lua.GetFunction("f").Call(3, 2);
//Console.WriteLine("ret="+ret[0]+","+ret[1]);
Assert.AreEqual(2, ret.Length); Assert.AreEqual(2, ret.Length);
Assert.AreEqual(3, (double)ret[0]); Assert.AreEqual(3, (double)ret[0]);
Assert.AreEqual(5, (double)ret[1]); Assert.AreEqual(5, (double)ret[1]);
...@@ -1099,7 +943,7 @@ namespace NLuaTest ...@@ -1099,7 +943,7 @@ namespace NLuaTest
{ {
lua.DoString("a={}\nfunction a.f(x,y)\nreturn x,x+y\nend"); lua.DoString("a={}\nfunction a.f(x,y)\nreturn x,x+y\nend");
object[] ret = lua.GetFunction("a.f").Call(3, 2); object[] ret = lua.GetFunction("a.f").Call(3, 2);
//Console.WriteLine("ret="+ret[0]+","+ret[1]);
Assert.AreEqual(2, ret.Length); Assert.AreEqual(2, ret.Length);
Assert.AreEqual(3, (double)ret[0]); Assert.AreEqual(3, (double)ret[0]);
Assert.AreEqual(5, (double)ret[1]); Assert.AreEqual(5, (double)ret[1]);
...@@ -1113,12 +957,12 @@ namespace NLuaTest ...@@ -1113,12 +957,12 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
t1.testval = 4; t1.testval = 4;
lua["netobj"] = t1; lua["netobj"] = t1;
object o = lua["netobj"]; object o = lua["netobj"];
Assert.AreEqual(true, o is TestClass); Assert.AreEqual(true, o is TestTypes.TestClass);
TestClass t2 = (TestClass)lua["netobj"]; var t2 = (TestTypes.TestClass)lua["netobj"];
Assert.AreEqual(t2.testval, 4); Assert.AreEqual(t2.testval, 4);
Assert.AreEqual(t1, t2); Assert.AreEqual(t1, t2);
} }
...@@ -1126,20 +970,20 @@ namespace NLuaTest ...@@ -1126,20 +970,20 @@ namespace NLuaTest
///* ///*
// * Tests if CLR object is being correctly collected by Lua // * Tests if CLR object is being correctly collected by Lua
// */ // */
//[Test] [Test]
//public void GarbageCollection() public void GarbageCollection()
//{ {
// using (Lua lua = new Lua()) using (Lua lua = new Lua())
// { {
// TestClass t1 = new TestClass(); TestClass t1 = new TestClass();
// t1.testval = 4; lua["netobj"] = t1;
// lua["netobj"] = t1; TestClass t2 = (TestClass)lua["netobj"];
// TestClass t2 = (TestClass)lua["netobj"]; Assert.IsNotNull(t2);
// Assert.True(lua[0] != null); lua.DoString("netobj=nil;collectgarbage();");
// lua.DoString("netobj=nil;collectgarbage();"); t2 = (TestClass)lua["netobj"];
// Assert.True(lua.translator.objects[0] == null); Assert.IsNull(t2);
// } }
//} }
/* /*
* Tests setting of a table field to a CLR object value * Tests setting of a table field to a CLR object value
*/ */
...@@ -1150,11 +994,11 @@ namespace NLuaTest ...@@ -1150,11 +994,11 @@ namespace NLuaTest
{ {
lua.DoString("a={b={c=\"test\"}}"); lua.DoString("a={b={c=\"test\"}}");
LuaTable tab = lua.GetTable("a.b"); LuaTable tab = lua.GetTable("a.b");
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
t1.testval = 4; t1.testval = 4;
tab["c"] = t1; tab["c"] = t1;
TestClass t2 = (TestClass)lua["a.b.c"]; var t2 = (TestTypes.TestClass)lua["a.b.c"];
//Console.WriteLine("a.b.c="+t2.testval);
Assert.AreEqual(4, t2.testval); Assert.AreEqual(4, t2.testval);
Assert.AreEqual(t1, t2); Assert.AreEqual(t1, t2);
} }
...@@ -1167,16 +1011,15 @@ namespace NLuaTest ...@@ -1167,16 +1011,15 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
t1.val = 4; t1.val = 4;
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("var=netobj.val"); lua.DoString("var=netobj.val");
double var = (double)lua["var"]; double var = (double)lua["var"];
//Console.WriteLine("value from Lua="+var);
Assert.AreEqual(4, var); Assert.AreEqual(4, var);
lua.DoString("netobj.val=3"); lua.DoString("netobj.val=3");
Assert.AreEqual(3, t1.val); Assert.AreEqual(3, t1.val);
//Console.WriteLine("new val (from Lua)="+t1.val);
} }
} }
/* /*
...@@ -1188,16 +1031,15 @@ namespace NLuaTest ...@@ -1188,16 +1031,15 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
t1.testval = 4; t1.testval = 4;
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("var=netobj.testval"); lua.DoString("var=netobj.testval");
double var = (double)lua["var"]; double var = (double)lua["var"];
//Console.WriteLine("value from Lua="+var);
Assert.AreEqual(4, var); Assert.AreEqual(4, var);
lua.DoString("netobj.testval=3"); lua.DoString("netobj.testval=3");
Assert.AreEqual(3, t1.testval); Assert.AreEqual(3, t1.testval);
//Console.WriteLine("new val (from Lua)="+t1.testval);
} }
} }
...@@ -1206,7 +1048,7 @@ namespace NLuaTest ...@@ -1206,7 +1048,7 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
t1.teststrval = "This is a string test"; t1.teststrval = "This is a string test";
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("var=netobj.teststrval"); lua.DoString("var=netobj.teststrval");
...@@ -1215,7 +1057,6 @@ namespace NLuaTest ...@@ -1215,7 +1057,6 @@ namespace NLuaTest
Assert.AreEqual("This is a string test", var); Assert.AreEqual("This is a string test", var);
lua.DoString("netobj.teststrval='Another String'"); lua.DoString("netobj.teststrval='Another String'");
Assert.AreEqual("Another String", t1.teststrval); Assert.AreEqual("Another String", t1.teststrval);
//Console.WriteLine("new val (from Lua)="+t1.testval);
} }
} }
/* /*
...@@ -1226,16 +1067,15 @@ namespace NLuaTest ...@@ -1226,16 +1067,15 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); TestTypes.TestClass t1 = new TestTypes.TestClass();
t1.testval = 4; t1.testval = 4;
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("netobj:setVal(3)"); lua.DoString("netobj:setVal(3)");
Assert.AreEqual(3, t1.testval); Assert.AreEqual(3, t1.testval);
//Console.WriteLine("new val(from C#)="+t1.testval);
lua.DoString("val=netobj:getVal()"); lua.DoString("val=netobj:getVal()");
int val = (int)lua.GetNumber("val"); int val = (int)lua.GetNumber("val");
Assert.AreEqual(3, val); Assert.AreEqual(3, val);
//Console.WriteLine("new val(from Lua)="+val);
} }
} }
/* /*
...@@ -1246,11 +1086,10 @@ namespace NLuaTest ...@@ -1246,11 +1086,10 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("netobj:setVal('str')"); lua.DoString("netobj:setVal('str')");
Assert.AreEqual("str", t1.getStrVal()); Assert.AreEqual("str", t1.getStrVal());
//Console.WriteLine("new val(from C#)="+t1.getStrVal());
} }
} }
/* /*
...@@ -1262,14 +1101,14 @@ namespace NLuaTest ...@@ -1262,14 +1101,14 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); TestTypes.TestClass t1 = new TestTypes.TestClass();
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("a,b=netobj:outVal()"); lua.DoString("a,b=netobj:outVal()");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
int b = (int)lua.GetNumber("b"); int b = (int)lua.GetNumber("b");
Assert.AreEqual(3, a); Assert.AreEqual(3, a);
Assert.AreEqual(5, b); Assert.AreEqual(5, b);
//Console.WriteLine("function returned (from lua)="+a+","+b);
} }
} }
/* /*
...@@ -1281,14 +1120,13 @@ namespace NLuaTest ...@@ -1281,14 +1120,13 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("a,b=netobj:outVal(2)"); lua.DoString("a,b=netobj:outVal(2)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
int b = (int)lua.GetNumber("b"); int b = (int)lua.GetNumber("b");
Assert.AreEqual(2, a); Assert.AreEqual(2, a);
Assert.AreEqual(5, b); Assert.AreEqual(5, b);
//Console.WriteLine("function returned (from lua)="+a+","+b);
} }
} }
/* /*
...@@ -1299,14 +1137,14 @@ namespace NLuaTest ...@@ -1299,14 +1137,14 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("a,b=netobj:outVal(2,3)"); lua.DoString("a,b=netobj:outVal(2,3)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
int b = (int)lua.GetNumber("b"); int b = (int)lua.GetNumber("b");
Assert.AreEqual(2, a); Assert.AreEqual(2, a);
Assert.AreEqual(5, b); Assert.AreEqual(5, b);
//Console.WriteLine("function returned (from lua)="+a+","+b);
} }
} }
/* /*
...@@ -1318,15 +1156,15 @@ namespace NLuaTest ...@@ -1318,15 +1156,15 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
TestClass t1 = new TestClass(); var t1 = new TestTypes.TestClass();
lua["netobj"] = t1; lua["netobj"] = t1;
lua.DoString("a=netobj:foo()"); lua.DoString("a=netobj:foo()");
lua.DoString("b=netobj['NLuaTest.Mock.IFoo1.foo']"); lua.DoString("b=netobj['NLuaTest.TestTypes.IFoo1.foo']");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
int b = (int)lua.GetNumber("b"); int b = (int)lua.GetNumber("b");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
Assert.AreEqual(1, b); Assert.AreEqual(1, b);
//Console.WriteLine("function returned (from lua)="+a+","+b);
} }
} }
/* /*
...@@ -1338,12 +1176,12 @@ namespace NLuaTest ...@@ -1338,12 +1176,12 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly(\"NLuaTest\")"); lua.DoString("luanet.load_assembly(\"NLuaTest\")");
lua.DoString("TestClass=luanet.import_type(\"NLuaTest.Mock.TestClass\")"); lua.DoString("TestClass=luanet.import_type(\"NLuaTest.TestTypes.TestClass\")");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("test:setVal(3)"); lua.DoString("test:setVal(3)");
object[] res = lua.DoString("return test"); object[] res = lua.DoString("return test");
TestClass test = (TestClass)res[0]; var test = (TestTypes.TestClass)res[0];
//Console.WriteLine("returned: "+test.testval);
Assert.AreEqual(3, test.testval); Assert.AreEqual(3, test.testval);
} }
} }
...@@ -1356,11 +1194,11 @@ namespace NLuaTest ...@@ -1356,11 +1194,11 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly(\"NLuaTest\")"); lua.DoString("luanet.load_assembly(\"NLuaTest\")");
lua.DoString("TestClass=luanet.import_type(\"NLuaTest.Mock.TestClass\")"); lua.DoString("TestClass=luanet.import_type(\"NLuaTest.TestTypes.TestClass\")");
lua.DoString("test=TestClass(3)"); lua.DoString("test=TestClass(3)");
object[] res = lua.DoString("return test"); object[] res = lua.DoString("return test");
TestClass test = (TestClass)res[0]; var test = (TestTypes.TestClass)res[0];
//Console.WriteLine("returned: "+test.testval);
Assert.AreEqual(3, test.testval); Assert.AreEqual(3, test.testval);
} }
} }
...@@ -1373,11 +1211,11 @@ namespace NLuaTest ...@@ -1373,11 +1211,11 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly(\"NLuaTest\")"); lua.DoString("luanet.load_assembly(\"NLuaTest\")");
lua.DoString("TestClass=luanet.import_type(\"NLuaTest.Mock.TestClass\")"); lua.DoString("TestClass=luanet.import_type(\"NLuaTest.TestTypes.TestClass\")");
lua.DoString("test=TestClass('str')"); lua.DoString("test=TestClass('str')");
object[] res = lua.DoString("return test"); object[] res = lua.DoString("return test");
TestClass test = (TestClass)res[0]; var test = (TestTypes.TestClass)res[0];
//Console.WriteLine("returned: "+test.getStrVal());
Assert.AreEqual("str", test.getStrVal()); Assert.AreEqual("str", test.getStrVal());
} }
} }
...@@ -1389,12 +1227,12 @@ namespace NLuaTest ...@@ -1389,12 +1227,12 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
string[] arr = new string[] { "str1", "str2", "str3" }; string[] arr = { "str1", "str2", "str3" };
lua["netobj"] = arr; lua["netobj"] = arr;
lua.DoString("val=netobj[1]"); lua.DoString("val=netobj[1]");
string val = lua.GetString("val"); string val = lua.GetString("val");
Assert.AreEqual("str2", val); Assert.AreEqual("str2", val);
//Console.WriteLine("new val(from array to Lua)="+val);
} }
} }
/*G /*G
...@@ -1405,11 +1243,10 @@ namespace NLuaTest ...@@ -1405,11 +1243,10 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
string[] arr = new string[] { "str1", "str2", "str3" }; string[] arr = { "str1", "str2", "str3" };
lua["netobj"] = arr; lua["netobj"] = arr;
lua.DoString("netobj[1]='test'"); lua.DoString("netobj[1]='test'");
Assert.AreEqual("test", arr[1]); Assert.AreEqual("test", arr[1]);
//Console.WriteLine("new val(from Lua to array)="+arr[1]);
} }
} }
/* /*
...@@ -1421,10 +1258,10 @@ namespace NLuaTest ...@@ -1421,10 +1258,10 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly(\"NLuaTest\")"); lua.DoString("luanet.load_assembly(\"NLuaTest\")");
lua.DoString("TestClass=luanet.import_type(\"NLuaTest.Mock.TestClass\")"); lua.DoString("TestClass=luanet.import_type(\"NLuaTest.TestTypes.TestClass\")");
lua.DoString("arr=TestClass[3]"); lua.DoString("arr=TestClass[3]");
lua.DoString("for i=0,2 do arr[i]=TestClass(i+1) end"); lua.DoString("for i=0,2 do arr[i]=TestClass(i+1) end");
TestClass[] arr = (TestClass[])lua["arr"]; TestTypes.TestClass[] arr = (TestTypes.TestClass[])lua["arr"];
Assert.AreEqual(arr[1].testval, 2); Assert.AreEqual(arr[1].testval, 2);
} }
} }
...@@ -1438,15 +1275,15 @@ namespace NLuaTest ...@@ -1438,15 +1275,15 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate1), typeof(LuaTestDelegate1Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate1), typeof(LuaTestDelegate1Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return x+y; end"); lua.DoString("function func(x,y) return x+y; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callDelegate1(func)"); lua.DoString("a=test:callDelegate1(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
/* /*
...@@ -1459,15 +1296,15 @@ namespace NLuaTest ...@@ -1459,15 +1296,15 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate2), typeof(LuaTestDelegate2Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate2), typeof(LuaTestDelegate2Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x) return x,x*2; end"); lua.DoString("function func(x) return x,x*2; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callDelegate2(func)"); lua.DoString("a=test:callDelegate2(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(6, a); Assert.AreEqual(6, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
/* /*
...@@ -1480,15 +1317,15 @@ namespace NLuaTest ...@@ -1480,15 +1317,15 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate3), typeof(LuaTestDelegate3Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate3), typeof(LuaTestDelegate3Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return x+y; end"); lua.DoString("function func(x,y) return x+y; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callDelegate3(func)"); lua.DoString("a=test:callDelegate3(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
/* /*
...@@ -1501,15 +1338,15 @@ namespace NLuaTest ...@@ -1501,15 +1338,15 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate4), typeof(LuaTestDelegate4Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate4), typeof(LuaTestDelegate4Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return TestClass(x+y); end"); lua.DoString("function func(x,y) return TestClass(x+y); end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callDelegate4(func)"); lua.DoString("a=test:callDelegate4(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
/* /*
...@@ -1522,14 +1359,14 @@ namespace NLuaTest ...@@ -1522,14 +1359,14 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate5), typeof(LuaTestDelegate5Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate5), typeof(LuaTestDelegate5Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return x.testval+y.testval; end"); lua.DoString("function func(x,y) return x.testval+y.testval; end");
lua.DoString("a=test:callDelegate5(func)"); lua.DoString("a=test:callDelegate5(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
/* /*
...@@ -1542,15 +1379,15 @@ namespace NLuaTest ...@@ -1542,15 +1379,15 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate6), typeof(LuaTestDelegate6Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate6), typeof(LuaTestDelegate6Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x) return x,TestClass(x*2); end"); lua.DoString("function func(x) return x,TestClass(x*2); end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callDelegate6(func)"); lua.DoString("a=test:callDelegate6(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(6, a); Assert.AreEqual(6, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
/* /*
...@@ -1563,14 +1400,14 @@ namespace NLuaTest ...@@ -1563,14 +1400,14 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaDelegateType(typeof(TestDelegate7), typeof(LuaTestDelegate7Handler)); lua.RegisterLuaDelegateType(typeof(TestDelegate7), typeof(LuaTestDelegate7Handler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("function func(x,y) return TestClass(x+y.testval); end"); lua.DoString("function func(x,y) return TestClass(x+y.testval); end");
lua.DoString("a=test:callDelegate7(func)"); lua.DoString("a=test:callDelegate7(func)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("delegate returned: "+a);
} }
} }
...@@ -1585,16 +1422,16 @@ namespace NLuaTest ...@@ -1585,16 +1422,16 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaClassType(typeof(ITest), typeof(LuaITestClassHandler)); lua.RegisterLuaClassType(typeof(ITest), typeof(LuaITestClassHandler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test1(x,y) return x+y; end"); lua.DoString("function itest:test1(x,y) return x+y; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callInterface1(itest)"); lua.DoString("a=test:callInterface1(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -1607,16 +1444,16 @@ namespace NLuaTest ...@@ -1607,16 +1444,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test2(x) return x,x*2; end"); lua.DoString("function itest:test2(x) return x,x*2; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callInterface2(itest)"); lua.DoString("a=test:callInterface2(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(6, a); Assert.AreEqual(6, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -1629,16 +1466,16 @@ namespace NLuaTest ...@@ -1629,16 +1466,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test3(x,y) return x+y; end"); lua.DoString("function itest:test3(x,y) return x+y; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callInterface3(itest)"); lua.DoString("a=test:callInterface3(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -1651,16 +1488,16 @@ namespace NLuaTest ...@@ -1651,16 +1488,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test4(x,y) return TestClass(x+y); end"); lua.DoString("function itest:test4(x,y) return TestClass(x+y); end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callInterface4(itest)"); lua.DoString("a=test:callInterface4(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -1672,16 +1509,16 @@ namespace NLuaTest ...@@ -1672,16 +1509,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test5(x,y) return x.testval+y.testval; end"); lua.DoString("function itest:test5(x,y) return x.testval+y.testval; end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callInterface5(itest)"); lua.DoString("a=test:callInterface5(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(5, a); Assert.AreEqual(5, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -1694,16 +1531,16 @@ namespace NLuaTest ...@@ -1694,16 +1531,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test6(x) return x,TestClass(x*2); end"); lua.DoString("function itest:test6(x) return x,TestClass(x*2); end");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("a=test:callInterface6(itest)"); lua.DoString("a=test:callInterface6(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(6, a); Assert.AreEqual(6, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -1716,8 +1553,8 @@ namespace NLuaTest ...@@ -1716,8 +1553,8 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:test7(x,y) return TestClass(x+y.testval); end"); lua.DoString("function itest:test7(x,y) return TestClass(x+y.testval); end");
...@@ -1729,258 +1566,6 @@ namespace NLuaTest ...@@ -1729,258 +1566,6 @@ namespace NLuaTest
} }
#region LUA_BOILERPLATE_CLASS
/*** This class is used to bind the .NET world with the Lua world, this boilerplate code is pratically the same, get values call Lua function return value back,
* this class is usually dynamic generated using System.Reflection.Emit, but this will not work on iOS. */
class LuaTestClassHandler : TestClass, ILuaGeneratedType
{
public LuaTable __luaInterface_luaTable;
public Type[][] __luaInterface_returnTypes;
public LuaTestClassHandler(LuaTable luaTable, Type[][] returnTypes)
{
__luaInterface_luaTable = luaTable;
__luaInterface_returnTypes = returnTypes;
}
public LuaTable LuaInterfaceGetLuaTable()
{
return __luaInterface_luaTable;
}
public override int overridableMethod(int x, int y)
{
object[] args = new object[] {
__luaInterface_luaTable,
x,
y
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
x,
y
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[0];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "overridableMethod");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
}
class LuaITestClassHandler : ILuaGeneratedType, ITest
{
public LuaTable __luaInterface_luaTable;
public Type[][] __luaInterface_returnTypes;
public LuaITestClassHandler(LuaTable luaTable, Type[][] returnTypes)
{
__luaInterface_luaTable = luaTable;
__luaInterface_returnTypes = returnTypes;
}
public LuaTable LuaInterfaceGetLuaTable()
{
return __luaInterface_luaTable;
}
public int intProp
{
get
{
object[] args = new object[] { __luaInterface_luaTable };
object[] inArgs = new object[] { __luaInterface_luaTable };
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[0];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "get_intProp");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
set
{
int i = value;
object[] args = new object[] {
__luaInterface_luaTable ,
i
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
i
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[1];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "set_intProp");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
}
}
public TestClass refProp
{
get
{
object[] args = new object[] { __luaInterface_luaTable };
object[] inArgs = new object[] { __luaInterface_luaTable };
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[2];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "get_refProp");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (TestClass)ret;
}
set
{
TestClass test = value;
object[] args = new object[] {
__luaInterface_luaTable ,
test
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
test
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[3];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "set_refProp");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
}
}
public int test1(int a, int b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[4];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test1");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
public int test2(int a, out int b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
0
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a
};
int[] outArgs = new int[] { 1 };
Type[] returnTypes = __luaInterface_returnTypes[5];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test2");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (int)args[1];
return (int)ret;
}
public void test3(int a, ref int b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = new int[] { 1 };
Type[] returnTypes = __luaInterface_returnTypes[6];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test3");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (int)args[1];
}
public TestClass test4(int a, int b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[7];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test4");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (TestClass)ret;
}
public int test5(TestClass a, TestClass b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = new int[] { };
Type[] returnTypes = __luaInterface_returnTypes[8];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test5");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
return (int)ret;
}
public int test6(int a, out TestClass b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
null
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a,
};
int[] outArgs = new int[] { 1 };
Type[] returnTypes = __luaInterface_returnTypes[9];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test6");
object ret = NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (TestClass)args[1];
return (int)ret;
}
public void test7(int a, ref TestClass b)
{
object[] args = new object[] {
__luaInterface_luaTable,
a,
b
};
object[] inArgs = new object[] {
__luaInterface_luaTable,
a,
b
};
int[] outArgs = new int[] { 1 };
Type[] returnTypes = __luaInterface_returnTypes[10];
LuaFunction function = NLua.Method.LuaClassHelper.GetTableFunction(__luaInterface_luaTable, "test7");
NLua.Method.LuaClassHelper.CallFunction(function, args, returnTypes, inArgs, outArgs);
b = (TestClass)args[1];
}
}
#endregion
/* /*
* Tests passing a Lua table as an interface and * Tests passing a Lua table as an interface and
* accessing one of its value-type properties * accessing one of its value-type properties
...@@ -1990,16 +1575,16 @@ namespace NLuaTest ...@@ -1990,16 +1575,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:get_intProp() return itest.int_prop; end"); lua.DoString("function itest:get_intProp() return itest.int_prop; end");
lua.DoString("function itest:set_intProp(val) itest.int_prop=val; end"); lua.DoString("function itest:set_intProp(val) itest.int_prop=val; end");
lua.DoString("a=test:callInterface8(itest)"); lua.DoString("a=test:callInterface8(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(3, a); Assert.AreEqual(3, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
/* /*
...@@ -2011,16 +1596,16 @@ namespace NLuaTest ...@@ -2011,16 +1596,16 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("itest={}"); lua.DoString("itest={}");
lua.DoString("function itest:get_refProp() return TestClass(itest.int_prop); end"); lua.DoString("function itest:get_refProp() return TestClass(itest.int_prop); end");
lua.DoString("function itest:set_refProp(val) itest.int_prop=val.testval; end"); lua.DoString("function itest:set_refProp(val) itest.int_prop=val.testval; end");
lua.DoString("a=test:callInterface9(itest)"); lua.DoString("a=test:callInterface9(itest)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
Assert.AreEqual(3, a); Assert.AreEqual(3, a);
//Console.WriteLine("interface returned: "+a);
} }
} }
...@@ -2034,21 +1619,21 @@ namespace NLuaTest ...@@ -2034,21 +1619,21 @@ namespace NLuaTest
{ {
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.RegisterLuaClassType(typeof(TestClass), typeof(LuaTestClassHandler)); lua.RegisterLuaClassType(typeof(TestTypes.TestClass), typeof(LuaTestClassHandler));
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test={}"); lua.DoString("test={}");
lua.DoString("function test:overridableMethod(x,y) print(self[base]); return 6 end"); lua.DoString("function test:overridableMethod(x,y) print(self[base]); return 6 end");
lua.DoString("luanet.make_object(test,'NLuaTest.Mock.TestClass')"); lua.DoString("luanet.make_object(test,'NLuaTest.TestTypes.TestClass')");
lua.DoString("a=TestClass.callOverridable(test,2,3)"); lua.DoString("a=TestClass.callOverridable(test,2,3)");
int a = (int)lua.GetNumber("a"); int a = (int)lua.GetNumber("a");
lua.DoString("luanet.free_object(test)"); lua.DoString("luanet.free_object(test)");
Assert.AreEqual(6, a); Assert.AreEqual(6, a);
// lua.DoString("luanet.load_assembly('NLuaTest')"); // lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
// lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); // lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
// lua.DoString("test={}"); // lua.DoString("test={}");
// //
// lua.DoString("luanet.make_object(test,'NLuaTest.Mock.TestClass')"); // lua.DoString("luanet.make_object(test,'NLuaTest.TestTypes.TestClass')");
// lua.DoString ("function test.overridableMethod(test,x,y) return 2*test.base.overridableMethod(test,x,y); end"); // lua.DoString ("function test.overridableMethod(test,x,y) return 2*test.base.overridableMethod(test,x,y); end");
// lua.DoString("a=TestClass.callOverridable(test,2,3)"); // lua.DoString("a=TestClass.callOverridable(test,2,3)");
// int a = (int)lua.GetNumber("a"); // int a = (int)lua.GetNumber("a");
...@@ -2067,14 +1652,14 @@ namespace NLuaTest ...@@ -2067,14 +1652,14 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("setMethod=luanet.get_method_bysig(test,'setVal','System.String')"); lua.DoString("setMethod=luanet.get_method_bysig(test,'setVal','System.String')");
lua.DoString("setMethod('test')"); lua.DoString("setMethod('test')");
TestClass test = (TestClass)lua["test"]; TestTypes.TestClass test = (TestTypes.TestClass)lua["test"];
Assert.AreEqual("test", test.getStrVal()); Assert.AreEqual("test", test.getStrVal());
//Console.WriteLine("interface returned: "+test.getStrVal());
} }
} }
/* /*
...@@ -2087,14 +1672,14 @@ namespace NLuaTest ...@@ -2087,14 +1672,14 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("setMethod=luanet.get_method_bysig(TestClass,'setVal','System.String')"); lua.DoString("setMethod=luanet.get_method_bysig(TestClass,'setVal','System.String')");
lua.DoString("setMethod(test,'test')"); lua.DoString("setMethod(test,'test')");
TestClass test = (TestClass)lua["test"]; TestTypes.TestClass test = (TestTypes.TestClass)lua["test"];
Assert.AreEqual("test", test.getStrVal()); Assert.AreEqual("test", test.getStrVal());
//Console.WriteLine("interface returned: "+test.getStrVal());
} }
} }
/* /*
...@@ -2106,13 +1691,13 @@ namespace NLuaTest ...@@ -2106,13 +1691,13 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("make_method=luanet.get_method_bysig(TestClass,'makeFromString','System.String')"); lua.DoString("make_method=luanet.get_method_bysig(TestClass,'makeFromString','System.String')");
lua.DoString("test=make_method('test')"); lua.DoString("test=make_method('test')");
TestClass test = (TestClass)lua["test"]; TestTypes.TestClass test = (TestTypes.TestClass)lua["test"];
Assert.AreEqual("test", test.getStrVal()); Assert.AreEqual("test", test.getStrVal());
//Console.WriteLine("interface returned: "+test.getStrVal());
} }
} }
/* /*
...@@ -2124,13 +1709,13 @@ namespace NLuaTest ...@@ -2124,13 +1709,13 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test_cons=luanet.get_constructor_bysig(TestClass,'System.String')"); lua.DoString("test_cons=luanet.get_constructor_bysig(TestClass,'System.String')");
lua.DoString("test=test_cons('test')"); lua.DoString("test=test_cons('test')");
TestClass test = (TestClass)lua["test"]; TestTypes.TestClass test = (TestTypes.TestClass)lua["test"];
Assert.AreEqual("test", test.getStrVal()); Assert.AreEqual("test", test.getStrVal());
//Console.WriteLine("interface returned: "+test.getStrVal());
} }
} }
...@@ -2140,8 +1725,8 @@ namespace NLuaTest ...@@ -2140,8 +1725,8 @@ namespace NLuaTest
using (Lua lua = new Lua()) using (Lua lua = new Lua())
{ {
lua.DoString("luanet.load_assembly('mscorlib')"); lua.DoString("luanet.load_assembly('mscorlib')");
lua.DoString("luanet.load_assembly('NLuaTest')"); lua.DoString("luanet.load_assembly('NLuaTest', 'NLuaTest.TestTypes')");
lua.DoString("TestClass=luanet.import_type('NLuaTest.Mock.TestClass')"); lua.DoString("TestClass=luanet.import_type('NLuaTest.TestTypes.TestClass')");
lua.DoString("test=TestClass()"); lua.DoString("test=TestClass()");
lua.DoString("test:Print('this will pass')"); lua.DoString("test:Print('this will pass')");
lua.DoString("test:Print('this will ','fail')"); lua.DoString("test:Print('this will ','fail')");
...@@ -2255,7 +1840,7 @@ namespace NLuaTest ...@@ -2255,7 +1840,7 @@ namespace NLuaTest
Assert.AreEqual(42, (int)(double)lua["g_dot.key\\.with\\.dot"]); Assert.AreEqual(42, (int)(double)lua["g_dot.key\\.with\\.dot"]);
} }
} }
#if !WINDOWS_PHONE && !NET_3_5
[Test] [Test]
public void TestOperatorAdd() public void TestOperatorAdd()
{ {
...@@ -2354,7 +1939,7 @@ namespace NLuaTest ...@@ -2354,7 +1939,7 @@ namespace NLuaTest
Assert.AreEqual(expected, res); Assert.AreEqual(expected, res);
} }
} }
#endif
[Test] [Test]
public void TestCaseFields() public void TestCaseFields()
{ {
...@@ -2362,7 +1947,7 @@ namespace NLuaTest ...@@ -2362,7 +1947,7 @@ namespace NLuaTest
{ {
lua.LoadCLRPackage(); lua.LoadCLRPackage();
lua.DoString(@" import ('NLuaTest') lua.DoString(@" import ('NLuaTest', 'NLuaTest.TestTypes')
x = TestCaseName() x = TestCaseName()
name = x.name; name = x.name;
name2 = x.Name; name2 = x.Name;
...@@ -2383,7 +1968,7 @@ namespace NLuaTest ...@@ -2383,7 +1968,7 @@ namespace NLuaTest
{ {
lua.LoadCLRPackage(); lua.LoadCLRPackage();
lua.DoString(@" import ('NLuaTest') lua.DoString(@" import ('NLuaTest', 'NLuaTest.TestTypes')
v = Vector() v = Vector()
v.x = 10 v.x = 10
v.y = 3 v.y = 3
...@@ -2409,7 +1994,7 @@ namespace NLuaTest ...@@ -2409,7 +1994,7 @@ namespace NLuaTest
{ {
lua.LoadCLRPackage(); lua.LoadCLRPackage();
lua.DoString(@" import ('NLuaTest') lua.DoString(@" import ('NLuaTest', 'NLuaTest.TestTypes')
v = Vector() v = Vector()
v.x = 10 v.x = 10
v.y = 3 v.y = 3
...@@ -2432,7 +2017,7 @@ namespace NLuaTest ...@@ -2432,7 +2017,7 @@ namespace NLuaTest
{ {
lua.LoadCLRPackage(); lua.LoadCLRPackage();
lua.DoString(@" import ('NLuaTest') lua.DoString(@" import ('NLuaTest', 'NLuaTest.TestTypes')
p = Employee() p = Employee()
p.firstName = 'Paulo' p.firstName = 'Paulo'
p.occupation = 'Programmer'"); p.occupation = 'Programmer'");
...@@ -2484,7 +2069,7 @@ namespace NLuaTest ...@@ -2484,7 +2069,7 @@ namespace NLuaTest
end end
function f3() function f3()
LuaTests.func() LuaTests.Func()
end end
f1 () f1 ()
...@@ -2493,7 +2078,7 @@ namespace NLuaTest ...@@ -2493,7 +2078,7 @@ namespace NLuaTest
m_lua = null; m_lua = null;
} }
public static void func() public static void Func()
{ {
//string expected = "[0] func:-1 -- <unknown> [func]\n[1] f3:12 -- <unknown> [f3]\n[2] f2:8 -- <unknown> [f2]\n[3] f1:4 -- <unknown> [f1]\n[4] :15 -- []\n"; //string expected = "[0] func:-1 -- <unknown> [func]\n[1] f3:12 -- <unknown> [f3]\n[2] f2:8 -- <unknown> [f2]\n[3] f1:4 -- <unknown> [f1]\n[4] :15 -- []\n";
...@@ -2523,7 +2108,7 @@ namespace NLuaTest ...@@ -2523,7 +2108,7 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString("import ('NLuaTest')"); l.DoString("import ('NLuaTest', 'NLuaTest.TestTypes')");
l.DoString("res = testClass.read() "); l.DoString("res = testClass.read() ");
string res = (string)l["res"]; string res = (string)l["res"];
Assert.AreEqual(testClass.read(), res); Assert.AreEqual(testClass.read(), res);
...@@ -2605,9 +2190,9 @@ namespace NLuaTest ...@@ -2605,9 +2190,9 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString(" import ('NLuaTest') "); l.DoString(" import ('NLuaTest', 'NLuaTest.TestTypes') ");
l.DoString(@" l.DoString(@"
p=parameter() p=Parameter()
r1 = testClass.read(p) -- is not working. it is also not working if the method in base class has two parameters instead of one r1 = testClass.read(p) -- is not working. it is also not working if the method in base class has two parameters instead of one
r2 = testClass.read(1) -- is working r2 = testClass.read(1) -- is working
"); ");
...@@ -2624,7 +2209,7 @@ namespace NLuaTest ...@@ -2624,7 +2209,7 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString(" import ('NLuaTest','NLuaTest.Mock') "); l.DoString(" import ('NLuaTest','NLuaTest.TestTypes') ");
l.DoString(@" l.DoString(@"
r = TestClass.MethodWithParams(2) r = TestClass.MethodWithParams(2)
"); ");
...@@ -2639,7 +2224,7 @@ namespace NLuaTest ...@@ -2639,7 +2224,7 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString(" import ('NLuaTest','NLuaTest.Mock') "); l.DoString(" import ('NLuaTest','NLuaTest.TestTypes') ");
l.DoString(@" l.DoString(@"
r = TestClass.MethodWithParams(2, 7, 4) r = TestClass.MethodWithParams(2, 7, 4)
"); ");
...@@ -2654,7 +2239,7 @@ namespace NLuaTest ...@@ -2654,7 +2239,7 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString(" import ('NLuaTest','NLuaTest.Mock') "); l.DoString(" import ('NLuaTest','NLuaTest.TestTypes') ");
l.DoString(@" l.DoString(@"
r = TestClass.MethodWithObjectParams(2, nil, 4, 'abc') r = TestClass.MethodWithObjectParams(2, nil, 4, 'abc')
"); ");
...@@ -2669,7 +2254,7 @@ namespace NLuaTest ...@@ -2669,7 +2254,7 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString(" import ('NLuaTest','NLuaTest.Mock') "); l.DoString(" import ('NLuaTest','NLuaTest.TestTypes') ");
l.DoString(@" l.DoString(@"
r = TestClass.MethodWithObjectParams(nil, 4, 'abc') r = TestClass.MethodWithObjectParams(nil, 4, 'abc')
"); ");
...@@ -2684,7 +2269,7 @@ namespace NLuaTest ...@@ -2684,7 +2269,7 @@ namespace NLuaTest
using (var l = new Lua()) using (var l = new Lua())
{ {
l.LoadCLRPackage(); l.LoadCLRPackage();
l.DoString(" import ('NLuaTest','NLuaTest.Mock') "); l.DoString(" import ('NLuaTest','NLuaTest.TestTypes') ");
l.DoString(@" l.DoString(@"
e1 = Entity() e1 = Entity()
e2 = Entity ('str_param') e2 = Entity ('str_param')
...@@ -2747,8 +2332,6 @@ namespace NLuaTest ...@@ -2747,8 +2332,6 @@ namespace NLuaTest
} }
static Lua m_lua; static Lua m_lua;
} }
} }
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
...@@ -9,12 +9,45 @@ ...@@ -9,12 +9,45 @@
<Import_RootNamespace>NLuaTest.Shared</Import_RootNamespace> <Import_RootNamespace>NLuaTest.Shared</Import_RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)AAACodeGenTests.cs" /> <Compile Include="$(MSBuildThisFileDirectory)BinderClass\LuaITestClassHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)BinderClass\LuaTestClassHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)CodeGenTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Core.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Core.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Entity.cs" /> <Compile Include="$(MSBuildThisFileDirectory)TestTypes\DoWorkClass.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\IFoo1.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\IFoo2.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\ITest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaEventArgsHandler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate6Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate7Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\MyClass.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClass.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClass3.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClassGeneric.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClassWithGenericMethod.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClassWithMethodDefaultParameter.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClassWithOverloadedMethod.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestEnum.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate5Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate4Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate3Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate2Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\Delegates.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate1Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestStruct.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\DefaultElementModel.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\Employee.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\Entity.cs" />
<Compile Include="$(MSBuildThisFileDirectory)LoadFileTests.cs" /> <Compile Include="$(MSBuildThisFileDirectory)LoadFileTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)LuaTests.cs" /> <Compile Include="$(MSBuildThisFileDirectory)LuaTests.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestLua.cs" /> <Compile Include="$(MSBuildThisFileDirectory)TestTypes\Master.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\Parameter.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\Person.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\PersonExtensions.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestCaseName.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClassX.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Properties\AssemblyInfo.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Properties\AssemblyInfo.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\Vector.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\VectorExtension.cs" />
</ItemGroup> </ItemGroup>
</Project> </Project>
\ No newline at end of file
using System;
namespace NLuaTest.TestTypes
{
public class DefaultElementModel
{
public Action<double> DrawMe { get; set; }
}
}
\ No newline at end of file

namespace NLuaTest.TestTypes
{
/*
* Delegates used for testing Lua function -> delegate translation
*/
public delegate int TestDelegate1(int a, int b);
public delegate int TestDelegate2(int a, out int b);
public delegate void TestDelegate3(int a, ref int b);
public delegate TestClass TestDelegate4(int a, int b);
public delegate int TestDelegate5(TestClass a, TestClass b);
public delegate int TestDelegate6(int a, out TestClass b);
public delegate void TestDelegate7(int a, ref TestClass b);
}
using System;
using System.Threading;
namespace NLuaTest.TestTypes
{
/// <summary>
/// Use to test threading
/// </summary>
class DoWorkClass
{
public void DoWork()
{
//simulate work by sleeping
Thread.Sleep(new Random().Next(0, 1000));
}
}
}
\ No newline at end of file
namespace NLuaTest.TestTypes
{
public class Employee : Person
{
public string occupation;
}
}
\ No newline at end of file
using System; using System;
namespace NLuaTest.Mock namespace NLuaTest.TestTypes
{ {
public class Entity public class Entity
{ {
......
namespace NLuaTest.TestTypes
{
public interface IFoo1
{
int foo();
}
}
\ No newline at end of file
namespace NLuaTest.TestTypes
{
public interface IFoo2
{
int foo();
}
}
\ No newline at end of file
namespace NLuaTest.TestTypes
{
public interface ITest
{
int intProp
{
get;
set;
}
TestClass refProp
{
get;
set;
}
int test1(int a, int b);
int test2(int a, out int b);
void test3(int a, ref int b);
TestClass test4(int a, int b);
int test5(TestClass a, TestClass b);
int test6(int a, out TestClass b);
void test7(int a, ref TestClass b);
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
namespace NLuaTest.TestTypes
{
class LuaEventArgsHandler : NLua.Method.LuaDelegate
{
void CallFunction(object sender, EventArgs eventArgs)
{
object[] args = { sender, eventArgs };
object[] inArgs = { sender, eventArgs };
int[] outArgs = { };
CallFunction(args, inArgs, outArgs);
}
}
}

namespace NLuaTest.TestTypes
{
class LuaTestDelegate1Handler : NLua.Method.LuaDelegate
{
int CallFunction(int a, int b)
{
object[] args = { a, b };
object[] inArgs = { a, b };
int[] outArgs = { };
object ret = CallFunction(args, inArgs, outArgs);
return (int)ret;
}
}
}
namespace NLuaTest.TestTypes
{
class LuaTestDelegate2Handler : NLua.Method.LuaDelegate
{
int CallFunction(int a, out int b)
{
object[] args = { a, 0 };
object[] inArgs = { a };
int[] outArgs = { 1 };
object ret = CallFunction(args, inArgs, outArgs);
b = (int)args[1];
return (int)ret;
}
}
}
\ No newline at end of file
namespace NLuaTest.TestTypes
{
class LuaTestDelegate3Handler : NLua.Method.LuaDelegate
{
void CallFunction(int a, ref int b)
{
object[] args = { a, b };
object[] inArgs = { a, b };
int[] outArgs = { 1 };
CallFunction(args, inArgs, outArgs);
b = (int)args[1];
}
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment