1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
// 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 ICSharpCode.NRefactory.VB.Parser;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.VB.Tests.Lexer
{
[TestFixture]
public class LexerPositionTests
{
VBLexer GenerateLexer(string s)
{
return new VBLexer(new StringReader(s));
}
[Test]
public void TestNewLine()
{
VBLexer l = GenerateLexer("public\nstatic");
Token t = l.NextToken();
Assert.AreEqual(Tokens.Public, t.Kind);
Assert.AreEqual(new AstLocation(1, 1), t.Location);
Assert.AreEqual(new AstLocation(1, 7), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new AstLocation(1, 7), t.Location);
Assert.AreEqual(new AstLocation(2, 1), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.Static, t.Kind);
Assert.AreEqual(new AstLocation(2, 1), t.Location);
Assert.AreEqual(new AstLocation(2, 7), t.EndLocation);
}
[Test]
public void TestCarriageReturnNewLine()
{
VBLexer l = GenerateLexer("public\r\nstatic");
Token t = l.NextToken();
Assert.AreEqual(Tokens.Public, t.Kind);
Assert.AreEqual(new AstLocation(1, 1), t.Location);
Assert.AreEqual(new AstLocation(1, 7), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new AstLocation(1, 7), t.Location);
Assert.AreEqual(new AstLocation(2, 1), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.Static, t.Kind);
Assert.AreEqual(new AstLocation(2, 1), t.Location);
Assert.AreEqual(new AstLocation(2, 7), t.EndLocation);
}
[Test]
public void TestPositionOfEOF1()
{
VBLexer l = GenerateLexer("public");
l.NextToken(); // public
Token t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new AstLocation(1, 7), t.Location);
Assert.AreEqual(new AstLocation(1, 7), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOF, t.Kind);
Assert.AreEqual(new AstLocation(1, 7), t.Location);
Assert.AreEqual(new AstLocation(1, 7), t.EndLocation);
}
[Test]
public void TestPositionOfEOF2()
{
VBLexer l = GenerateLexer("public _\n ");
l.NextToken(); // public
Token t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new AstLocation(2, 2), t.Location);
Assert.AreEqual(new AstLocation(2, 2), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOF, t.Kind);
Assert.AreEqual(new AstLocation(2, 2), t.Location);
Assert.AreEqual(new AstLocation(2, 2), t.EndLocation);
}
}
}
|