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

170 lines
5.8 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 ICSharpCode.NRefactory.VB.Ast;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.VB.Tests.Ast
{
[TestFixture]
public class ImportsStatementTests
{
[Test]
public void InvalidImportsStatement()
{
string program = "Imports\n";
ParseUtil.ParseGlobal<ImportsStatement>(program, true);
}
[Test]
public void InvalidImportsStatement2()
{
string program = "Imports ,\n";
ParseUtil.ParseGlobal<ImportsStatement>(program, true);
}
[Test]
[Ignore("Collection pattern matching is not implemented")]
public void SimpleImportsStatement()
{
string program = "Imports System\n";
var clause1 = new MemberImportsClause {
Member = new SimpleType("System")
};
var node = new ImportsStatement();
node.AddChild(clause1, ImportsStatement.ImportsClauseRole);
ParseUtil.AssertGlobal(program, node);
}
[Test]
[Ignore("Collection pattern matching is not implemented")]
public void QualifiedTypeImportsStatement()
{
string program = "Imports My.Name.Space\n";
var clause2 = new MemberImportsClause {
Member = new QualifiedType(new QualifiedType(new SimpleType("My"), new Identifier ("Name", TextLocation.Empty)), new Identifier ("Space", TextLocation.Empty))
};
var node = new ImportsStatement();
node.AddChild(clause2, ImportsStatement.ImportsClauseRole);
ParseUtil.AssertGlobal(program, node);
}
//
// [Test]
// public void VBNetUsingAliasDeclarationTest()
// {
// string program = "Imports TESTME=System\n" +
// "Imports myAlias=My.Name.Space\n" +
// "Imports StringCollection = System.Collections.Generic.List(Of string)\n";
// VBParser parser = ParserFactory.CreateParser(new StringReader(program));
// parser.Parse();
//
// Assert.AreEqual("", parser.Errors.ErrorOutput);
// CheckAliases(parser.CompilationUnit);
// }
//
// [Test]
// public void VBNetComplexUsingAliasDeclarationTest()
// {
// string program = "Imports NS1, AL=NS2, NS3, AL2=NS4, NS5\n";
// VBParser parser = ParserFactory.CreateParser(new StringReader(program));
// parser.Parse();
//
// Assert.AreEqual("", parser.Errors.ErrorOutput);
// // TODO : Extend test ...
// }
//
// [Test]
// public void VBNetXmlNamespaceUsingTest()
// {
// string program = "Imports <xmlns=\"http://icsharpcode.net/sharpdevelop/avalonedit\">";
// VBParser parser = ParserFactory.CreateParser(new StringReader(program));
// parser.Parse();
//
// Assert.AreEqual("", parser.Errors.ErrorOutput);
// CompilationUnit unit = parser.CompilationUnit;
//
// Assert.AreEqual(1, unit.Children.Count);
// Assert.IsTrue(unit.Children[0] is ImportsStatement);
// ImportsStatement ud = (ImportsStatement)unit.Children[0];
// Assert.AreEqual(1, ud.ImportsClauses.Count);
// Assert.IsFalse(ud.ImportsClauses[0].IsAlias);
// Assert.IsTrue(ud.ImportsClauses[0].IsXml);
//
// Assert.AreEqual("xmlns", ud.ImportsClauses[0].XmlPrefix);
// Assert.AreEqual("http://icsharpcode.net/sharpdevelop/avalonedit", ud.ImportsClauses[0].Name);
// }
//
// [Test]
// public void VBNetXmlNamespaceWithPrefixUsingTest()
// {
// string program = "Imports <xmlns:avalonedit=\"http://icsharpcode.net/sharpdevelop/avalonedit\">";
// VBParser parser = ParserFactory.CreateParser(new StringReader(program));
// parser.Parse();
//
// Assert.AreEqual("", parser.Errors.ErrorOutput);
// CompilationUnit unit = parser.CompilationUnit;
//
// Assert.AreEqual(1, unit.Children.Count);
// Assert.IsTrue(unit.Children[0] is ImportsStatement);
// ImportsStatement ud = (ImportsStatement)unit.Children[0];
// Assert.AreEqual(1, ud.ImportsClauses.Count);
// Assert.IsFalse(ud.ImportsClauses[0].IsAlias);
// Assert.IsTrue(ud.ImportsClauses[0].IsXml);
//
// Assert.AreEqual("xmlns:avalonedit", ud.ImportsClauses[0].XmlPrefix);
// Assert.AreEqual("http://icsharpcode.net/sharpdevelop/avalonedit", ud.ImportsClauses[0].Name);
// }
//
// [Test]
// public void VBNetXmlNamespaceSingleQuotedUsingTest()
// {
// string program = "Imports <xmlns='http://icsharpcode.net/sharpdevelop/avalonedit'>";
// VBParser parser = ParserFactory.CreateParser(new StringReader(program));
// parser.Parse();
//
// Assert.AreEqual("", parser.Errors.ErrorOutput);
// CompilationUnit unit = parser.CompilationUnit;
//
// Assert.AreEqual(1, unit.Children.Count);
// Assert.IsTrue(unit.Children[0] is ImportsStatement);
// ImportsStatement ud = (ImportsStatement)unit.Children[0];
// Assert.AreEqual(1, ud.ImportsClauses.Count);
// Assert.IsFalse(ud.ImportsClauses[0].IsAlias);
// Assert.IsTrue(ud.ImportsClauses[0].IsXml);
//
// Assert.AreEqual("xmlns", ud.ImportsClauses[0].XmlPrefix);
// Assert.AreEqual("http://icsharpcode.net/sharpdevelop/avalonedit", ud.ImportsClauses[0].Name);
// }
//
// [Test]
// public void VBNetXmlNamespaceSingleQuotedWithPrefixUsingTest()
// {
// string program = "Imports <xmlns:avalonedit='http://icsharpcode.net/sharpdevelop/avalonedit'>";
// VBParser parser = ParserFactory.CreateParser(new StringReader(program));
// parser.Parse();
//
// Assert.AreEqual("", parser.Errors.ErrorOutput);
// CompilationUnit unit = parser.CompilationUnit;
//
// Assert.AreEqual(1, unit.Children.Count);
// Assert.IsTrue(unit.Children[0] is ImportsStatement);
// ImportsStatement ud = (ImportsStatement)unit.Children[0];
// Assert.AreEqual(1, ud.ImportsClauses.Count);
// Assert.IsFalse(ud.ImportsClauses[0].IsAlias);
// Assert.IsTrue(ud.ImportsClauses[0].IsXml);
//
// Assert.AreEqual("xmlns:avalonedit", ud.ImportsClauses[0].XmlPrefix);
// Assert.AreEqual("http://icsharpcode.net/sharpdevelop/avalonedit", ud.ImportsClauses[0].Name);
// }
// #endregion
}
}