.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

118 lines
4.2 KiB

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
namespace ICSharpCode.NRefactory.VB.Tests.Lexer
{
[TestFixture]
public class CustomLexerTests
{
VBLexer GenerateLexer(StringReader sr)
{
return new VBLexer(sr);
}
[Test]
public void TestSingleEOLForMulitpleLines()
{
VBLexer lexer = GenerateLexer(new StringReader("Stop\n\n\nEnd"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Stop));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.End));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void TestSingleEOLForMulitpleLinesWithContinuation()
{
VBLexer lexer = GenerateLexer(new StringReader("Stop\n _\n\nEnd"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Stop));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.End));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void EscapedIdentifier()
{
VBLexer lexer = GenerateLexer(new StringReader("[Stop]"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void IdentifierWithTypeCharacter()
{
VBLexer lexer = GenerateLexer(new StringReader("Stop$"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void ExclamationMarkIsTypeCharacter()
{
VBLexer lexer = GenerateLexer(new StringReader("a!=b"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Assign));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void ExclamationMarkIsTypeCharacter2()
{
VBLexer lexer = GenerateLexer(new StringReader("a! b"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void ExclamationMarkIsIdentifier()
{
VBLexer lexer = GenerateLexer(new StringReader("a!b"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.ExclamationMark));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void ExclamationMarkIsIdentifier2()
{
VBLexer lexer = GenerateLexer(new StringReader("a![b]"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.ExclamationMark));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void RemCommentTest()
{
VBLexer lexer = GenerateLexer(new StringReader("a rem b"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
[Test]
public void RemCommentTest2()
{
VBLexer lexer = GenerateLexer(new StringReader("REM c"));
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
}
}
}