Ejemplo n.º 1
0
        protected void AssertCompilerReturnsMessage(
            string input,
            CompilerMessageId messageId,
            CompilerMessageType messageType,
            string[] messageParameters)
        {
            // Arrange
            var compiler    = new ThriftCompiler();
            var parserInput = ParserInput.FromString(input);

            // Act
            var result = compiler.Compile(parserInput.GetStream());

            // Assert
            var message = result.Messages.FirstOrDefault(
                m => m.MessageType == messageType && m.MessageId == messageId);

            Assert.True(message != null, $"No {messageType.ToString().ToLower()} messages were returned from the compiler");

            if (parserInput.LineNumber != null)
            {
                Assert.Equal(parserInput.LineNumber, message.LineNumber);
                Assert.Equal(parserInput.StartPosition, message.StartPosition);
                Assert.Equal(parserInput.EndPosition, message.EndPosition);
            }

            if (messageParameters?.Length > 0)
            {
                var expectedMessage = string.Format(
                    CompilerMessages.Get(messageId), messageParameters);
                Assert.Equal(expectedMessage, message.Message);
            }
        }
        public void GetMessage_ForAllMessageIds_ReturnsMessage(CompilerMessageId messageId)
        {
            // Arrange
            var messageKey      = CompilerMessages.FormatMessageId(messageId);
            var expectedMessage = this.resourceManager.GetString(messageKey);

            // Act
            var actualMessage = CompilerMessages.Get(messageId);

            // Assert
            Assert.True(!string.IsNullOrEmpty(expectedMessage), $"Compiler message missing for {messageKey}");
            Assert.Equal(expectedMessage, actualMessage);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates a warning message, specifying the tokens to highlight.
        /// </summary>
        /// <param name="messageId">The compiler message Id.</param>
        /// <param name="startToken">
        /// The starting token that the warning should be placed against.
        /// </param>
        /// <param name="endToken">
        /// The end token that the warning should be placed against.
        /// </param>
        /// <param name="messageParameters">
        /// Any parameters to include when formatting the compiler message.
        /// </param>
        /// <returns>The warning message.</returns>
        public static CompilationMessage CreateWarning(
            CompilerMessageId messageId,
            IToken startToken,
            IToken endToken,
            string[] messageParameters)
        {
            string formattedMessage = string.Format(
                CompilerMessages.Get(messageId), messageParameters);

            return(new CompilationMessage(
                       messageId,
                       CompilerMessageType.Warning,
                       startToken.Line,
                       startToken.Column + 1,
                       endToken.Column + endToken.Text.Length,
                       formattedMessage));
        }
Ejemplo n.º 4
0
        protected void AssertCompilerReturnsMessage(
            string input,
            CompilerMessageId messageId,
            CompilerMessageType messageType,
            string[] messageParameters)
        {
            // Arrange
            var compiler    = new ThriftCompiler();
            var parserInput = ParserInput.FromString(input);

            // Act
            var result = compiler.Compile(parserInput.GetStream());

            // Assert
            var message = result.Messages.FirstOrDefault(
                m => m.MessageType == messageType && m.MessageId == messageId);

            Assert.True(message != null, $"No {messageType.ToString().ToLower()} messages were returned from the compiler");

            // Although we know that message cannot be null because of the assert on
            // the previous line, check for null here because the lgtm check isn't
            // smart enough to realise that
            if (message != null)
            {
                if (parserInput.LineNumber != null)
                {
                    Assert.Equal(parserInput.LineNumber, message.LineNumber);
                    Assert.Equal(parserInput.StartPosition, message.StartPosition);
                    Assert.Equal(parserInput.EndPosition, message.EndPosition);
                }

                if (messageParameters?.Length > 0)
                {
                    var expectedMessage = string.Format(
                        CompilerMessages.Get(messageId), messageParameters);
                    Assert.Equal(expectedMessage, message.Message);
                }
            }
        }