Browse Source

Implement EnvDTE.CodeParameter.Type.

pull/28/head
Matt Ward 14 years ago
parent
commit
368eecc11d
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
  3. 8
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs
  4. 7
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs
  5. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
  6. 27
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs
  8. 11
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs

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

@ -98,7 +98,7 @@
<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\CodeParameters.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" />

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

@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public virtual CodeElements Parameters { public virtual CodeElements Parameters {
get { return new CodeParameters(method.Parameters); } get { return new CodeParameters(method.ProjectContent, method.Parameters); }
} }
} }
} }

8
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs

@ -8,10 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class CodeParameter : CodeElement public class CodeParameter : CodeElement
{ {
IProjectContent projectContent;
IParameter parameter; IParameter parameter;
public CodeParameter(IParameter parameter) public CodeParameter(IProjectContent projectContent, IParameter parameter)
{ {
this.projectContent = projectContent;
this.parameter = parameter; this.parameter = parameter;
} }
@ -22,5 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public override string Name { public override string Name {
get { return parameter.Name; } get { return parameter.Name; }
} }
public virtual CodeTypeRef2 Type {
get { return new CodeTypeRef2(projectContent, null, parameter.ReturnType); }
}
} }
} }

7
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs → src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs

@ -9,8 +9,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class CodeParameters : CodeElementsList public class CodeParameters : CodeElementsList
{ {
public CodeParameters(IEnumerable<IParameter> parameters) IProjectContent projectContent;
public CodeParameters(IProjectContent projectContent, IEnumerable<IParameter> parameters)
{ {
this.projectContent = projectContent;
AddParameters(parameters); AddParameters(parameters);
} }
@ -23,7 +26,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
void AddParameters(IParameter parameter) void AddParameters(IParameter parameter)
{ {
AddCodeElement(new CodeParameter(parameter)); AddCodeElement(new CodeParameter(projectContent, 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 CodeParameters(Property.Parameters); } get { return new CodeParameters(null, Property.Parameters); }
} }
} }
} }

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

@ -54,6 +54,11 @@ namespace PackageManagement.Tests.EnvDTE
helper.AddParameter(name); helper.AddParameter(name);
} }
void AddParameterToMethod(string type, string name)
{
helper.AddParameter(type, name);
}
[Test] [Test]
public void Access_PublicFunction_ReturnsPublic() public void Access_PublicFunction_ReturnsPublic()
{ {
@ -170,5 +175,27 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual("test", parameter.Name); Assert.AreEqual("test", parameter.Name);
} }
[Test]
public void Parameters_MethodHasOneStringParameter_ReturnsOneCodeParameterWithStringType()
{
AddParameterToMethod("System.String", "test");
CreatePublicFunction("MyClass.MyMethod");
CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault();
Assert.AreEqual("System.String", parameter.Type.AsFullName);
}
[Test]
public void Parameters_MethodHasOneStringParameter_CreatesCodeParameterWithProjectContent()
{
AddParameterToMethod("System.String", "test");
CreatePublicFunction("MyClass.MyMethod");
CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault();
Assert.AreEqual("string", parameter.Type.AsString);
}
} }
} }

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

@ -14,7 +14,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateParameter() void CreateParameter()
{ {
parameter = new CodeParameter(null); parameter = new CodeParameter(null, null);
} }
[Test] [Test]

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

@ -13,9 +13,20 @@ namespace PackageManagement.Tests.Helpers
public List<IParameter> parameters = new List<IParameter>(); public List<IParameter> parameters = new List<IParameter>();
public void AddParameter(string name) public void AddParameter(string name)
{
AddParameter("System.String", name);
}
public void AddParameter(string type, string name)
{ {
IParameter parameter = MockRepository.GenerateStub<IParameter>(); IParameter parameter = MockRepository.GenerateStub<IParameter>();
parameter.Stub(p => p.Name).Return(name); parameter.Stub(p => p.Name).Return(name);
var returnTypeHelper = new ReturnTypeHelper();
returnTypeHelper.CreateReturnType("System.String");
returnTypeHelper.AddDotNetName("System.String");
parameter.ReturnType = returnTypeHelper.ReturnType;
parameters.Add(parameter); parameters.Add(parameter);
} }
} }

Loading…
Cancel
Save