Browse Source

Implement EnvDTE.CodeTypeRef.AsString.

pull/28/head
Matt Ward 14 years ago
parent
commit
843dbf4982
  1. 9
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeTypeRef.cs
  2. 20
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/IReturnTypeExtensions.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs
  4. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeDelegateTests.cs
  5. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeElementsInNamespaceTests.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeInterfaceTests.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeModelTests.cs
  8. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeNamespaceTests.cs
  9. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeStructTests.cs
  10. 65
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeTypeRef2Tests.cs
  11. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeTypeTests.cs
  12. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  13. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FieldHelper.cs
  14. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodHelper.cs
  15. 24
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectContentHelper.cs
  16. 2
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/PropertyHelper.cs
  17. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ReturnTypeHelper.cs

9
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeTypeRef.cs

@ -28,6 +28,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE
get { return ReturnType.GetFullName(); } get { return ReturnType.GetFullName(); }
} }
public virtual string AsString {
get {
if (projectContent.Language == LanguageProperties.VBNet) {
return ReturnType.AsVisualBasicString();
}
return ReturnType.AsCSharpString();
}
}
public virtual CodeElement Parent { public virtual CodeElement Parent {
get { return parent; } get { return parent; }
} }

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

@ -2,6 +2,8 @@
// 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 ICSharpCode.NRefactory.Ast;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
@ -15,5 +17,23 @@ namespace ICSharpCode.PackageManagement.EnvDTE
.Replace('{', '<') .Replace('{', '<')
.Replace('}', '>'); .Replace('}', '>');
} }
public static string AsCSharpString(this IReturnType returnType)
{
string name = String.Empty;
if (TypeReference.PrimitiveTypesCSharpReverse.TryGetValue(returnType.FullyQualifiedName, out name)) {
return name;
}
return returnType.GetFullName();
}
public static string AsVisualBasicString(this IReturnType returnType)
{
string name = String.Empty;
if (TypeReference.PrimitiveTypesVBReverse.TryGetValue(returnType.FullyQualifiedName, out name)) {
return name;
}
return returnType.GetFullName();
}
} }
} }

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs

@ -41,7 +41,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateClass() void CreateClass()
{ {
codeClass = new CodeClass2(helper.ProjectContentHelper.FakeProjectContent, helper.Class); codeClass = new CodeClass2(helper.ProjectContentHelper.ProjectContent, helper.Class);
} }
void AddInterfaceToProjectContent(string fullName) void AddInterfaceToProjectContent(string fullName)

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeDelegateTests.cs

@ -36,7 +36,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateDelegate() void CreateDelegate()
{ {
codeDelegate = new CodeDelegate(helper.FakeProjectContent, fakeDelegate); codeDelegate = new CodeDelegate(helper.ProjectContent, fakeDelegate);
} }
[Test] [Test]

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

@ -24,7 +24,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeElements(string namespaceName) void CreateCodeElements(string namespaceName)
{ {
codeElements = new CodeElementsInNamespace(helper.FakeProjectContent, namespaceName); codeElements = new CodeElementsInNamespace(helper.ProjectContent, namespaceName);
} }
[Test] [Test]

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeInterfaceTests.cs

@ -24,7 +24,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateInterface() void CreateInterface()
{ {
IClass c = helper.AddInterfaceToProjectContent("MyInterface"); IClass c = helper.AddInterfaceToProjectContent("MyInterface");
codeInterface = new CodeInterface(helper.FakeProjectContent, c); codeInterface = new CodeInterface(helper.ProjectContent, c);
} }
[Test] [Test]

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

@ -24,7 +24,7 @@ namespace PackageManagement.Tests.EnvDTE
helper = new ProjectContentHelper(); helper = new ProjectContentHelper();
msbuildProject = ProjectHelper.CreateTestProject(); msbuildProject = ProjectHelper.CreateTestProject();
helper.SetProjectForProjectContent(msbuildProject); helper.SetProjectForProjectContent(msbuildProject);
codeModel = new CodeModel(helper.FakeProjectContent); codeModel = new CodeModel(helper.ProjectContent);
} }
void AddClassToProjectContent(string className) void AddClassToProjectContent(string className)

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

@ -17,7 +17,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeNamespace(string namespaceName) void CreateCodeNamespace(string namespaceName)
{ {
codeNamespace = new CodeNamespace(helper.FakeProjectContent, namespaceName); codeNamespace = new CodeNamespace(helper.ProjectContent, namespaceName);
} }
void CreateProjectContent() void CreateProjectContent()

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeStructTests.cs

@ -36,7 +36,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateStruct() void CreateStruct()
{ {
codeStruct = new CodeStruct(helper.FakeProjectContent, fakeStruct); codeStruct = new CodeStruct(helper.ProjectContent, fakeStruct);
} }
[Test] [Test]

65
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeTypeRef2Tests.cs

@ -33,7 +33,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeTypeRef2() void CreateCodeTypeRef2()
{ {
typeRef = new CodeTypeRef2(classHelper.ProjectContentHelper.FakeProjectContent, parent, helper.ReturnType); typeRef = new CodeTypeRef2(classHelper.ProjectContentHelper.ProjectContent, parent, helper.ReturnType);
} }
void ReturnTypeUsesDifferentProjectContent() void ReturnTypeUsesDifferentProjectContent()
@ -48,6 +48,16 @@ namespace PackageManagement.Tests.EnvDTE
classHelper.ProjectContentHelper.SetProjectForProjectContent(project); classHelper.ProjectContentHelper.SetProjectForProjectContent(project);
} }
void ProjectContentIsForVisualBasicProject()
{
classHelper.ProjectContentHelper.ProjectContentIsForVisualBasicProject();
}
void ProjectContentIsForCSharpProject()
{
classHelper.ProjectContentHelper.ProjectContentIsForCSharpProject();
}
[Test] [Test]
public void CodeType_ReturnTypeIsSystemString_ReturnsCodeClass2ForSystemStringType() public void CodeType_ReturnTypeIsSystemString_ReturnsCodeClass2ForSystemStringType()
{ {
@ -124,5 +134,58 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual("System.Nullable<System.String>", name); Assert.AreEqual("System.Nullable<System.String>", name);
} }
[Test]
public void AsString_ReturnTypeIsSystemStringInCSharpProject_ReturnsString()
{
helper.CreateReturnType("System.String");
ProjectContentIsForCSharpProject();
AddUnderlyingClassToReturnType("System.String");
CreateCodeTypeRef2();
string name = typeRef.AsString;
Assert.AreEqual("string", name);
}
[Test]
public void AsString_ReturnTypeIsSystemInt32InCSharpProject_ReturnsInt()
{
helper.CreateReturnType("System.Int32");
AddUnderlyingClassToReturnType("System.Int32");
ProjectContentIsForCSharpProject();
CreateCodeTypeRef2();
string name = typeRef.AsString;
Assert.AreEqual("int", name);
}
[Test]
public void AsString_ReturnTypeIsSystemInt32InVisualBasicProject_ReturnsInteger()
{
helper.CreateReturnType("System.Int32");
AddUnderlyingClassToReturnType("System.Int32");
ProjectContentIsForVisualBasicProject();
CreateCodeTypeRef2();
string name = typeRef.AsString;
Assert.AreEqual("Integer", name);
}
[Test]
public void AsString_ReturnTypeIsCustomType_ReturnsFullTypeName()
{
helper.CreateReturnType("Test.MyClass");
AddUnderlyingClassToReturnType("Test.MyClass");
ProjectContentIsForCSharpProject();
helper.AddDotNetName("Test.MyClass");
CreateCodeTypeRef2();
string name = typeRef.AsString;
Assert.AreEqual("Test.MyClass", name);
}
} }
} }

2
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeTypeTests.cs

@ -27,7 +27,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeType() void CreateCodeType()
{ {
codeType = new CodeType(helper.ProjectContentHelper.FakeProjectContent, helper.Class); codeType = new CodeType(helper.ProjectContentHelper.ProjectContent, helper.Class);
} }
void AddAttributeToClass(string name) void AddAttributeToClass(string name)

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

@ -27,7 +27,7 @@ namespace PackageManagement.Tests.EnvDTE
helper = new ProjectContentHelper(); helper = new ProjectContentHelper();
fakeProjectService = MockRepository.GenerateStub<IPackageManagementProjectService>(); fakeProjectService = MockRepository.GenerateStub<IPackageManagementProjectService>();
fakeProjectService.Stub(service => service.GetProjectContent(msbuildProject)).Return(helper.FakeProjectContent); fakeProjectService.Stub(service => service.GetProjectContent(msbuildProject)).Return(helper.ProjectContent);
fakeFileService = MockRepository.GenerateStub<IPackageManagementFileService>(); fakeFileService = MockRepository.GenerateStub<IPackageManagementFileService>();
project = new Project(msbuildProject, fakeProjectService, fakeFileService); project = new Project(msbuildProject, fakeProjectService, fakeFileService);

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FieldHelper.cs

@ -19,7 +19,7 @@ namespace PackageManagement.Tests.Helpers
public void CreateField(string fullyQualifiedName) public void CreateField(string fullyQualifiedName)
{ {
Field = MockRepository.GenerateMock<IField, IEntity>(); Field = MockRepository.GenerateMock<IField, IEntity>();
Field.Stub(f => f.ProjectContent).Return(ProjectContentHelper.FakeProjectContent); Field.Stub(f => f.ProjectContent).Return(ProjectContentHelper.ProjectContent);
Field.Stub(f => f.FullyQualifiedName).Return(fullyQualifiedName); Field.Stub(f => f.FullyQualifiedName).Return(fullyQualifiedName);
} }

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodHelper.cs

@ -18,7 +18,7 @@ namespace PackageManagement.Tests.Helpers
public void CreateMethod(string fullyQualifiedName) public void CreateMethod(string fullyQualifiedName)
{ {
Method = MockRepository.GenerateMock<IMethod, IEntity>(); Method = MockRepository.GenerateMock<IMethod, IEntity>();
Method.Stub(m => m.ProjectContent).Return(ProjectContentHelper.FakeProjectContent); Method.Stub(m => m.ProjectContent).Return(ProjectContentHelper.ProjectContent);
Method.Stub(m => m.FullyQualifiedName).Return(fullyQualifiedName); Method.Stub(m => m.FullyQualifiedName).Return(fullyQualifiedName);
} }

24
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectContentHelper.cs

@ -13,18 +13,18 @@ namespace PackageManagement.Tests.Helpers
{ {
public class ProjectContentHelper public class ProjectContentHelper
{ {
public IProjectContent FakeProjectContent; public IProjectContent ProjectContent;
public List<string> NamespaceNames = new List<string>(); public List<string> NamespaceNames = new List<string>();
public ProjectContentHelper() public ProjectContentHelper()
{ {
FakeProjectContent = MockRepository.GenerateStub<IProjectContent>(); ProjectContent = MockRepository.GenerateStub<IProjectContent>();
FakeProjectContent.Stub(pc => pc.NamespaceNames).Return(NamespaceNames); ProjectContent.Stub(pc => pc.NamespaceNames).Return(NamespaceNames);
} }
public void SetProjectForProjectContent(IProject project) public void SetProjectForProjectContent(IProject project)
{ {
FakeProjectContent.Stub(pc => pc.Project).Return(project); ProjectContent.Stub(pc => pc.Project).Return(project);
} }
public IClass AddClassToProjectContentAndCompletionEntries(string namespaceName, string className) public IClass AddClassToProjectContentAndCompletionEntries(string namespaceName, string className)
@ -39,7 +39,7 @@ namespace PackageManagement.Tests.Helpers
public void AddCompletionEntriesToNamespace(string namespaceName, List<ICompletionEntry> namespaceContents) public void AddCompletionEntriesToNamespace(string namespaceName, List<ICompletionEntry> namespaceContents)
{ {
FakeProjectContent.Stub(pc => pc.GetNamespaceContents(namespaceName)).Return(namespaceContents); ProjectContent.Stub(pc => pc.GetNamespaceContents(namespaceName)).Return(namespaceContents);
} }
public void NoCompletionItemsInNamespace(string namespaceName) public void NoCompletionItemsInNamespace(string namespaceName)
@ -49,7 +49,7 @@ namespace PackageManagement.Tests.Helpers
public IClass AddClassToProjectContent(string className) public IClass AddClassToProjectContent(string className)
{ {
IClass fakeClass = AddClassToProjectContentCommon(FakeProjectContent, className); IClass fakeClass = AddClassToProjectContentCommon(ProjectContent, className);
SetClassType(fakeClass, ClassType.Class); SetClassType(fakeClass, ClassType.Class);
return fakeClass; return fakeClass;
} }
@ -68,7 +68,7 @@ namespace PackageManagement.Tests.Helpers
IClass AddClassToProjectContentCommon(IProjectContent projectContent, string className) IClass AddClassToProjectContentCommon(IProjectContent projectContent, string className)
{ {
IClass fakeClass = MockRepository.GenerateMock<IClass, IEntity>(); IClass fakeClass = MockRepository.GenerateMock<IClass, IEntity>();
FakeProjectContent.Stub(pc => pc.GetClass(className, 0)).Return(fakeClass); ProjectContent.Stub(pc => pc.GetClass(className, 0)).Return(fakeClass);
fakeClass.Stub(c => c.FullyQualifiedName).Return(className); fakeClass.Stub(c => c.FullyQualifiedName).Return(className);
fakeClass.Stub(c => c.ProjectContent).Return(projectContent); fakeClass.Stub(c => c.ProjectContent).Return(projectContent);
return fakeClass; return fakeClass;
@ -76,7 +76,7 @@ namespace PackageManagement.Tests.Helpers
public IClass AddInterfaceToProjectContent(string interfaceName) public IClass AddInterfaceToProjectContent(string interfaceName)
{ {
return AddInterfaceToProjectContent(FakeProjectContent, interfaceName); return AddInterfaceToProjectContent(ProjectContent, interfaceName);
} }
public IClass AddInterfaceToDifferentProjectContent(string interfaceName) public IClass AddInterfaceToDifferentProjectContent(string interfaceName)
@ -131,7 +131,7 @@ namespace PackageManagement.Tests.Helpers
public void AddClassToCompletionEntries(string namespaceName, string className) public void AddClassToCompletionEntries(string namespaceName, string className)
{ {
AddClassToCompletionEntries(FakeProjectContent, namespaceName, className); AddClassToCompletionEntries(ProjectContent, namespaceName, className);
} }
void AddClassToCompletionEntries(IProjectContent projectContent, string namespaceName, string className) void AddClassToCompletionEntries(IProjectContent projectContent, string namespaceName, string className)
@ -147,6 +147,7 @@ namespace PackageManagement.Tests.Helpers
{ {
TestableProject project = ProjectHelper.CreateTestProject(); TestableProject project = ProjectHelper.CreateTestProject();
project.FileName = @"c:\projects\myproject.csproj"; project.FileName = @"c:\projects\myproject.csproj";
ProjectContent.Stub(pc => pc.Language).Return(LanguageProperties.CSharp);
SetProjectForProjectContent(project); SetProjectForProjectContent(project);
} }
@ -154,6 +155,7 @@ namespace PackageManagement.Tests.Helpers
{ {
TestableProject project = ProjectHelper.CreateTestProject(); TestableProject project = ProjectHelper.CreateTestProject();
project.FileName = @"c:\projects\myproject.vbproj"; project.FileName = @"c:\projects\myproject.vbproj";
ProjectContent.Stub(pc => pc.Language).Return(LanguageProperties.VBNet);
SetProjectForProjectContent(project); SetProjectForProjectContent(project);
} }
@ -180,7 +182,7 @@ namespace PackageManagement.Tests.Helpers
public IClass AddStructToProjectContent(string name) public IClass AddStructToProjectContent(string name)
{ {
IClass fakeStruct = AddClassToProjectContentCommon(FakeProjectContent, name); IClass fakeStruct = AddClassToProjectContentCommon(ProjectContent, name);
SetClassType(fakeStruct, ClassType.Struct); SetClassType(fakeStruct, ClassType.Struct);
return fakeStruct; return fakeStruct;
} }
@ -201,7 +203,7 @@ namespace PackageManagement.Tests.Helpers
public IClass AddDelegateToProjectContent(string name) public IClass AddDelegateToProjectContent(string name)
{ {
IClass fakeDelegate = AddClassToProjectContentCommon(FakeProjectContent, name); IClass fakeDelegate = AddClassToProjectContentCommon(ProjectContent, name);
SetClassType(fakeDelegate, ClassType.Delegate); SetClassType(fakeDelegate, ClassType.Delegate);
return fakeDelegate; return fakeDelegate;
} }

2
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/PropertyHelper.cs

@ -26,7 +26,7 @@ namespace PackageManagement.Tests.Helpers
Property.Stub(p => p.FullyQualifiedName).Return(fullyQualifiedName); Property.Stub(p => p.FullyQualifiedName).Return(fullyQualifiedName);
Property.Stub(p => p.Attributes).Return(attributes); Property.Stub(p => p.Attributes).Return(attributes);
Property.Stub(p => p.Parameters).Return(parameters); Property.Stub(p => p.Parameters).Return(parameters);
Property.Stub(p => p.ProjectContent).Return(ProjectContentHelper.FakeProjectContent); Property.Stub(p => p.ProjectContent).Return(ProjectContentHelper.ProjectContent);
} }
public void AddAttribute(string fullName, string shortName) public void AddAttribute(string fullName, string shortName)

3
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ReturnTypeHelper.cs

@ -10,6 +10,7 @@ namespace PackageManagement.Tests.Helpers
public class ReturnTypeHelper public class ReturnTypeHelper
{ {
public IReturnType ReturnType; public IReturnType ReturnType;
public ProjectContentHelper ProjectContentHelper = new ProjectContentHelper();
public void CreateReturnType(string fullyQualifiedName) public void CreateReturnType(string fullyQualifiedName)
{ {
@ -31,5 +32,7 @@ namespace PackageManagement.Tests.Helpers
{ {
ReturnType.Stub(t => t.GetUnderlyingClass()).Return(c); ReturnType.Stub(t => t.GetUnderlyingClass()).Return(c);
} }
} }
} }

Loading…
Cancel
Save