Browse Source

Implemented EnvDTE.CodeFunction2.IsGeneric

The T4MVC template ignores controller methods that are generic.
pull/28/head
Matt Ward 13 years ago
parent
commit
8bab34c5fb
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction2.cs
  2. 9
      src/AddIns/Misc/PackageManagement/Project/Src/IMethodOrPropertyExtensions.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  4. 32
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunction2Tests.cs
  5. 18
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodHelper.cs
  6. 32
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TypeParameterHelper.cs

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction2.cs

@ -14,7 +14,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -14,7 +14,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public virtual bool IsGeneric {
get { throw new NotImplementedException(); }
get { return Method.HasTypeParameters(); }
}
public virtual vsCMOverrideKind OverrideKind {

9
src/AddIns/Misc/PackageManagement/Project/Src/IMethodOrPropertyExtensions.cs

@ -34,5 +34,14 @@ namespace ICSharpCode.PackageManagement @@ -34,5 +34,14 @@ namespace ICSharpCode.PackageManagement
}
return false;
}
public static bool HasTypeParameters(this IMethodOrProperty methodOrProperty)
{
var method = methodOrProperty as IMethod;
if ((method != null) && (method.TypeParameters != null)) {
return method.TypeParameters.Count > 0;
}
return false;
}
}
}

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

@ -122,6 +122,7 @@ @@ -122,6 +122,7 @@
<Compile Include="Src\Helpers\TestablePackageFromRepository.cs" />
<Compile Include="Src\Helpers\TestableProjectBehaviour.cs" />
<Compile Include="Src\Helpers\TestableSelectedProjectsForUpdatedPackages.cs" />
<Compile Include="Src\Helpers\TypeParameterHelper.cs" />
<Compile Include="Src\Helpers\UsingHelper.cs" />
<Compile Include="Src\Helpers\UsingScopeHelper.cs" />
<Compile Include="Src\InstalledPackageViewModelTests.cs" />

32
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunction2Tests.cs

@ -95,5 +95,37 @@ namespace PackageManagement.Tests.EnvDTE @@ -95,5 +95,37 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(vsCMOverrideKind.vsCMOverrideKindNew, kind);
}
[Test]
public void IsGeneric_MethodHasTypeParameter_ReturnsTrue()
{
CreatePublicFunction("MyClass.MyFunction");
helper.AddTypeParameter("TResult");
bool generic = codeFunction.IsGeneric;
Assert.IsTrue(generic);
}
[Test]
public void IsGeneric_MethodHasTypeParameters_ReturnsFalse()
{
CreatePublicFunction("MyClass.MyFunction");
helper.NoTypeParameters();
bool generic = codeFunction.IsGeneric;
Assert.IsFalse(generic);
}
[Test]
public void IsGeneric_MethodTypeParametersIsNull_ReturnsFalse()
{
CreatePublicFunction("MyClass.MyFunction");
bool generic = codeFunction.IsGeneric;
Assert.IsFalse(generic);
}
}
}

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

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop.Dom;
using Rhino.Mocks;
@ -160,5 +161,22 @@ namespace PackageManagement.Tests.Helpers @@ -160,5 +161,22 @@ namespace PackageManagement.Tests.Helpers
{
Method.Stub(m => m.IsOverridable).Return(true);
}
public void AddTypeParameter(string name)
{
var typeParameterHelper = new TypeParameterHelper();
typeParameterHelper.SetName(name);
AddTypeParameters(typeParameterHelper.TypeParameterToList());
}
public void AddTypeParameters(List<ITypeParameter> typeParameters)
{
Method.Stub(m => m.TypeParameters).Return(typeParameters);
}
public void NoTypeParameters()
{
AddTypeParameters(new List<ITypeParameter>());
}
}
}

32
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TypeParameterHelper.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// 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 ICSharpCode.SharpDevelop.Dom;
using Rhino.Mocks;
namespace PackageManagement.Tests.Helpers
{
public class TypeParameterHelper
{
public ITypeParameter TypeParameter;
public TypeParameterHelper()
{
TypeParameter = MockRepository.GenerateMock<ITypeParameter>();
}
public void SetName(string name)
{
TypeParameter.Stub(tp => tp.Name);
}
public List<ITypeParameter> TypeParameterToList()
{
var parameters = new List<ITypeParameter>();
parameters.Add(TypeParameter);
return parameters;
}
}
}
Loading…
Cancel
Save