public void TestParseErrorInsideDefinition() { var tokenizer = new PositionalTokenizer(Tokenizer.CreateTokenizer("function func() { j = }")); tokenizer.Match("function"); var expr = UserFunctionDefinitionExpression.Parse(tokenizer); Assert.That(expr, Is.InstanceOf <ParseErrorExpression>()); Assert.That(((ParseErrorExpression)expr).Message, Is.EqualTo("Unexpected end of script")); }
public void TestParseErrorInsideDefinitionExpressionTokenizer() { var group = new ExpressionGroup(); var tokenizer = new ExpressionTokenizer(Tokenizer.CreateTokenizer("function func() { j = }"), group); tokenizer.Match("function"); var expr = UserFunctionDefinitionExpression.Parse(tokenizer); Assert.That(expr, Is.InstanceOf <FunctionDefinitionExpression>()); Assert.That(group.ParseErrors.Count(), Is.EqualTo(2)); Assert.That(group.ParseErrors.First().Message, Is.EqualTo("Unexpected character: }")); }
private FunctionDefinitionExpression Parse(string input, string expectedError = null) { var tokenizer = new PositionalTokenizer(Tokenizer.CreateTokenizer(input)); tokenizer.Match("function"); var expr = UserFunctionDefinitionExpression.Parse(tokenizer); if (expectedError != null) { Assert.That(expr, Is.InstanceOf <ParseErrorExpression>()); var error = (ParseErrorExpression)expr; var formattedErrorMessage = string.Format("{0}:{1} {2}", error.Location.Start.Line, error.Location.Start.Column, error.Message); Assert.That(formattedErrorMessage, Is.EqualTo(expectedError)); return(null); } else { Assert.That(expr, Is.InstanceOf <FunctionDefinitionExpression>()); return((FunctionDefinitionExpression)expr); } }