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

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

@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
@ -15,5 +17,23 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -15,5 +17,23 @@ namespace ICSharpCode.PackageManagement.EnvDTE
.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 @@ -41,7 +41,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateClass()
{
codeClass = new CodeClass2(helper.ProjectContentHelper.FakeProjectContent, helper.Class);
codeClass = new CodeClass2(helper.ProjectContentHelper.ProjectContent, helper.Class);
}
void AddInterfaceToProjectContent(string fullName)

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -33,7 +33,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -33,7 +33,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeTypeRef2()
{
typeRef = new CodeTypeRef2(classHelper.ProjectContentHelper.FakeProjectContent, parent, helper.ReturnType);
typeRef = new CodeTypeRef2(classHelper.ProjectContentHelper.ProjectContent, parent, helper.ReturnType);
}
void ReturnTypeUsesDifferentProjectContent()
@ -48,6 +48,16 @@ namespace PackageManagement.Tests.EnvDTE @@ -48,6 +48,16 @@ namespace PackageManagement.Tests.EnvDTE
classHelper.ProjectContentHelper.SetProjectForProjectContent(project);
}
void ProjectContentIsForVisualBasicProject()
{
classHelper.ProjectContentHelper.ProjectContentIsForVisualBasicProject();
}
void ProjectContentIsForCSharpProject()
{
classHelper.ProjectContentHelper.ProjectContentIsForCSharpProject();
}
[Test]
public void CodeType_ReturnTypeIsSystemString_ReturnsCodeClass2ForSystemStringType()
{
@ -124,5 +134,58 @@ namespace PackageManagement.Tests.EnvDTE @@ -124,5 +134,58 @@ namespace PackageManagement.Tests.EnvDTE
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 @@ -27,7 +27,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateCodeType()
{
codeType = new CodeType(helper.ProjectContentHelper.FakeProjectContent, helper.Class);
codeType = new CodeType(helper.ProjectContentHelper.ProjectContent, helper.Class);
}
void AddAttributeToClass(string name)

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

@ -27,7 +27,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -27,7 +27,7 @@ namespace PackageManagement.Tests.EnvDTE
helper = new ProjectContentHelper();
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>();
project = new Project(msbuildProject, fakeProjectService, fakeFileService);

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

@ -19,7 +19,7 @@ namespace PackageManagement.Tests.Helpers @@ -19,7 +19,7 @@ namespace PackageManagement.Tests.Helpers
public void CreateField(string fullyQualifiedName)
{
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);
}

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

@ -18,7 +18,7 @@ namespace PackageManagement.Tests.Helpers @@ -18,7 +18,7 @@ namespace PackageManagement.Tests.Helpers
public void CreateMethod(string fullyQualifiedName)
{
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);
}

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

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

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

@ -26,7 +26,7 @@ namespace PackageManagement.Tests.Helpers @@ -26,7 +26,7 @@ namespace PackageManagement.Tests.Helpers
Property.Stub(p => p.FullyQualifiedName).Return(fullyQualifiedName);
Property.Stub(p => p.Attributes).Return(attributes);
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)

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

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

Loading…
Cancel
Save