private void TestUnary(UnaryOperationKind kind) { string text; if (Operation.IsPrefixOperation(kind)) { text = Operation.GetText(kind) + "$a"; } else { text = "$a" + Operation.GetText(kind); } var expr = NSScript.ParseExpression(text) as UnaryExpression; Assert.NotNull(expr); Assert.Equal(SyntaxNodeKind.UnaryExpression, expr.Kind); Assert.Equal(kind, expr.OperationKind); var operand = expr.Operand as Variable; Assert.NotNull(operand); Assert.Equal("$a", operand.Name.FullName); Assert.Equal(text, expr.ToString()); }
public void TestSelectStatement() { string text = @" select { case option1:{} case option2:{} case option3:{} }"; var selectStatement = NSScript.ParseStatement(text) as SelectStatement; Assert.NotNull(selectStatement); Assert.Equal(SyntaxNodeKind.SelectStatement, selectStatement.Kind); var body = selectStatement.Body; Assert.Equal(3, body.Statements.Length); var firstSection = body.Statements[0] as SelectSection; Assert.NotNull(firstSection); Assert.Equal(SyntaxNodeKind.SelectSection, firstSection.Kind); Assert.Equal("option1", firstSection.Label.FullName); Assert.NotNull(firstSection.Body); }
public void TestReturnStatement() { string text = "return;"; var statement = NSScript.ParseStatement(text) as ReturnStatement; Assert.NotNull(statement); Assert.Equal(SyntaxNodeKind.ReturnStatement, statement.Kind); }
public void TestCallChapterStatement() { string text = "call_chapter @->testchapter;"; var statement = NSScript.ParseStatement(text) as CallChapterStatement; Assert.NotNull(statement); Assert.Equal(SyntaxNodeKind.CallChapterStatement, statement.Kind); Assert.Equal("@->testchapter", statement.ChapterName.FullName); }
public void TestCallSceneStatement() { string text = "call_scene @->testscene;"; var statement = NSScript.ParseStatement(text) as CallSceneStatement; Assert.NotNull(statement); Assert.Equal(SyntaxNodeKind.CallSceneStatement, statement.Kind); Assert.Equal("@->testscene", statement.SceneName.FullName); }
public void TestConstant() { string text = "center"; var constant = NSScript.ParseExpression(text) as NamedConstant; Assert.NotNull(constant); Assert.Equal(SyntaxNodeKind.NamedConstant, constant.Kind); Assert.Equal(text, constant.Name.FullName); Assert.Equal(text, constant.ToString()); }
public void TestVariableReference() { string text = "SomeMethod($a);"; var invocation = NSScript.ParseExpression(text) as MethodCall; var arg = invocation.Arguments[0] as Variable; Assert.NotNull(arg); Assert.Equal(SyntaxNodeKind.Variable, arg.Kind); }
public void TestScene() { string text = "scene TestScene{}"; var root = NSScript.ParseScript(text); var scene = root.Scenes.SingleOrDefault(); Assert.NotNull(scene); Assert.Equal(SyntaxNodeKind.Scene, scene.Kind); Assert.Equal("TestScene", scene.Name.FullName); }
public void TestNumericLiteralExpression() { string literal = "42"; var expr = NSScript.ParseExpression(literal) as Literal; Assert.NotNull(expr); Assert.Equal(SyntaxNodeKind.Literal, expr.Kind); Assert.Equal(literal, expr.Text); Assert.Equal(42, expr.Value.RawValue); Assert.Equal(literal, expr.ToString()); }
public void TestVariableWithHashSigil() { string text = "#testVar"; var variable = NSScript.ParseExpression(text) as Variable; Assert.NotNull(variable); Assert.Equal(SyntaxNodeKind.Variable, variable.Kind); Assert.Equal(text, variable.Name.FullName); Assert.Equal("testVar", variable.Name.SimplifiedName); Assert.Equal(SigilKind.Hash, variable.Name.Sigil); Assert.Equal(text, variable.ToString()); }
public void TestEmptyDialogueBlock() { string text = "<PRE box>[text000]</PRE>"; var block = NSScript.ParseDialogueBlock(text); Assert.Equal("box", block.BoxName); Assert.Equal(SyntaxNodeKind.DialogueBlock, block.Kind); Assert.Equal(0, block.Parts.Length); string toStringResult = Helpers.RemoveNewLineCharacters(block.ToString()); Assert.Equal(text, toStringResult); }
public void TestChapter() { string text = "chapter main{}"; var root = NSScript.ParseScript(text); var chapter = root.MainChapter; Assert.Equal(SyntaxNodeKind.Chapter, chapter.Kind); Assert.Equal("main", chapter.Name.FullName); string toStringResult = Helpers.RemoveNewLineCharacters(chapter.ToString()); Assert.Equal(text, toStringResult); }
public void TestMethod() { string text = "function Test(){}"; var root = NSScript.ParseScript(text); var method = root.Methods[0]; Assert.Equal(SyntaxNodeKind.Method, method.Kind); Assert.Equal("Test", method.Name.FullName); Assert.Equal(0, method.Parameters.Length); string toStringResult = Helpers.RemoveNewLineCharacters(method.ToString()); Assert.Equal(text, toStringResult); }
public void TestMethodCall() { string text = "WaitKey(10000);"; var call = NSScript.ParseExpression(text) as MethodCall; Assert.NotNull(call); Assert.Equal(SyntaxNodeKind.MethodCall, call.Kind); Assert.Equal("WaitKey", call.TargetMethodName.FullName); Assert.Equal(call.TargetMethodName.FullName, call.TargetMethodName.SimplifiedName); Assert.Equal(SigilKind.None, call.TargetMethodName.Sigil); Assert.Equal(1, call.Arguments.Length); Assert.Equal(text, call.ToString()); }
public void TestWhileStatement() { string text = "while (true){}"; var whileStatement = NSScript.ParseStatement(text) as WhileStatement; Assert.NotNull(whileStatement); Assert.Equal(SyntaxNodeKind.WhileStatement, whileStatement.Kind); Assert.NotNull(whileStatement.Condition); Assert.NotNull(whileStatement.Body); string toStringResult = Helpers.RemoveNewLineCharacters(whileStatement.ToString()); Assert.Equal(text, toStringResult); }
public void TestIfStatementWithElseClause() { string text = "if (#flag == true){}else{}"; var ifStatement = NSScript.ParseStatement(text) as IfStatement; Assert.NotNull(ifStatement); Assert.Equal(SyntaxNodeKind.IfStatement, ifStatement.Kind); Assert.NotNull(ifStatement.Condition); Assert.NotNull(ifStatement.IfTrueStatement); Assert.NotNull(ifStatement.IfFalseStatement); string toStringResult = Helpers.RemoveNewLineCharacters(ifStatement.ToString()); Assert.Equal(text, toStringResult); }
private void TestAssignment(AssignmentOperationKind kind) { string text = "$a " + Operation.GetText(kind) + " 42"; var expr = NSScript.ParseExpression(text) as AssignmentExpression; Assert.NotNull(expr); Assert.Equal(SyntaxNodeKind.AssignmentExpression, expr.Kind); Assert.Equal(kind, expr.OperationKind); var target = expr.Target as Variable; Assert.NotNull(target); Assert.Equal("$a", target.Name.FullName); var value = expr.Value as Literal; Assert.NotNull(value); Assert.Equal(42, value.Value.RawValue); }
public void TestStringParameterReference() { string text = "function Test(\"stringParam\") { SomeMethod(\"stringParam\"); }"; var root = NSScript.ParseScript(text); var method = root.Methods[0]; var expressionStatement = method.Body.Statements[0] as ExpressionStatement; Assert.NotNull(expressionStatement); var invocation = expressionStatement.Expression as MethodCall; Assert.NotNull(invocation); var arg = invocation.Arguments[0] as ParameterReference; Assert.NotNull(arg); Assert.Equal(SyntaxNodeKind.Parameter, arg.Kind); Assert.Equal("\"stringParam\"", arg.ParameterName.FullName); Assert.Equal("stringParam", arg.ParameterName.SimplifiedName); Assert.Equal(SigilKind.None, arg.ParameterName.Sigil); }
private void TestStringParameterReferenceWithSigilImpl(string fullName, string simplifiedName, SigilKind sigil) { string text = $"function Test({fullName}) {{ SomeMethod({fullName}); }}"; var root = NSScript.ParseScript(text); var method = root.Methods[0]; var expressionStatement = method.Body.Statements[0] as ExpressionStatement; Assert.NotNull(expressionStatement); var invocation = expressionStatement.Expression as MethodCall; Assert.NotNull(invocation); var arg = invocation.Arguments[0] as ParameterReference; Assert.NotNull(arg); Assert.Equal(SyntaxNodeKind.Parameter, arg.Kind); Assert.Equal(fullName, arg.ParameterName.FullName); Assert.Equal(simplifiedName, arg.ParameterName.SimplifiedName); Assert.Equal(sigil, arg.ParameterName.Sigil); }
public void TestDialogueLine_OneSegment() { string text = "<PRE box>[text000]This is a test.</PRE>"; var block = NSScript.ParseDialogueBlock(text); Assert.Equal("text000", block.Identifier); Assert.Equal("box", block.BoxName); Assert.Equal(SyntaxNodeKind.DialogueBlock, block.Kind); Assert.Equal(1, block.Parts.Length); var line = block.Parts[0] as DialogueLine; Assert.Equal(SyntaxNodeKind.DialogueLine, line.Kind); Assert.Equal(1, line.Segments.Length); var segment = line.Segments[0]; Assert.Equal(SyntaxNodeKind.TextSegment, segment.Kind); Assert.Equal("This is a test.", segment.Text); }
public void TestMethodWithStringParameter() { string text = "function Test(\"stringParam\"){}"; var root = NSScript.ParseScript(text); var method = root.Methods[0]; Assert.Equal(SyntaxNodeKind.Method, method.Kind); Assert.Equal("Test", method.Name.FullName); Assert.Equal(1, method.Parameters.Length); var p = method.Parameters[0]; Assert.Equal(SyntaxNodeKind.Parameter, p.Kind); Assert.Equal("\"stringParam\"", p.ParameterName.FullName); Assert.Equal("stringParam", p.ParameterName.SimplifiedName); Assert.Equal(SigilKind.None, p.ParameterName.Sigil); string toStringResult = Helpers.RemoveNewLineCharacters(method.ToString()); Assert.Equal(text, toStringResult); }
private void TestMethodWithStringParameterWithSigilImpl(string fullName, string simplifiedName, SigilKind sigil) { string text = $"function Test({fullName}){{}}"; var root = NSScript.ParseScript(text); var method = root.Methods[0]; Assert.Equal(SyntaxNodeKind.Method, method.Kind); Assert.Equal("Test", method.Name.FullName); Assert.Equal(1, method.Parameters.Length); var p = method.Parameters[0]; Assert.Equal(SyntaxNodeKind.Parameter, p.Kind); Assert.Equal(fullName, p.ParameterName.FullName); Assert.Equal(simplifiedName, p.ParameterName.SimplifiedName); Assert.Equal(sigil, p.ParameterName.Sigil); string toStringResult = Helpers.RemoveNewLineCharacters(method.ToString()); Assert.Equal(text, toStringResult); }
private void TestBinary(BinaryOperationKind kind) { string text = "$a " + Operation.GetText(kind) + " $b"; var expr = NSScript.ParseExpression(text) as BinaryExpression; Assert.NotNull(expr); Assert.Equal(SyntaxNodeKind.BinaryExpression, expr.Kind); Assert.Equal(kind, expr.OperationKind); var left = expr.Left as Variable; Assert.NotNull(left); Assert.Equal("$a", left.Name.FullName); var right = expr.Right as Variable; Assert.NotNull(right); Assert.Equal("$b", right.Name.FullName); Assert.Equal(text, expr.ToString()); }
private SyntaxToken LexToken(string text) { SyntaxToken result = null; foreach (var token in NSScript.ParseTokens(text)) { if (result == null) { result = token; } else if (token.Kind != SyntaxTokenKind.EndOfFileToken) { Assert.True(false, "More than one token was lexed."); } } if (result == null) { Assert.True(false, "No tokens were lexed."); } return(result); }