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 @@
<Compile Include="Src\EnvDTE\CodeGetterOrSetterFunction.cs" /> <Compile Include="Src\EnvDTE\CodeGetterOrSetterFunction.cs" />
<Compile Include="Src\EnvDTE\CodeImport.cs" /> <Compile Include="Src\EnvDTE\CodeImport.cs" />
<Compile Include="Src\EnvDTE\CodeInterface.cs" /> <Compile Include="Src\EnvDTE\CodeInterface.cs" />
<Compile Include="Src\EnvDTE\CodeMethodOrPropertyParameters.cs" />
<Compile Include="Src\EnvDTE\CodeModel.cs" /> <Compile Include="Src\EnvDTE\CodeModel.cs" />
<Compile Include="Src\EnvDTE\CodeModelLanguageConstants.cs" /> <Compile Include="Src\EnvDTE\CodeModelLanguageConstants.cs" />
<Compile Include="Src\EnvDTE\CodeNamespace.cs" /> <Compile Include="Src\EnvDTE\CodeNamespace.cs" />
<Compile Include="Src\EnvDTE\CodeParameter.cs" /> <Compile Include="Src\EnvDTE\CodeParameter.cs" />
<Compile Include="Src\EnvDTE\CodeProperty.cs" /> <Compile Include="Src\EnvDTE\CodeProperty.cs" />
<Compile Include="Src\EnvDTE\CodeProperty2.cs" /> <Compile Include="Src\EnvDTE\CodeProperty2.cs" />
<Compile Include="Src\EnvDTE\CodePropertyParameters.cs" />
<Compile Include="Src\EnvDTE\CodeSetterFunction.cs" /> <Compile Include="Src\EnvDTE\CodeSetterFunction.cs" />
<Compile Include="Src\EnvDTE\CodeStruct.cs" /> <Compile Include="Src\EnvDTE\CodeStruct.cs" />
<Compile Include="Src\EnvDTE\CodeType.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
{ {
return new TextPoint(method.GetEndPosition(), documentLoader); 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 @@
// 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.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class CodePropertyParameters : CodeElementsList public class CodeParameters : CodeElementsList
{ {
IProperty property; public CodeParameters(IEnumerable<IParameter> parameters)
public CodePropertyParameters(IProperty property)
{ {
this.property = property; AddParameters(parameters);
AddParameters();
} }
void AddParameters() void AddParameters(IEnumerable<IParameter> parameters)
{ {
foreach (IParameter parameter in property.Parameters) { foreach (IParameter parameter in parameters) {
AddParameters(parameter); AddParameters(parameter);
} }
} }

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

@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public CodeElements Parameters { 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 @@
<Compile Include="Src\Helpers\FakeUpdatePackageActions.cs" /> <Compile Include="Src\Helpers\FakeUpdatePackageActions.cs" />
<Compile Include="Src\Helpers\FakeUpdatePackageActionsFactory.cs" /> <Compile Include="Src\Helpers\FakeUpdatePackageActionsFactory.cs" />
<Compile Include="Src\Helpers\MethodHelper.cs" /> <Compile Include="Src\Helpers\MethodHelper.cs" />
<Compile Include="Src\Helpers\MethodOrPropertyHelper.cs" />
<Compile Include="Src\Helpers\ProjectContentHelper.cs" /> <Compile Include="Src\Helpers\ProjectContentHelper.cs" />
<Compile Include="Src\Helpers\PropertiesHelper.cs" /> <Compile Include="Src\Helpers\PropertiesHelper.cs" />
<Compile Include="Src\Helpers\PropertyHelper.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
helper.AddDeclaringType(name); helper.AddDeclaringType(name);
} }
void AddParameterToMethod(string name)
{
helper.AddParameter(name);
}
[Test] [Test]
public void Access_PublicFunction_ReturnsPublic() public void Access_PublicFunction_ReturnsPublic()
{ {
@ -144,5 +149,26 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(1, point.Line); Assert.AreEqual(1, point.Line);
Assert.AreEqual(10, point.LineCharOffset); 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
public void Parameters_PropertyIsIndexerWithOneParameter_ReturnsOneParameter() public void Parameters_PropertyIsIndexerWithOneParameter_ReturnsOneParameter()
{ {
helper.CreatePublicProperty("MyProperty"); helper.CreatePublicProperty("MyProperty");
helper.AddParameterToProperty("item"); helper.AddParameter("item");
CreateCodeProperty2(); CreateCodeProperty2();
CodeElements parameters = property.Parameters; CodeElements parameters = property.Parameters;

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

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

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

@ -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;
namespace PackageManagement.Tests.Helpers namespace PackageManagement.Tests.Helpers
{ {
public class PropertyHelper public class PropertyHelper : MethodOrPropertyHelper
{ {
public IProperty Property; public IProperty Property;
public ProjectContentHelper ProjectContentHelper = new ProjectContentHelper(); public ProjectContentHelper ProjectContentHelper = new ProjectContentHelper();
public ReturnTypeHelper ReturnTypeHelper = new ReturnTypeHelper(); public ReturnTypeHelper ReturnTypeHelper = new ReturnTypeHelper();
List<IAttribute> attributes = new List<IAttribute>(); List<IAttribute> attributes = new List<IAttribute>();
List<IParameter> parameters = new List<IParameter>();
/// <summary> /// <summary>
/// Property name should include class prefix (e.g. "Class1.MyProperty") /// Property name should include class prefix (e.g. "Class1.MyProperty")
@ -81,13 +80,6 @@ namespace PackageManagement.Tests.Helpers
HasSetter = true; 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() public void GetterModifierIsPrivate()
{ {
GetterModifier = ModifierEnum.Private; GetterModifier = ModifierEnum.Private;

Loading…
Cancel
Save