Browse Source

Update tests for EnvDTE.CodeNamespace.

pull/375/head
Matt Ward 12 years ago
parent
commit
30a5d66bb3
  1. 19
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  2. 20
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsInNamespace.cs
  3. 23
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeNamespace.cs
  4. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  5. 147
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs
  6. 41
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTestBase.cs
  7. 41
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTests.cs
  8. 359
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeNamespaceTests.cs
  9. 25
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
  10. 15
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

19
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
@ -12,7 +11,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -12,7 +11,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
DTE dte;
protected CodeModelContext context;
readonly ISymbolModel symbolModel;
IEntity entity;
public CodeElement()
@ -24,23 +22,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -24,23 +22,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
this.context = context;
}
public CodeElement(CodeModelContext context, ISymbolModel symbolModel)
{
this.context = context;
this.symbolModel = symbolModel;
if (symbolModel.ParentProject != null) {
this.Language = symbolModel.ParentProject.GetCodeModelLanguage();
}
}
public CodeElement(CodeModelContext context, IEntity entity)
{
this.context = context;
this.entity = entity;
if (context.CurrentProject != null) {
this.Language = context.CurrentProject.GetCodeModelLanguage();
}
}
internal static CodeElement CreateMember(CodeModelContext context, IMember member)
{
@ -63,11 +50,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -63,11 +50,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public virtual string Name {
get {
if (symbolModel != null)
return symbolModel.Name;
return entity.Name;
}
get { return entity.Name; }
}
public virtual string Language { get; protected set; }

20
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsInNamespace.cs

@ -15,7 +15,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -15,7 +15,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public class CodeElementsInNamespace : CodeElementsList<CodeElement>
{
CodeModelContext context;
NamespaceName namespaceName;
INamespace ns;
public CodeElementsInNamespace(CodeModelContext context)
@ -30,18 +29,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -30,18 +29,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
GetCodeElements();
}
// public CodeElementsInNamespace(CodeModelContext context, string qualifiedNamespaceName)
// : this(context, new NamespaceName(qualifiedNamespaceName))
// {
// }
//
// public CodeElementsInNamespace(CodeModelContext context, NamespaceName namespaceName)
// {
// this.context = context;
// this.namespaceName = namespaceName;
// GetCodeElements();
// }
void GetCodeElements()
{
foreach (INamespace childNamespace in ns.ChildNamespaces) {
@ -60,12 +47,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -60,12 +47,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
void AddType(IType type)
{
ITypeDefinition typeDefinition = type.GetDefinition();
if (typeDefinition.Kind == TypeKind.Interface) {
} else {
Add(new CodeClass2(context, typeDefinition));
}
Add(CodeType.Create(context, type));
}
}
}

23
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeNamespace.cs

@ -16,18 +16,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -16,18 +16,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
: base(context)
{
this.ns = ns;
//this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal;
//this.Language = context.CurrentProject.GetCodeModelLanguage();
this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal;
this.Language = context.CurrentProject.GetCodeModelLanguage();
}
public override global::EnvDTE.vsCMElement Kind {
get { return global::EnvDTE.vsCMElement.vsCMElementNamespace; }
}
// internal NamespaceName NamespaceName {
// get { return namespaceName; }
// }
public string FullName {
get { return ns.FullName; }
}
@ -39,21 +35,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -39,21 +35,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public virtual global::EnvDTE.CodeElements Members {
get { return new CodeElementsInNamespace(context, ns); }
}
// CodeElementsList<CodeElement> members;
// public virtual global::EnvDTE.CodeElements Members {
// get {
// if (members == null) {
// if (model == null)
// throw new NotSupportedException();
// IModelCollection<CodeElement> namespaceMembers = model.ChildNamespaces.Select(ns => new CodeNamespace(context, ns));
// IModelCollection<CodeElement> typeMembers = model.Types.Select(td => CodeType.Create(context, td));
// members = namespaceMembers.Concat(typeMembers).AsCodeElements();
// }
// return members;
// }
// }
}
// Move code below into FileCodeModelNamespace

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -87,7 +87,6 @@ @@ -87,7 +87,6 @@
<Compile Include="Src\EnvDTE\CodeAttribute2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeClass2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeDelegateTests.cs" />
<Compile Include="Src\EnvDTE\CodeElementsInNamespaceTests.cs" />
<Compile Include="Src\EnvDTE\CodeFunction2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeFunctionTests.cs" />
<Compile Include="Src\EnvDTE\CodeImportTests.cs" />

147
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs

@ -1,147 +0,0 @@ @@ -1,147 +0,0 @@
//// 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.Collections.Generic;
//using System.Linq;
//using ICSharpCode.PackageManagement.EnvDTE;
//using NUnit.Framework;
//using PackageManagement.Tests.Helpers;
//
//namespace PackageManagement.Tests.EnvDTE
//{
// [TestFixture]
// public class CodeElementsInNamespaceTests
// {
// CodeElementsInNamespace codeElements;
// ProjectContentHelper helper;
//
// [SetUp]
// public void Init()
// {
// helper = new ProjectContentHelper();
// }
//
// void CreateCodeElements(string namespaceName)
// {
// codeElements = new CodeElementsInNamespace(helper.ProjectContent, namespaceName);
// }
//
// [Test]
// public void Count_NoItemsInNamespace_ReturnsZero()
// {
// helper.NoCompletionItemsInNamespace("Test");
// CreateCodeElements("Test");
//
// int count = codeElements.Count;
//
// Assert.AreEqual(0, count);
// }
//
// [Test]
// public void GetEnumerator_NoItemsInNamespace_ReturnsNoItems()
// {
// helper.NoCompletionItemsInNamespace("Test");
// CreateCodeElements("Test");
//
// List<CodeElement> codeElementsList = codeElements.ToList();
//
// Assert.AreEqual(0, codeElementsList.Count);
// }
//
// [Test]
// public void GetEnumerator_OneNamespaceCompletionEntryInNamespace_ReturnsOneCodeNamespace()
// {
// helper.AddNamespaceCompletionEntryInNamespace("Parent", "Child");
// CreateCodeElements("Parent");
//
// CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();
//
// Assert.AreEqual(1, codeElements.Count);
// Assert.AreEqual("Child", codeNamespace.Name);
// Assert.AreEqual("Parent.Child", codeNamespace.FullName);
// }
//
// [Test]
// public void GetEnumerator_OneClassCompletionEntryInNamespace_ReturnsOneCodeClass()
// {
// helper.AddClassToProjectContentAndCompletionEntries("Test", "Test.MyClass");
// CreateCodeElements("Test");
//
// CodeClass2 codeClass = codeElements.ToList().FirstOrDefault() as CodeClass2;
//
// Assert.AreEqual(1, codeElements.Count);
// Assert.AreEqual("MyClass", codeClass.Name);
// Assert.AreEqual("Test.MyClass", codeClass.FullName);
// }
//
// [Test]
// public void GetEnumerator_UnknownCompletionEntryInNamespace_ReturnsNoItems()
// {
// helper.AddUnknownCompletionEntryTypeToNamespace("Test");
// CreateCodeElements("Test");
//
// List<CodeElement> codeElementsList = codeElements.ToList();
//
// Assert.AreEqual(0, codeElementsList.Count);
// }
//
// [Test]
// public void GetEnumerator_EmptyNamespaceEntry_ReturnsNoItems()
// {
// helper.AddNamespaceCompletionEntryInNamespace(String.Empty, String.Empty);
// CreateCodeElements(String.Empty);
//
// List<CodeElement> codeElementsList = codeElements.ToList();
//
// Assert.AreEqual(0, codeElementsList.Count);
// }
//
// [Test]
// public void GetEnumerator_ParentChildAndGrandChildNamespaces_ReturnsOneCodeNamespaceWhichHasGrandChildNamespace()
// {
// helper.AddNamespaceCompletionEntryInNamespace("Parent", "Child");
// helper.AddNamespaceCompletionEntryInNamespace("Parent.Child", "GrandChild");
// helper.NoCompletionItemsInNamespace("Parent.Child.GrandChild");
// CreateCodeElements("Parent");
//
// CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();
// CodeNamespace grandChildNamespace = codeNamespace.Members.FirstCodeNamespaceOrDefault();
//
// Assert.AreEqual("GrandChild", grandChildNamespace.Name);
// }
//
// [Test]
// public void Item_OneClassCompletionEntryAndFirstItemSelected_ReturnsOneCodeClass()
// {
// helper.AddClassToProjectContentAndCompletionEntries("Test", "Test.MyClass");
// CreateCodeElements("Test");
//
// CodeClass2 codeClass = codeElements.Item(1) as CodeClass2;
//
// Assert.AreEqual("Test.MyClass", codeClass.FullName);
// }
//
// [Test]
// public void Item_OneClassCompletionEntryAndItemSelectedByName_ReturnsOneCodeClass()
// {
// helper.AddClassToProjectContentAndCompletionEntries("Test", "Test.MyClass");
// CreateCodeElements("Test");
//
// CodeClass2 codeClass = codeElements.Item("MyClass") as CodeClass2;
//
// Assert.AreEqual("Test.MyClass", codeClass.FullName);
// }
//
// [Test]
// public void Item_OneInterfaceCompletionEntryAndItemSelectedByName_ReturnsOneCodeInterface()
// {
// helper.AddInterfaceToProjectContentAndCompletionEntries("Test", "Test.IClass");
// CreateCodeElements("Test");
//
// CodeInterface codeInterface = codeElements.Item("IClass") as CodeInterface;
//
// Assert.AreEqual("Test.IClass", codeInterface.FullName);
// }
// }
//}

41
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTestBase.cs

@ -2,14 +2,13 @@ @@ -2,14 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE
@ -30,5 +29,39 @@ namespace PackageManagement.Tests.EnvDTE @@ -30,5 +29,39 @@ namespace PackageManagement.Tests.EnvDTE
CurrentProject = project
};
}
protected CodeModel codeModel;
protected Project dteProject;
protected IPackageManagementProjectService projectService;
protected IPackageManagementFileService fileService;
protected TestableProject msbuildProject;
protected void CreateCodeModel()
{
msbuildProject = ProjectHelper.CreateTestProject();
projectService = MockRepository.GenerateStub<IPackageManagementProjectService>();
fileService = MockRepository.GenerateStub<IPackageManagementFileService>();
dteProject = new Project(msbuildProject, projectService, fileService);
codeModelContext.DteProject = dteProject;
codeModel = new CodeModel(codeModelContext, dteProject);
msbuildProject.SetAssemblyModel(assemblyModel);
project.Stub(p => p.AssemblyModel).Return(assemblyModel);
fileService
.Stub(fs => fs.GetCompilationUnit(msbuildProject))
.WhenCalled(compilation => compilation.ReturnValue = CreateCompilation());
}
ICompilation CreateCompilation()
{
var solutionSnapshot = new TestableSolutionSnapshot(msbuildProject);
msbuildProject.SetProjectContent(projectContent);
ICompilation compilation = new SimpleCompilation(solutionSnapshot, projectContent, projectContent.AssemblyReferences);
solutionSnapshot.AddCompilation(projectContent, compilation);
return compilation;
}
}
}

41
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTests.cs

@ -2,58 +2,17 @@ @@ -2,58 +2,17 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeModelTests : CodeModelTestBase
{
CodeModel codeModel;
Project dteProject;
IPackageManagementProjectService fakeProjectService;
IPackageManagementFileService fakeFileService;
TestableProject msbuildProject;
void CreateCodeModel()
{
msbuildProject = ProjectHelper.CreateTestProject();
fakeProjectService = MockRepository.GenerateStub<IPackageManagementProjectService>();
fakeFileService = MockRepository.GenerateStub<IPackageManagementFileService>();
dteProject = new Project(msbuildProject, fakeProjectService, fakeFileService);
codeModelContext.DteProject = dteProject;
codeModel = new CodeModel(codeModelContext, dteProject);
msbuildProject.SetAssemblyModel(assemblyModel);
project.Stub(p => p.AssemblyModel).Return(assemblyModel);
fakeFileService
.Stub(fileService => fileService.GetCompilationUnit(msbuildProject))
.WhenCalled(compilation => compilation.ReturnValue = CreateCompilation());
}
ICompilation CreateCompilation()
{
var solutionSnapshot = new TestableSolutionSnapshot(msbuildProject);
msbuildProject.SetProjectContent(projectContent);
ICompilation compilation = new SimpleCompilation(solutionSnapshot, projectContent, projectContent.AssemblyReferences);
solutionSnapshot.AddCompilation(projectContent, compilation);
return compilation;
}
void CreateCodeModelWithCSharpProject()
{
CreateCodeModel();

359
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeNamespaceTests.cs

@ -1,164 +1,195 @@ @@ -1,164 +1,195 @@
//// 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 ICSharpCode.PackageManagement.EnvDTE;
//using ICSharpCode.SharpDevelop.Dom;
//using NUnit.Framework;
//using PackageManagement.Tests.Helpers;
//
//namespace PackageManagement.Tests.EnvDTE
//{
// [TestFixture]
// public class CodeNamespaceTests
// {
// CodeNamespace codeNamespace;
// ProjectContentHelper helper;
//
// void CreateCodeNamespace(string namespaceName)
// {
// codeNamespace = new CodeNamespace(helper.ProjectContent, namespaceName);
// }
//
// void CreateProjectContent()
// {
// helper = new ProjectContentHelper();
// }
//
// void AddClassToProjectContent(string namespaceName, string className)
// {
// helper.AddClassToProjectContentAndCompletionEntries(namespaceName, className);
// }
//
// void AddUnknownCompletionEntryToNamespace(string namespaceName)
// {
// helper.AddUnknownCompletionEntryTypeToNamespace(namespaceName);
// }
//
// [Test]
// public void Members_NamespaceHasOneClass_ReturnsOneClass()
// {
// CreateProjectContent();
// AddClassToProjectContent("Tests", "Tests.MyClass");
// CreateCodeNamespace("Tests");
//
// global::EnvDTE.CodeElements members = codeNamespace.Members;
// CodeClass2 codeClass = members.FirstCodeClass2OrDefault();
//
// Assert.AreEqual(1, members.Count);
// Assert.AreEqual("Tests.MyClass", codeClass.FullName);
// }
//
// [Test]
// public void Members_NamespaceHasOneChildNamespace_ReturnsOneChildNamespace()
// {
// CreateProjectContent();
// helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
// CreateCodeNamespace("First");
//
// global::EnvDTE.CodeElements members = codeNamespace.Members;
// CodeNamespace childNamespace = members.FirstCodeNamespaceOrDefault();
//
// Assert.AreEqual("First", codeNamespace.Name);
// Assert.AreEqual(1, members.Count);
// Assert.AreEqual("Second", childNamespace.Name);
// Assert.AreEqual("First.Second", childNamespace.FullName);
// }
//
// [Test]
// public void InfoLocation_NamespaceHasNoClasses_ReturnsExternal()
// {
// CreateProjectContent();
// CreateCodeNamespace("Test");
//
// Assert.AreEqual(global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal, codeNamespace.InfoLocation);
// }
//
// [Test]
// public void Members_NamespaceHasOneChildNamespaceWithThreeNamespaceParts_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
// {
// CreateProjectContent();
// helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
// helper.AddNamespaceCompletionEntryInNamespace("First.Second", "Third");
// helper.NoCompletionItemsInNamespace("First.Second.Third");
// CreateCodeNamespace("First");
//
// global::EnvDTE.CodeElements members = codeNamespace.Members;
// CodeNamespace secondNamespace = members.FirstCodeNamespaceOrDefault();
// CodeNamespace thirdNamespace = secondNamespace.Members.FirstCodeNamespaceOrDefault();
//
// Assert.AreEqual("First", codeNamespace.Name);
// Assert.AreEqual(1, members.Count);
// Assert.AreEqual("Second", secondNamespace.Name);
// Assert.AreEqual("First.Second", secondNamespace.FullName);
// Assert.AreEqual(1, secondNamespace.Members.Count);
// Assert.AreEqual("First.Second.Third", thirdNamespace.FullName);
// Assert.AreEqual(0, thirdNamespace.Members.Count);
// }
//
// [Test]
// public void Members_ProjectHasTwoNamespacesWithCommonFirstAndSecondPartOfThreePartNamespace_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
// {
// CreateProjectContent();
// helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
// helper.AddNamespaceCompletionEntriesInNamespace("First.Second", "Third", "Different");
// CreateCodeNamespace("First");
//
// global::EnvDTE.CodeElements members = codeNamespace.Members;
// CodeNamespace secondNamespace = members.FirstOrDefault() as CodeNamespace;
//
// Assert.AreEqual("First", codeNamespace.Name);
// Assert.AreEqual(1, members.Count);
// Assert.AreEqual("Second", secondNamespace.Name);
// Assert.AreEqual("First.Second", secondNamespace.FullName);
// Assert.AreEqual(2, secondNamespace.Members.Count);
// }
//
// [Test]
// public void Members_NamespaceHasUnknownNamespaceEntryType_ReturnsNoItems()
// {
// CreateProjectContent();
// AddUnknownCompletionEntryToNamespace("Tests");
// CreateCodeNamespace("Tests");
//
// global::EnvDTE.CodeElements members = codeNamespace.Members;
//
// Assert.AreEqual(0, members.Count);
// }
//
// [Test]
// public void Language_CSharpProject_ReturnsCSharpModelLanguage()
// {
// CreateProjectContent();
// helper.ProjectContentIsForCSharpProject();
// CreateCodeNamespace(String.Empty);
//
// string language = codeNamespace.Language;
//
// Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language);
// }
//
// [Test]
// public void Language_VisualBasicProject_ReturnsVisualBasicModelLanguage()
// {
// CreateProjectContent();
// helper.ProjectContentIsForVisualBasicProject();
// CreateCodeNamespace(String.Empty);
//
// string language = codeNamespace.Language;
//
// Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language);
// }
//
// [Test]
// public void Kind_EmptyStringNamespace_ReturnsNamespace()
// {
// CreateProjectContent();
// CreateCodeNamespace(String.Empty);
//
// global::EnvDTE.vsCMElement kind = codeNamespace.Kind;
//
// Assert.AreEqual(global::EnvDTE.vsCMElement.vsCMElementNamespace, kind);
// }
// }
//}
// 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 ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeNamespaceTests : CodeModelTestBase
{
CodeNamespace codeNamespace;
void CreateCodeNamespace(string code, string rootNamespace)
{
CreateCodeModel();
AddCodeFile("class.cs", code);
codeNamespace = codeModel
.CodeElements
.FindFirstCodeNamespaceOrDefault(n => n.Name == rootNamespace);
}
[Test]
public void Members_NamespaceHasOneClass_ReturnsOneClass()
{
string code =
"namespace Tests {\r\n" +
" public class MyClass {}\r\n" +
"}";
CreateCodeNamespace(code, "Tests");
global::EnvDTE.CodeElements members = codeNamespace.Members;
CodeClass2 codeClass = members.FirstCodeClass2OrDefault();
Assert.AreEqual(1, members.Count);
Assert.AreEqual("Tests.MyClass", codeClass.FullName);
}
[Test]
public void Members_NamespaceHasOneChildNamespace_ReturnsOneChildNamespace()
{
string code = "namespace First.Second {}";
CreateCodeNamespace(code, "First");
global::EnvDTE.CodeElements members = codeNamespace.Members;
CodeNamespace childNamespace = members.FirstCodeNamespaceOrDefault();
Assert.AreEqual("First", codeNamespace.Name);
Assert.AreEqual(1, members.Count);
Assert.AreEqual("Second", childNamespace.Name);
Assert.AreEqual("First.Second", childNamespace.FullName);
}
[Test]
public void InfoLocation_NamespaceHasNoClasses_ReturnsExternal()
{
string code = "namespace Test {}";
CreateCodeNamespace(code, "Test");
Assert.AreEqual(global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal, codeNamespace.InfoLocation);
}
[Test]
public void Members_NamespaceHasOneChildNamespaceWithThreeNamespaceParts_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
{
string code = "namespace First.Second.Third {}";
CreateCodeNamespace(code, "First");
global::EnvDTE.CodeElements members = codeNamespace.Members;
CodeNamespace secondNamespace = members.FirstCodeNamespaceOrDefault();
CodeNamespace thirdNamespace = secondNamespace.Members.FirstCodeNamespaceOrDefault();
Assert.AreEqual("First", codeNamespace.Name);
Assert.AreEqual(1, members.Count);
Assert.AreEqual("Second", secondNamespace.Name);
Assert.AreEqual("First.Second", secondNamespace.FullName);
Assert.AreEqual(1, secondNamespace.Members.Count);
Assert.AreEqual("First.Second.Third", thirdNamespace.FullName);
Assert.AreEqual(0, thirdNamespace.Members.Count);
}
[Test]
public void Members_ProjectHasTwoNamespacesWithCommonFirstAndSecondPartOfThreePartNamespace_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
{
string code =
"namespace First.Second {\r\n" +
" namespace Third {}\r\n" +
" namespace Different {}\r\n" +
"}";
CreateCodeNamespace(code, "First");
global::EnvDTE.CodeElements members = codeNamespace.Members;
CodeNamespace secondNamespace = members.FirstOrDefault() as CodeNamespace;
Assert.AreEqual("First", codeNamespace.Name);
Assert.AreEqual(1, members.Count);
Assert.AreEqual("Second", secondNamespace.Name);
Assert.AreEqual("First.Second", secondNamespace.FullName);
Assert.AreEqual(2, secondNamespace.Members.Count);
}
[Test]
public void Language_CSharpProject_ReturnsCSharpModelLanguage()
{
string code = "namespace Test {}";
CreateCodeNamespace(code, "Test");
string language = codeNamespace.Language;
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language);
}
[Test]
[Ignore("VB.NET not supported")]
public void Language_VisualBasicProject_ReturnsVisualBasicModelLanguage()
{
string code =
"Namespace Test\r\n" +
"End Namespace";
CreateCodeNamespace(code, "Test");
string language = codeNamespace.Language;
Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language);
}
[Test]
public void Kind_NamespaceHasNoClasses_ReturnsNamespace()
{
string code = "namespace Test {}";
CreateCodeNamespace(code, "Test");
global::EnvDTE.vsCMElement kind = codeNamespace.Kind;
Assert.AreEqual(global::EnvDTE.vsCMElement.vsCMElementNamespace, kind);
}
[Test]
public void Members_ParentChildAndGrandChildNamespaces_ReturnsOneCodeNamespaceWhichHasGrandChildNamespace()
{
string code = "namespace Parent.Child.GrandChild {}";
CreateCodeNamespace(code, "Parent");
CodeNamespace childNamespace = codeNamespace.Members.FirstCodeNamespaceOrDefault();
CodeNamespace grandChildNamespace = childNamespace.Members.FirstCodeNamespaceOrDefault();
Assert.AreEqual("GrandChild", grandChildNamespace.Name);
}
[Test]
public void Members_OneInterfaceCompletionEntryAndItemSelectedByName_ReturnsOneCodeInterface()
{
string code =
"namespace Test {\r\n" +
" public interface IClass {}\r\n" +
"}";
CreateCodeNamespace(code, "Test");
var codeInterface = codeNamespace.Members.Item("IClass") as CodeInterface;
Assert.AreEqual("Test.IClass", codeInterface.FullName);
}
[Test]
public void Members_OneClassCompletionEntryAndFirstItemSelected_ReturnsOneCodeClass()
{
string code =
"namespace Test {\r\n" +
" public class MyClass {}\r\n" +
"}";
CreateCodeNamespace(code, "Test");
var codeClass = codeNamespace.Members.Item(1) as CodeClass2;
Assert.AreEqual("Test.MyClass", codeClass.FullName);
}
[Test]
public void Members_OneClassCompletionEntryAndItemSelectedByName_ReturnsOneCodeClass()
{
string code =
"namespace Test {\r\n" +
" public class MyClass {}\r\n" +
"}";
CreateCodeNamespace(code, "Test");
var codeClass = codeNamespace.Members.Item("MyClass") as CodeClass2;
Assert.AreEqual("Test.MyClass", codeClass.FullName);
}
}
}

25
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs

@ -21,18 +21,17 @@ namespace PackageManagement.Tests.EnvDTE @@ -21,18 +21,17 @@ namespace PackageManagement.Tests.EnvDTE
[TestFixture]
public class ProjectItemTests : CodeModelTestBase
{
TestableDTEProject dteProject;
TestableDTEProject testableDteProject;
ProjectItems projectItems;
TestableProject msbuildProject;
FakeFileService fakeFileService;
void CreateProjectItems(string fileName = @"d:\projects\MyProject\MyProject.csproj")
{
dteProject = new TestableDTEProject();
msbuildProject = dteProject.TestableProject;
testableDteProject = new TestableDTEProject();
msbuildProject = testableDteProject.TestableProject;
msbuildProject.FileName = new FileName(fileName);
projectItems = (ProjectItems)dteProject.ProjectItems;
fakeFileService = dteProject.FakeFileService;
projectItems = (ProjectItems)testableDteProject.ProjectItems;
fakeFileService = testableDteProject.FakeFileService;
}
void OpenSavedFileInSharpDevelop(string fileName)
@ -164,7 +163,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -164,7 +163,7 @@ namespace PackageManagement.Tests.EnvDTE
fileItem.Delete();
Assert.AreEqual(@"d:\projects\myproject\src\program.cs", dteProject.FakeFileService.PathPassedToRemoveFile);
Assert.AreEqual(@"d:\projects\myproject\src\program.cs", testableDteProject.FakeFileService.PathPassedToRemoveFile);
}
[Test]
@ -220,7 +219,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -220,7 +219,7 @@ namespace PackageManagement.Tests.EnvDTE
global::EnvDTE.CodeElements codeElements = fileItem.FileCodeModel.CodeElements;
CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();
Assert.AreEqual(dteProject.TestableProject, fakeFileService.ProjectPassedToGetCompilationUnit);
Assert.AreEqual(testableDteProject.TestableProject, fakeFileService.ProjectPassedToGetCompilationUnit);
Assert.AreEqual(0, codeElements.Count);
}
@ -336,7 +335,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -336,7 +335,7 @@ namespace PackageManagement.Tests.EnvDTE
msbuildProject.AddFile("MainForm.cs");
msbuildProject.AddDependentFile("MainForm.Designer.cs", "MainForm.cs");
global::EnvDTE.ProjectItems projectItems = dteProject.ProjectItems;
global::EnvDTE.ProjectItems projectItems = testableDteProject.ProjectItems;
string[] expectedFiles = new string[] {
"MainForm.cs"
@ -351,7 +350,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -351,7 +350,7 @@ namespace PackageManagement.Tests.EnvDTE
msbuildProject.AddFile("MainForm.cs");
msbuildProject.AddDependentFile("MainForm.Designer.cs", "MainForm.cs");
Assert.Throws<ArgumentException>(() => dteProject.ProjectItems.Item("MainForm.Designer.cs"));
Assert.Throws<ArgumentException>(() => testableDteProject.ProjectItems.Item("MainForm.Designer.cs"));
}
[Test]
@ -360,7 +359,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -360,7 +359,7 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems();
msbuildProject.AddFile("MainForm.cs");
msbuildProject.AddDependentFile("MainForm.Designer.cs", "MainForm.cs");
global::EnvDTE.ProjectItem mainFormItem = dteProject.ProjectItems.Item("MainForm.cs");
global::EnvDTE.ProjectItem mainFormItem = testableDteProject.ProjectItems.Item("MainForm.cs");
global::EnvDTE.ProjectItems mainFormProjectItems = mainFormItem.ProjectItems;
@ -393,7 +392,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -393,7 +392,7 @@ namespace PackageManagement.Tests.EnvDTE
global::EnvDTE.ProjectItems collection = projectItem.Collection;
Assert.AreEqual(dteProject.ProjectItems, collection);
Assert.AreEqual(testableDteProject.ProjectItems, collection);
}
[Test]
@ -402,7 +401,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -402,7 +401,7 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems();
msbuildProject.FileName = new FileName(@"d:\projects\MyProject\MyProject.csproj");
msbuildProject.AddFile(@"src\program.cs");
global::EnvDTE.ProjectItem srcDirectoryItem = dteProject.ProjectItems.Item("src");
global::EnvDTE.ProjectItem srcDirectoryItem = testableDteProject.ProjectItems.Item("src");
global::EnvDTE.ProjectItem fileProjectItem = srcDirectoryItem.ProjectItems.Item("program.cs");
global::EnvDTE.ProjectItems collection = fileProjectItem.Collection;

15
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

@ -17,25 +17,20 @@ namespace PackageManagement.Tests.EnvDTE @@ -17,25 +17,20 @@ namespace PackageManagement.Tests.EnvDTE
[TestFixture]
public class ProjectTests : CodeModelTestBase
{
Project dteProject;
TestableProject msbuildProject;
IPackageManagementProjectService fakeProjectService;
IPackageManagementFileService fakeFileService;
void CreateProject(string fileName = @"d:\projects\MyProject\MyProject.csproj", string language = "C#")
{
msbuildProject = ProjectHelper.CreateTestProject();
msbuildProject.FileName = new FileName(fileName);
fakeProjectService = MockRepository.GenerateStub<IPackageManagementProjectService>();
projectService = MockRepository.GenerateStub<IPackageManagementProjectService>();
fakeFileService = MockRepository.GenerateStub<IPackageManagementFileService>();
dteProject = new Project(msbuildProject, fakeProjectService, fakeFileService);
fileService = MockRepository.GenerateStub<IPackageManagementFileService>();
dteProject = new Project(msbuildProject, projectService, fileService);
msbuildProject.SetAssemblyModel(assemblyModel);
fakeFileService
.Stub(fileService => fileService.GetCompilationUnit(msbuildProject))
fileService
.Stub(fs => fs.GetCompilationUnit(msbuildProject))
.WhenCalled(compilation => compilation.ReturnValue = projectContent.CreateCompilation());
}

Loading…
Cancel
Save