Browse Source

Add: tests

AnnulusGames 1 year ago
parent
commit
4e387401dd
2 changed files with 126 additions and 0 deletions
  1. 4 0
      tests/Lua.Tests/Lua.Tests.csproj
  2. 122 0
      tests/Lua.Tests/LuaObjectTests.cs

+ 4 - 0
tests/Lua.Tests/Lua.Tests.csproj

@@ -19,6 +19,10 @@
 
   <ItemGroup>
     <ProjectReference Include="..\..\src\Lua\Lua.csproj" />
+    <ProjectReference Include="..\..\src\Lua.SourceGenerator\Lua.SourceGenerator.csproj">
+			<OutputItemType>Analyzer</OutputItemType>
+			<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+		</ProjectReference>
   </ItemGroup>
 
 </Project>

+ 122 - 0
tests/Lua.Tests/LuaObjectTests.cs

@@ -0,0 +1,122 @@
+namespace Lua.Tests;
+
+[LuaObject]
+public partial class TestUserData
+{
+    [LuaMember]
+    public double 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;
+    }
+
+    public static double StaticMethodWithReturnValue(double a, double b)
+    {
+        return a + b;
+    }
+
+    [LuaMember]
+    public double InstanceMethodWithReturnValue()
+    {
+        return Property;
+    }
+}
+
+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)));
+    }
+}