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)); | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |