LuaTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Lua.Standard;
  2. using System.Globalization;
  3. namespace Lua.Tests;
  4. public class LuaTests
  5. {
  6. [Test]
  7. [Parallelizable(ParallelScope.All)]
  8. [TestCase("tests-lua/code.lua")]
  9. [TestCase("tests-lua/goto.lua")]
  10. [TestCase("tests-lua/constructs.lua")]
  11. [TestCase("tests-lua/locals.lua")]
  12. [TestCase("tests-lua/literals.lua")]
  13. //[TestCase("tests-lua/pm.lua")] //string.match is not implemented
  14. //[TestCase("tests-lua/sort.lua")] //check for "invalid order function" is not implemented
  15. //[TestCase("tests-lua/calls.lua")] // string.dump and reader function for load chunk is not implemented
  16. [TestCase("tests-lua/files.lua")]
  17. [TestCase("tests-lua/closure.lua")]
  18. [TestCase("tests-lua/errors.lua")] // get table name if nil is not implemented
  19. [TestCase("tests-lua/events.lua")]
  20. [TestCase("tests-lua/vararg.lua")]
  21. [TestCase("tests-lua/nextvar.lua")]
  22. [TestCase("tests-lua/math.lua")]
  23. [TestCase("tests-lua/bitwise.lua")]
  24. [TestCase("tests-lua/strings.lua")]
  25. [TestCase("tests-lua/coroutine.lua")]
  26. [TestCase("tests-lua/db.lua")]
  27. [TestCase("tests-lua/verybig.lua")]
  28. public async Task Test_Lua(string file)
  29. {
  30. var state = LuaState.Create();
  31. state.OpenStandardLibraries();
  32. var path = FileHelper.GetAbsolutePath(file);
  33. Directory.SetCurrentDirectory(Path.GetDirectoryName(path)!);
  34. try
  35. {
  36. await state.DoFileAsync(Path.GetFileName(file));
  37. }
  38. catch (LuaRuntimeException e)
  39. {
  40. var luaTraceback = e.LuaTraceback;
  41. if (luaTraceback == null)
  42. {
  43. throw;
  44. }
  45. var line = luaTraceback.FirstLine;
  46. throw new Exception($"{path}:{line} \n{e.InnerException}\n {e}");
  47. }
  48. }
  49. }