Browse Source

Update tests for EnvDTE.CodeNamespace.

pull/375/head
Matt Ward 12 years ago
parent
commit
30a5d66bb3
  1. 21
      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

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

@ -4,7 +4,6 @@
using System; using System;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
@ -12,7 +11,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
DTE dte; DTE dte;
protected CodeModelContext context; protected CodeModelContext context;
readonly ISymbolModel symbolModel;
IEntity entity; IEntity entity;
public CodeElement() public CodeElement()
@ -24,22 +22,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
this.context = context; 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) public CodeElement(CodeModelContext context, IEntity entity)
{ {
this.context = context; this.context = context;
this.entity = entity; this.entity = entity;
if (context.CurrentProject != null) { this.Language = context.CurrentProject.GetCodeModelLanguage();
this.Language = context.CurrentProject.GetCodeModelLanguage();
}
} }
internal static CodeElement CreateMember(CodeModelContext context, IMember member) internal static CodeElement CreateMember(CodeModelContext context, IMember member)
@ -63,11 +50,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public virtual string Name { public virtual string Name {
get { get { return entity.Name; }
if (symbolModel != null)
return symbolModel.Name;
return entity.Name;
}
} }
public virtual string Language { get; protected set; } 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
public class CodeElementsInNamespace : CodeElementsList<CodeElement> public class CodeElementsInNamespace : CodeElementsList<CodeElement>
{ {
CodeModelContext context; CodeModelContext context;
NamespaceName namespaceName;
INamespace ns; INamespace ns;
public CodeElementsInNamespace(CodeModelContext context) public CodeElementsInNamespace(CodeModelContext context)
@ -30,18 +29,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
GetCodeElements(); 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() void GetCodeElements()
{ {
foreach (INamespace childNamespace in ns.ChildNamespaces) { foreach (INamespace childNamespace in ns.ChildNamespaces) {
@ -60,12 +47,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
void AddType(IType type) void AddType(IType type)
{ {
ITypeDefinition typeDefinition = type.GetDefinition(); Add(CodeType.Create(context, type));
if (typeDefinition.Kind == TypeKind.Interface) {
} else {
Add(new CodeClass2(context, typeDefinition));
}
} }
} }
} }

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

@ -16,18 +16,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
: base(context) : base(context)
{ {
this.ns = ns; this.ns = ns;
//this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal; this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal;
//this.Language = context.CurrentProject.GetCodeModelLanguage(); this.Language = context.CurrentProject.GetCodeModelLanguage();
} }
public override global::EnvDTE.vsCMElement Kind { public override global::EnvDTE.vsCMElement Kind {
get { return global::EnvDTE.vsCMElement.vsCMElementNamespace; } get { return global::EnvDTE.vsCMElement.vsCMElementNamespace; }
} }
// internal NamespaceName NamespaceName {
// get { return namespaceName; }
// }
public string FullName { public string FullName {
get { return ns.FullName; } get { return ns.FullName; }
} }
@ -39,21 +35,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public virtual global::EnvDTE.CodeElements Members { public virtual global::EnvDTE.CodeElements Members {
get { return new CodeElementsInNamespace(context, ns); } 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 // Move code below into FileCodeModelNamespace

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

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

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

@ -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 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring; using ICSharpCode.SharpDevelop.Refactoring;
using NUnit.Framework; using PackageManagement.Tests.Helpers;
using Rhino.Mocks; using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE namespace PackageManagement.Tests.EnvDTE
@ -30,5 +29,39 @@ namespace PackageManagement.Tests.EnvDTE
CurrentProject = project 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 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework; using NUnit.Framework;
using PackageManagement.Tests.Helpers; using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE namespace PackageManagement.Tests.EnvDTE
{ {
[TestFixture] [TestFixture]
public class CodeModelTests : CodeModelTestBase 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() void CreateCodeModelWithCSharpProject()
{ {
CreateCodeModel(); CreateCodeModel();

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

@ -1,164 +1,195 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.PackageManagement.EnvDTE;
//using ICSharpCode.SharpDevelop.Dom; using NUnit.Framework;
//using NUnit.Framework; using PackageManagement.Tests.Helpers;
//using PackageManagement.Tests.Helpers;
// namespace PackageManagement.Tests.EnvDTE
//namespace PackageManagement.Tests.EnvDTE {
//{ [TestFixture]
// [TestFixture] public class CodeNamespaceTests : CodeModelTestBase
// public class CodeNamespaceTests {
// { CodeNamespace codeNamespace;
// CodeNamespace codeNamespace;
// ProjectContentHelper helper; void CreateCodeNamespace(string code, string rootNamespace)
// {
// void CreateCodeNamespace(string namespaceName) CreateCodeModel();
// { AddCodeFile("class.cs", code);
// codeNamespace = new CodeNamespace(helper.ProjectContent, namespaceName);
// } codeNamespace = codeModel
// .CodeElements
// void CreateProjectContent() .FindFirstCodeNamespaceOrDefault(n => n.Name == rootNamespace);
// { }
// helper = new ProjectContentHelper();
// } [Test]
// public void Members_NamespaceHasOneClass_ReturnsOneClass()
// void AddClassToProjectContent(string namespaceName, string className) {
// { string code =
// helper.AddClassToProjectContentAndCompletionEntries(namespaceName, className); "namespace Tests {\r\n" +
// } " public class MyClass {}\r\n" +
// "}";
// void AddUnknownCompletionEntryToNamespace(string namespaceName) CreateCodeNamespace(code, "Tests");
// {
// helper.AddUnknownCompletionEntryTypeToNamespace(namespaceName); global::EnvDTE.CodeElements members = codeNamespace.Members;
// } CodeClass2 codeClass = members.FirstCodeClass2OrDefault();
//
// [Test] Assert.AreEqual(1, members.Count);
// public void Members_NamespaceHasOneClass_ReturnsOneClass() Assert.AreEqual("Tests.MyClass", codeClass.FullName);
// { }
// CreateProjectContent();
// AddClassToProjectContent("Tests", "Tests.MyClass"); [Test]
// CreateCodeNamespace("Tests"); public void Members_NamespaceHasOneChildNamespace_ReturnsOneChildNamespace()
// {
// global::EnvDTE.CodeElements members = codeNamespace.Members; string code = "namespace First.Second {}";
// CodeClass2 codeClass = members.FirstCodeClass2OrDefault(); CreateCodeNamespace(code, "First");
//
// Assert.AreEqual(1, members.Count); global::EnvDTE.CodeElements members = codeNamespace.Members;
// Assert.AreEqual("Tests.MyClass", codeClass.FullName); CodeNamespace childNamespace = members.FirstCodeNamespaceOrDefault();
// }
// Assert.AreEqual("First", codeNamespace.Name);
// [Test] Assert.AreEqual(1, members.Count);
// public void Members_NamespaceHasOneChildNamespace_ReturnsOneChildNamespace() Assert.AreEqual("Second", childNamespace.Name);
// { Assert.AreEqual("First.Second", childNamespace.FullName);
// CreateProjectContent(); }
// helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
// CreateCodeNamespace("First"); [Test]
// public void InfoLocation_NamespaceHasNoClasses_ReturnsExternal()
// global::EnvDTE.CodeElements members = codeNamespace.Members; {
// CodeNamespace childNamespace = members.FirstCodeNamespaceOrDefault(); string code = "namespace Test {}";
// CreateCodeNamespace(code, "Test");
// Assert.AreEqual("First", codeNamespace.Name);
// Assert.AreEqual(1, members.Count); Assert.AreEqual(global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal, codeNamespace.InfoLocation);
// Assert.AreEqual("Second", childNamespace.Name); }
// Assert.AreEqual("First.Second", childNamespace.FullName);
// } [Test]
// public void Members_NamespaceHasOneChildNamespaceWithThreeNamespaceParts_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
// [Test] {
// public void InfoLocation_NamespaceHasNoClasses_ReturnsExternal() string code = "namespace First.Second.Third {}";
// { CreateCodeNamespace(code, "First");
// CreateProjectContent();
// CreateCodeNamespace("Test"); global::EnvDTE.CodeElements members = codeNamespace.Members;
// CodeNamespace secondNamespace = members.FirstCodeNamespaceOrDefault();
// Assert.AreEqual(global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal, codeNamespace.InfoLocation); CodeNamespace thirdNamespace = secondNamespace.Members.FirstCodeNamespaceOrDefault();
// }
// Assert.AreEqual("First", codeNamespace.Name);
// [Test] Assert.AreEqual(1, members.Count);
// public void Members_NamespaceHasOneChildNamespaceWithThreeNamespaceParts_ReturnsOneChildNamespaceWhichHasOneChildNamespace() Assert.AreEqual("Second", secondNamespace.Name);
// { Assert.AreEqual("First.Second", secondNamespace.FullName);
// CreateProjectContent(); Assert.AreEqual(1, secondNamespace.Members.Count);
// helper.AddNamespaceCompletionEntryInNamespace("First", "Second"); Assert.AreEqual("First.Second.Third", thirdNamespace.FullName);
// helper.AddNamespaceCompletionEntryInNamespace("First.Second", "Third"); Assert.AreEqual(0, thirdNamespace.Members.Count);
// helper.NoCompletionItemsInNamespace("First.Second.Third"); }
// CreateCodeNamespace("First");
// [Test]
// global::EnvDTE.CodeElements members = codeNamespace.Members; public void Members_ProjectHasTwoNamespacesWithCommonFirstAndSecondPartOfThreePartNamespace_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
// CodeNamespace secondNamespace = members.FirstCodeNamespaceOrDefault(); {
// CodeNamespace thirdNamespace = secondNamespace.Members.FirstCodeNamespaceOrDefault(); string code =
// "namespace First.Second {\r\n" +
// Assert.AreEqual("First", codeNamespace.Name); " namespace Third {}\r\n" +
// Assert.AreEqual(1, members.Count); " namespace Different {}\r\n" +
// Assert.AreEqual("Second", secondNamespace.Name); "}";
// Assert.AreEqual("First.Second", secondNamespace.FullName); CreateCodeNamespace(code, "First");
// Assert.AreEqual(1, secondNamespace.Members.Count);
// Assert.AreEqual("First.Second.Third", thirdNamespace.FullName); global::EnvDTE.CodeElements members = codeNamespace.Members;
// Assert.AreEqual(0, thirdNamespace.Members.Count); CodeNamespace secondNamespace = members.FirstOrDefault() as CodeNamespace;
// }
// Assert.AreEqual("First", codeNamespace.Name);
// [Test] Assert.AreEqual(1, members.Count);
// public void Members_ProjectHasTwoNamespacesWithCommonFirstAndSecondPartOfThreePartNamespace_ReturnsOneChildNamespaceWhichHasOneChildNamespace() Assert.AreEqual("Second", secondNamespace.Name);
// { Assert.AreEqual("First.Second", secondNamespace.FullName);
// CreateProjectContent(); Assert.AreEqual(2, secondNamespace.Members.Count);
// helper.AddNamespaceCompletionEntryInNamespace("First", "Second"); }
// helper.AddNamespaceCompletionEntriesInNamespace("First.Second", "Third", "Different");
// CreateCodeNamespace("First"); [Test]
// public void Language_CSharpProject_ReturnsCSharpModelLanguage()
// global::EnvDTE.CodeElements members = codeNamespace.Members; {
// CodeNamespace secondNamespace = members.FirstOrDefault() as CodeNamespace; string code = "namespace Test {}";
// CreateCodeNamespace(code, "Test");
// Assert.AreEqual("First", codeNamespace.Name);
// Assert.AreEqual(1, members.Count); string language = codeNamespace.Language;
// Assert.AreEqual("Second", secondNamespace.Name);
// Assert.AreEqual("First.Second", secondNamespace.FullName); Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language);
// Assert.AreEqual(2, secondNamespace.Members.Count); }
// }
// [Test]
// [Test] [Ignore("VB.NET not supported")]
// public void Members_NamespaceHasUnknownNamespaceEntryType_ReturnsNoItems() public void Language_VisualBasicProject_ReturnsVisualBasicModelLanguage()
// { {
// CreateProjectContent(); string code =
// AddUnknownCompletionEntryToNamespace("Tests"); "Namespace Test\r\n" +
// CreateCodeNamespace("Tests"); "End Namespace";
// CreateCodeNamespace(code, "Test");
// global::EnvDTE.CodeElements members = codeNamespace.Members;
// string language = codeNamespace.Language;
// Assert.AreEqual(0, members.Count);
// } Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language);
// }
// [Test]
// public void Language_CSharpProject_ReturnsCSharpModelLanguage() [Test]
// { public void Kind_NamespaceHasNoClasses_ReturnsNamespace()
// CreateProjectContent(); {
// helper.ProjectContentIsForCSharpProject(); string code = "namespace Test {}";
// CreateCodeNamespace(String.Empty); CreateCodeNamespace(code, "Test");
//
// string language = codeNamespace.Language; global::EnvDTE.vsCMElement kind = codeNamespace.Kind;
//
// Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp, language); Assert.AreEqual(global::EnvDTE.vsCMElement.vsCMElementNamespace, kind);
// } }
//
// [Test] [Test]
// public void Language_VisualBasicProject_ReturnsVisualBasicModelLanguage() public void Members_ParentChildAndGrandChildNamespaces_ReturnsOneCodeNamespaceWhichHasGrandChildNamespace()
// { {
// CreateProjectContent(); string code = "namespace Parent.Child.GrandChild {}";
// helper.ProjectContentIsForVisualBasicProject(); CreateCodeNamespace(code, "Parent");
// CreateCodeNamespace(String.Empty);
// CodeNamespace childNamespace = codeNamespace.Members.FirstCodeNamespaceOrDefault();
// string language = codeNamespace.Language; CodeNamespace grandChildNamespace = childNamespace.Members.FirstCodeNamespaceOrDefault();
//
// Assert.AreEqual(global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB, language); Assert.AreEqual("GrandChild", grandChildNamespace.Name);
// } }
//
// [Test] [Test]
// public void Kind_EmptyStringNamespace_ReturnsNamespace() public void Members_OneInterfaceCompletionEntryAndItemSelectedByName_ReturnsOneCodeInterface()
// { {
// CreateProjectContent(); string code =
// CreateCodeNamespace(String.Empty); "namespace Test {\r\n" +
// " public interface IClass {}\r\n" +
// global::EnvDTE.vsCMElement kind = codeNamespace.Kind; "}";
// CreateCodeNamespace(code, "Test");
// Assert.AreEqual(global::EnvDTE.vsCMElement.vsCMElementNamespace, kind);
// } 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
[TestFixture] [TestFixture]
public class ProjectItemTests : CodeModelTestBase public class ProjectItemTests : CodeModelTestBase
{ {
TestableDTEProject dteProject; TestableDTEProject testableDteProject;
ProjectItems projectItems; ProjectItems projectItems;
TestableProject msbuildProject;
FakeFileService fakeFileService; FakeFileService fakeFileService;
void CreateProjectItems(string fileName = @"d:\projects\MyProject\MyProject.csproj") void CreateProjectItems(string fileName = @"d:\projects\MyProject\MyProject.csproj")
{ {
dteProject = new TestableDTEProject(); testableDteProject = new TestableDTEProject();
msbuildProject = dteProject.TestableProject; msbuildProject = testableDteProject.TestableProject;
msbuildProject.FileName = new FileName(fileName); msbuildProject.FileName = new FileName(fileName);
projectItems = (ProjectItems)dteProject.ProjectItems; projectItems = (ProjectItems)testableDteProject.ProjectItems;
fakeFileService = dteProject.FakeFileService; fakeFileService = testableDteProject.FakeFileService;
} }
void OpenSavedFileInSharpDevelop(string fileName) void OpenSavedFileInSharpDevelop(string fileName)
@ -164,7 +163,7 @@ namespace PackageManagement.Tests.EnvDTE
fileItem.Delete(); 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] [Test]
@ -220,7 +219,7 @@ namespace PackageManagement.Tests.EnvDTE
global::EnvDTE.CodeElements codeElements = fileItem.FileCodeModel.CodeElements; global::EnvDTE.CodeElements codeElements = fileItem.FileCodeModel.CodeElements;
CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault(); CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();
Assert.AreEqual(dteProject.TestableProject, fakeFileService.ProjectPassedToGetCompilationUnit); Assert.AreEqual(testableDteProject.TestableProject, fakeFileService.ProjectPassedToGetCompilationUnit);
Assert.AreEqual(0, codeElements.Count); Assert.AreEqual(0, codeElements.Count);
} }
@ -336,7 +335,7 @@ namespace PackageManagement.Tests.EnvDTE
msbuildProject.AddFile("MainForm.cs"); msbuildProject.AddFile("MainForm.cs");
msbuildProject.AddDependentFile("MainForm.Designer.cs", "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[] { string[] expectedFiles = new string[] {
"MainForm.cs" "MainForm.cs"
@ -351,7 +350,7 @@ namespace PackageManagement.Tests.EnvDTE
msbuildProject.AddFile("MainForm.cs"); msbuildProject.AddFile("MainForm.cs");
msbuildProject.AddDependentFile("MainForm.Designer.cs", "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] [Test]
@ -360,7 +359,7 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems(); CreateProjectItems();
msbuildProject.AddFile("MainForm.cs"); msbuildProject.AddFile("MainForm.cs");
msbuildProject.AddDependentFile("MainForm.Designer.cs", "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; global::EnvDTE.ProjectItems mainFormProjectItems = mainFormItem.ProjectItems;
@ -393,7 +392,7 @@ namespace PackageManagement.Tests.EnvDTE
global::EnvDTE.ProjectItems collection = projectItem.Collection; global::EnvDTE.ProjectItems collection = projectItem.Collection;
Assert.AreEqual(dteProject.ProjectItems, collection); Assert.AreEqual(testableDteProject.ProjectItems, collection);
} }
[Test] [Test]
@ -402,7 +401,7 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems(); CreateProjectItems();
msbuildProject.FileName = new FileName(@"d:\projects\MyProject\MyProject.csproj"); msbuildProject.FileName = new FileName(@"d:\projects\MyProject\MyProject.csproj");
msbuildProject.AddFile(@"src\program.cs"); 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.ProjectItem fileProjectItem = srcDirectoryItem.ProjectItems.Item("program.cs");
global::EnvDTE.ProjectItems collection = fileProjectItem.Collection; global::EnvDTE.ProjectItems collection = fileProjectItem.Collection;

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

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

Loading…
Cancel
Save