.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.
 
 
 
 

87 lines
2.7 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 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 TextLocation(1, 1), t.Location);
Assert.AreEqual(new TextLocation(1, 7), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new TextLocation(1, 7), t.Location);
Assert.AreEqual(new TextLocation(2, 1), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.Static, t.Kind);
Assert.AreEqual(new TextLocation(2, 1), t.Location);
Assert.AreEqual(new TextLocation(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 TextLocation(1, 1), t.Location);
Assert.AreEqual(new TextLocation(1, 7), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new TextLocation(1, 7), t.Location);
Assert.AreEqual(new TextLocation(2, 1), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.Static, t.Kind);
Assert.AreEqual(new TextLocation(2, 1), t.Location);
Assert.AreEqual(new TextLocation(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 TextLocation(1, 7), t.Location);
Assert.AreEqual(new TextLocation(1, 7), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOF, t.Kind);
Assert.AreEqual(new TextLocation(1, 7), t.Location);
Assert.AreEqual(new TextLocation(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 TextLocation(2, 2), t.Location);
Assert.AreEqual(new TextLocation(2, 2), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOF, t.Kind);
Assert.AreEqual(new TextLocation(2, 2), t.Location);
Assert.AreEqual(new TextLocation(2, 2), t.EndLocation);
}
}
}