Esempio n. 1
0
        public void ShouldReturnKeywordWithNoName()
        {
            var   stream = new PushBackCharacterStream(new StringReader(":"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Keyword, token.Type);
            Assert.AreEqual(":", token.Text);
        }
Esempio n. 2
0
        public void ShouldReturnNumberTokenTypeWhenInputIsInvalidNumber()
        {
            var   stream = new PushBackCharacterStream(new StringReader("123asdf"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Number, token.Type);
            Assert.AreEqual("123asdf", token.Text);
        }
Esempio n. 3
0
        public void ShouldReturnSymbolWhenItHasADot()
        {
            var   stream = new PushBackCharacterStream(new StringReader("namespace.test"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Symbol, token.Type);
            Assert.AreEqual("namespace.test", token.Text);
        }
Esempio n. 4
0
        public void ShouldReturnCommentToEndOfLineOnly()
        {
            var   stream = new PushBackCharacterStream(new StringReader("; test\r\n123"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Comment, token.Type);
            Assert.AreEqual("; test", token.Text);
        }
Esempio n. 5
0
        public void ShouldReturnRealNumber()
        {
            var   stream = new PushBackCharacterStream(new StringReader("123.321"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Number, token.Type);
            Assert.AreEqual("123.321", token.Text);
        }
Esempio n. 6
0
        public void ShouldReturnNil()
        {
            var   stream = new PushBackCharacterStream(new StringReader("nil"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Nil, token.Type);
            Assert.AreEqual("nil", token.Text);
            Assert.IsFalse(stream.HasMore);
        }
Esempio n. 7
0
        public void ShouldReturnBooleanWhenFalseIsInput()
        {
            var   stream = new PushBackCharacterStream(new StringReader("false"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Boolean, token.Type);
            Assert.AreEqual("false", token.Text);
            Assert.IsFalse(stream.HasMore);
        }
Esempio n. 8
0
        public void ShouldReturnKeywordFollowByListStart()
        {
            var   stream = new PushBackCharacterStream(new StringReader(":asdf("));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Keyword, token.Type);
            Assert.AreEqual(":asdf", token.Text);
            Assert.AreEqual(TokenType.ListStart, lexer.Next().Type);
        }
Esempio n. 9
0
        public void ShouldStopParsingSymbolWhenDoubleQuoteFound()
        {
            var   stream = new PushBackCharacterStream(new StringReader("asdf\"str\""));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Symbol, token.Type);
            Assert.AreEqual("asdf", token.Text);

            token = lexer.Next();
            Assert.AreEqual(TokenType.String, token.Type);
            Assert.AreEqual("\"str\"", token.Text);
        }
Esempio n. 10
0
        public void ShouldReturnSymbolImmediatelyFollowedByComment()
        {
            var   stream = new PushBackCharacterStream(new StringReader("test;comment"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Symbol, token.Type);
            Assert.AreEqual("test", token.Text);

            token = lexer.Next();
            Assert.AreEqual(TokenType.Comment, token.Type);
            Assert.AreEqual(";comment", token.Text);
        }
Esempio n. 11
0
        public void ShouldReturnCommentWithTrailingWhitespace()
        {
            var   stream = new PushBackCharacterStream(new StringReader("; test text  \r\n"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Comment, token.Type);
            Assert.AreEqual("; test text  ", token.Text);

            token = lexer.Next();
            Assert.AreEqual(TokenType.Whitespace, token.Type);
            Assert.AreEqual("\r\n", token.Text);
        }
Esempio n. 12
0
        public void ShouldReturnTwoSymbolsSeparatedByWhitespace()
        {
            var   stream = new PushBackCharacterStream(new StringReader("symbol1 symbol2"));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Symbol, token.Type);
            Assert.AreEqual("symbol1", token.Text);

            token = lexer.Next();
            Assert.AreEqual(TokenType.Whitespace, token.Type);

            token = lexer.Next();
            Assert.AreEqual(TokenType.Symbol, token.Type);
            Assert.AreEqual("symbol2", token.Text);
        }
Esempio n. 13
0
        public void ShouldReturnNumberFollowByWhitespaceAndAString()
        {
            var   stream = new PushBackCharacterStream(new StringReader("123 \"asdf\""));
            Lexer lexer  = new Lexer(stream);
            Token token  = lexer.Next();

            Assert.AreEqual(TokenType.Number, token.Type);
            Assert.AreEqual("123", token.Text);
            Assert.AreEqual(0, token.StartIndex);

            token = lexer.Next();
            Assert.AreEqual(TokenType.Whitespace, token.Type);
            Assert.AreEqual(" ", token.Text);
            Assert.AreEqual(3, token.StartIndex);

            token = lexer.Next();
            Assert.AreEqual(TokenType.String, token.Type);
            Assert.AreEqual("\"asdf\"", token.Text);
            Assert.AreEqual(4, token.StartIndex);
        }