ParserTests.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Lua.CodeAnalysis.Syntax;
  2. using Lua.CodeAnalysis.Syntax.Nodes;
  3. namespace Lua.Tests
  4. {
  5. // TODO: add more tests
  6. public class ParserTests
  7. {
  8. [Test]
  9. public void Test_If_ElseIf_Else_Empty()
  10. {
  11. var source =
  12. @"if true then
  13. elseif true then
  14. else
  15. end";
  16. var actual = LuaSyntaxTree.Parse(source).Nodes[0];
  17. var expected = new IfStatementNode(
  18. new() { ConditionNode = new BooleanLiteralNode(true, new(1, 3)), ThenNodes = [] },
  19. [new() { ConditionNode = new BooleanLiteralNode(true, new(2, 7)), ThenNodes = [] }],
  20. [],
  21. new(1, 0));
  22. Assert.That(actual, Is.TypeOf<IfStatementNode>());
  23. Assert.That(actual.ToString(), Is.EqualTo(expected.ToString()));
  24. }
  25. [Test]
  26. public void Test_MultiLine_ShortString()
  27. {
  28. var source =
  29. """
  30. print "Hello,\
  31. World!"
  32. """;
  33. var actual = LuaSyntaxTree.Parse(source).Nodes[0];
  34. Assert.That(actual, Is.TypeOf<CallFunctionStatementNode>());
  35. var literal =((StringLiteralNode)((CallFunctionStatementNode)actual).Expression.ArgumentNodes[0]).Text.ToString();
  36. Assert.That(literal, Is.EqualTo(
  37. """
  38. Hello,\
  39. World!
  40. """
  41. ));
  42. }
  43. }
  44. }