mirror of https://github.com/icsharpcode/ILSpy.git
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
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)); |
|
} |
|
} |
|
}
|
|
|