LocalTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. namespace Lua.Tests;
  2. public class LocalTests
  3. {
  4. [Test]
  5. public async Task Test_LocalFunction_Nil_1()
  6. {
  7. var source = @"
  8. local function f(x) x = nil; return x end
  9. return f(10)";
  10. var result = await LuaState.Create().DoStringAsync(source);
  11. Assert.That(result, Has.Length.EqualTo(1));
  12. Assert.That(result[0], Is.EqualTo(LuaValue.Nil));
  13. }
  14. [Test]
  15. public async Task Test_LocalFunction_Nil_2()
  16. {
  17. var source = @"
  18. local function f() local x; return x end
  19. return f(10)";
  20. var result = await LuaState.Create().DoStringAsync(source);
  21. Assert.That(result, Has.Length.EqualTo(1));
  22. Assert.That(result[0], Is.EqualTo(LuaValue.Nil));
  23. }
  24. [Test]
  25. public async Task Test_LocalFunction_Nil_3()
  26. {
  27. var source = @"
  28. local function f(x) x = nil; local y; return x, y end
  29. return f(10)";
  30. var result = await LuaState.Create().DoStringAsync(source);
  31. Assert.That(result, Has.Length.EqualTo(2));
  32. Assert.Multiple(() =>
  33. {
  34. Assert.That(result[0], Is.EqualTo(LuaValue.Nil));
  35. Assert.That(result[1], Is.EqualTo(LuaValue.Nil));
  36. });
  37. }
  38. [Test]
  39. public async Task Test_LocalVariable_1()
  40. {
  41. var source = "local i = 10; do local i = 100; return i end";
  42. var result = await LuaState.Create().DoStringAsync(source);
  43. Assert.That(result, Has.Length.EqualTo(1));
  44. Assert.That(result[0], Is.EqualTo(new LuaValue(100)));
  45. }
  46. [Test]
  47. public async Task Test_LocalVariable_2()
  48. {
  49. var source = @"
  50. local i = 10
  51. do local i = 100 end
  52. return i";
  53. var result = await LuaState.Create().DoStringAsync(source);
  54. Assert.That(result, Has.Length.EqualTo(1));
  55. Assert.That(result[0], Is.EqualTo(new LuaValue(10)));
  56. }
  57. }