1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
7
using ICSharpCode.NRefactory.VB.Parser;
9
namespace ICSharpCode.NRefactory.VB.Tests.Lexer
12
public class CustomLexerTests
14
VBLexer GenerateLexer(StringReader sr)
16
return new VBLexer(sr);
20
public void TestSingleEOLForMulitpleLines()
22
VBLexer lexer = GenerateLexer(new StringReader("Stop\n\n\nEnd"));
23
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Stop));
24
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
25
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.End));
26
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
27
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
31
public void TestSingleEOLForMulitpleLinesWithContinuation()
33
VBLexer lexer = GenerateLexer(new StringReader("Stop\n _\n\nEnd"));
34
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Stop));
35
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
36
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.End));
37
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
38
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
42
public void EscapedIdentifier()
44
VBLexer lexer = GenerateLexer(new StringReader("[Stop]"));
45
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
46
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
47
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
51
public void IdentifierWithTypeCharacter()
53
VBLexer lexer = GenerateLexer(new StringReader("Stop$"));
54
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
55
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
56
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
60
public void ExclamationMarkIsTypeCharacter()
62
VBLexer lexer = GenerateLexer(new StringReader("a!=b"));
63
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
64
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Assign));
65
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
66
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
67
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
71
public void ExclamationMarkIsTypeCharacter2()
73
VBLexer lexer = GenerateLexer(new StringReader("a! b"));
74
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
75
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
76
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
77
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
81
public void ExclamationMarkIsIdentifier()
83
VBLexer lexer = GenerateLexer(new StringReader("a!b"));
84
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
85
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.ExclamationMark));
86
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
87
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
88
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
92
public void ExclamationMarkIsIdentifier2()
94
VBLexer lexer = GenerateLexer(new StringReader("a![b]"));
95
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
96
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.ExclamationMark));
97
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
98
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
99
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
103
public void RemCommentTest()
105
VBLexer lexer = GenerateLexer(new StringReader("a rem b"));
106
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.Identifier));
107
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOL));
108
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));
112
public void RemCommentTest2()
114
VBLexer lexer = GenerateLexer(new StringReader("REM c"));
115
Assert.That(lexer.NextToken().Kind, Is.EqualTo(Tokens.EOF));