| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using Lua.Standard;
- namespace Lua.Tests;
- [LuaObject]
- public partial class TestUserData
- {
- [LuaMember]
- public int Property { get; set; }
- [LuaMember("p2")]
- public string PropertyWithName { get; set; } = "";
- [LuaMember]
- public static void MethodVoid()
- {
- Console.WriteLine("HEY!");
- }
- [LuaMember]
- public static async Task MethodAsync()
- {
- await Task.CompletedTask;
- }
- [LuaMember]
- public static double StaticMethodWithReturnValue(double a, double b)
- {
- Console.WriteLine($"HEY! {a} {b}");
- return a + b;
- }
- [LuaMember]
- public double InstanceMethodWithReturnValue()
- {
- return Property;
- }
- [LuaMember]
- public async Task<double> InstanceMethodWithReturnValueAsync()
- {
- await Task.Delay(1);
- return Property;
- }
- [LuaMetamethod(LuaObjectMetamethod.Call)]
- public string Call()
- {
- return "Called!";
- }
- }
- public class LuaObjectTests
- {
- [Test]
- public async Task Test_Property()
- {
- var userData = new TestUserData() { Property = 1 };
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test.Property");
- Assert.That(results, Has.Length.EqualTo(1));
- Assert.That(results[0], Is.EqualTo(new LuaValue(1)));
- }
- [Test]
- public async Task Test_PropertyWithName()
- {
- var userData = new TestUserData() { PropertyWithName = "foo", };
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test.p2");
- Assert.That(results, Has.Length.EqualTo(1));
- Assert.That(results[0], Is.EqualTo(new LuaValue("foo")));
- }
- [Test]
- public async Task Test_MethodVoid()
- {
- var userData = new TestUserData();
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test.MethodVoid()");
- Assert.That(results, Has.Length.EqualTo(0));
- }
- [Test]
- public async Task Test_MethodAsync()
- {
- var userData = new TestUserData();
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test.MethodAsync()");
- Assert.That(results, Has.Length.EqualTo(0));
- }
- [Test]
- public async Task Test_StaticMethodWithReturnValue()
- {
- var userData = new TestUserData();
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test.StaticMethodWithReturnValue(1, 2)");
- Assert.That(results, Has.Length.EqualTo(1));
- Assert.That(results[0], Is.EqualTo(new LuaValue(3)));
- }
- [Test]
- public async Task Test_InstanceMethodWithReturnValue()
- {
- var userData = new TestUserData() { Property = 1 };
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test:InstanceMethodWithReturnValue()");
- Assert.That(results, Has.Length.EqualTo(1));
- Assert.That(results[0], Is.EqualTo(new LuaValue(1)));
- }
-
- [Test]
- public async Task Test_InstanceMethodWithReturnValueAsync()
- {
- var userData = new TestUserData() { Property = 1 };
- var state = LuaState.Create();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("return test:InstanceMethodWithReturnValueAsync()");
- Assert.That(results, Has.Length.EqualTo(1));
- Assert.That(results[0], Is.EqualTo(new LuaValue(1)));
- }
- [Test]
- public async Task Test_CallMetamethod()
- {
- var userData = new TestUserData();
- var state = LuaState.Create();
- state.OpenBasicLibrary();
- state.Environment["test"] = userData;
- var results = await state.DoStringAsync("""
- assert(test() == 'Called!')
- return test()
- """);
- Assert.That(results, Has.Length.EqualTo(1));
- Assert.That(results[0], Is.EqualTo(new LuaValue("Called!")));
- }
- }
|