Browse Source

Implement EnvDTE.CodeFunction.Parameters.

pull/28/head
Matt Ward 13 years ago
parent
commit
f04faadae8
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
  3. 14
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs
  4. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
  5. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  6. 26
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeProperty2Tests.cs
  8. 3
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodHelper.cs
  9. 22
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs
  10. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/PropertyHelper.cs

2
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -98,13 +98,13 @@ @@ -98,13 +98,13 @@
<Compile Include="Src\EnvDTE\CodeGetterOrSetterFunction.cs" />
<Compile Include="Src\EnvDTE\CodeImport.cs" />
<Compile Include="Src\EnvDTE\CodeInterface.cs" />
<Compile Include="Src\EnvDTE\CodeMethodOrPropertyParameters.cs" />
<Compile Include="Src\EnvDTE\CodeModel.cs" />
<Compile Include="Src\EnvDTE\CodeModelLanguageConstants.cs" />
<Compile Include="Src\EnvDTE\CodeNamespace.cs" />
<Compile Include="Src\EnvDTE\CodeParameter.cs" />
<Compile Include="Src\EnvDTE\CodeProperty.cs" />
<Compile Include="Src\EnvDTE\CodeProperty2.cs" />
<Compile Include="Src\EnvDTE\CodePropertyParameters.cs" />
<Compile Include="Src\EnvDTE\CodeSetterFunction.cs" />
<Compile Include="Src\EnvDTE\CodeStruct.cs" />
<Compile Include="Src\EnvDTE\CodeType.cs" />

4
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs

@ -50,5 +50,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -50,5 +50,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
return new TextPoint(method.GetEndPosition(), documentLoader);
}
public virtual CodeElements Parameters {
get { return new CodeParameters(method.Parameters); }
}
}
}

14
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodePropertyParameters.cs → src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs

@ -2,23 +2,21 @@ @@ -2,23 +2,21 @@
// 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;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodePropertyParameters : CodeElementsList
public class CodeParameters : CodeElementsList
{
IProperty property;
public CodePropertyParameters(IProperty property)
public CodeParameters(IEnumerable<IParameter> parameters)
{
this.property = property;
AddParameters();
AddParameters(parameters);
}
void AddParameters()
void AddParameters(IEnumerable<IParameter> parameters)
{
foreach (IParameter parameter in property.Parameters) {
foreach (IParameter parameter in parameters) {
AddParameters(parameter);
}
}

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

@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public CodeElements Parameters {
get { return new CodePropertyParameters(Property); }
get { return new CodeParameters(Property.Parameters); }
}
}
}

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

@ -108,6 +108,7 @@ @@ -108,6 +108,7 @@
<Compile Include="Src\Helpers\FakeUpdatePackageActions.cs" />
<Compile Include="Src\Helpers\FakeUpdatePackageActionsFactory.cs" />
<Compile Include="Src\Helpers\MethodHelper.cs" />
<Compile Include="Src\Helpers\MethodOrPropertyHelper.cs" />
<Compile Include="Src\Helpers\ProjectContentHelper.cs" />
<Compile Include="Src\Helpers\PropertiesHelper.cs" />
<Compile Include="Src\Helpers\PropertyHelper.cs" />

26
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs

@ -49,6 +49,11 @@ namespace PackageManagement.Tests.EnvDTE @@ -49,6 +49,11 @@ namespace PackageManagement.Tests.EnvDTE
helper.AddDeclaringType(name);
}
void AddParameterToMethod(string name)
{
helper.AddParameter(name);
}
[Test]
public void Access_PublicFunction_ReturnsPublic()
{
@ -144,5 +149,26 @@ namespace PackageManagement.Tests.EnvDTE @@ -144,5 +149,26 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(1, point.Line);
Assert.AreEqual(10, point.LineCharOffset);
}
[Test]
public void Parameters_MethodHasNoParameters_ReturnsEmptyListOfItems()
{
CreatePublicFunction("MyClass.MyMethod");
CodeElements parameters = codeFunction.Parameters;
Assert.AreEqual(0, parameters.Count);
}
[Test]
public void Parameters_MethodHasOneParameter_ReturnsOneCodeParameter()
{
AddParameterToMethod("test");
CreatePublicFunction("MyClass.MyMethod");
CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault();
Assert.AreEqual("test", parameter.Name);
}
}
}

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

@ -125,7 +125,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -125,7 +125,7 @@ namespace PackageManagement.Tests.EnvDTE
public void Parameters_PropertyIsIndexerWithOneParameter_ReturnsOneParameter()
{
helper.CreatePublicProperty("MyProperty");
helper.AddParameterToProperty("item");
helper.AddParameter("item");
CreateCodeProperty2();
CodeElements parameters = property.Parameters;

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

@ -7,7 +7,7 @@ using Rhino.Mocks; @@ -7,7 +7,7 @@ using Rhino.Mocks;
namespace PackageManagement.Tests.Helpers
{
public class MethodHelper
public class MethodHelper : MethodOrPropertyHelper
{
public IMethod Method;
public ProjectContentHelper ProjectContentHelper = new ProjectContentHelper();
@ -20,6 +20,7 @@ namespace PackageManagement.Tests.Helpers @@ -20,6 +20,7 @@ namespace PackageManagement.Tests.Helpers
Method = MockRepository.GenerateMock<IMethod, IEntity>();
Method.Stub(m => m.ProjectContent).Return(ProjectContentHelper.ProjectContent);
Method.Stub(m => m.FullyQualifiedName).Return(fullyQualifiedName);
Method.Stub(m => m.Parameters).Return(parameters);
}
public void CreatePublicMethod(string name)

22
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
// 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 MethodOrPropertyHelper
{
public List<IParameter> parameters = new List<IParameter>();
public void AddParameter(string name)
{
IParameter parameter = MockRepository.GenerateStub<IParameter>();
parameter.Stub(p => p.Name).Return(name);
parameters.Add(parameter);
}
}
}

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

@ -8,14 +8,13 @@ using Rhino.Mocks; @@ -8,14 +8,13 @@ using Rhino.Mocks;
namespace PackageManagement.Tests.Helpers
{
public class PropertyHelper
public class PropertyHelper : MethodOrPropertyHelper
{
public IProperty Property;
public ProjectContentHelper ProjectContentHelper = new ProjectContentHelper();
public ReturnTypeHelper ReturnTypeHelper = new ReturnTypeHelper();
List<IAttribute> attributes = new List<IAttribute>();
List<IParameter> parameters = new List<IParameter>();
/// <summary>
/// Property name should include class prefix (e.g. "Class1.MyProperty")
@ -81,13 +80,6 @@ namespace PackageManagement.Tests.Helpers @@ -81,13 +80,6 @@ namespace PackageManagement.Tests.Helpers
HasSetter = true;
}
public void AddParameterToProperty(string name)
{
IParameter parameter = MockRepository.GenerateStub<IParameter>();
parameter.Stub(p => p.Name).Return(name);
parameters.Add(parameter);
}
public void GetterModifierIsPrivate()
{
GetterModifier = ModifierEnum.Private;

Loading…
Cancel
Save