Browse Source

Implement EnvDTE.CodeParameter.Type.

pull/28/head
Matt Ward 13 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 @@ @@ -98,7 +98,7 @@
<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\CodeParameters.cs" />
<Compile Include="Src\EnvDTE\CodeModel.cs" />
<Compile Include="Src\EnvDTE\CodeModelLanguageConstants.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 @@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
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 @@ -8,10 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeParameter : CodeElement
{
IProjectContent projectContent;
IParameter parameter;
public CodeParameter(IParameter parameter)
public CodeParameter(IProjectContent projectContent, IParameter parameter)
{
this.projectContent = projectContent;
this.parameter = parameter;
}
@ -22,5 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -22,5 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public override string 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 @@ -9,8 +9,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeParameters : CodeElementsList
{
public CodeParameters(IEnumerable<IParameter> parameters)
IProjectContent projectContent;
public CodeParameters(IProjectContent projectContent, IEnumerable<IParameter> parameters)
{
this.projectContent = projectContent;
AddParameters(parameters);
}
@ -23,7 +26,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -23,7 +26,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
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 @@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
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 @@ -54,6 +54,11 @@ namespace PackageManagement.Tests.EnvDTE
helper.AddParameter(name);
}
void AddParameterToMethod(string type, string name)
{
helper.AddParameter(type, name);
}
[Test]
public void Access_PublicFunction_ReturnsPublic()
{
@ -170,5 +175,27 @@ namespace PackageManagement.Tests.EnvDTE @@ -170,5 +175,27 @@ namespace PackageManagement.Tests.EnvDTE
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 @@ -14,7 +14,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateParameter()
{
parameter = new CodeParameter(null);
parameter = new CodeParameter(null, null);
}
[Test]

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

@ -13,9 +13,20 @@ namespace PackageManagement.Tests.Helpers @@ -13,9 +13,20 @@ namespace PackageManagement.Tests.Helpers
public List<IParameter> parameters = new List<IParameter>();
public void AddParameter(string name)
{
AddParameter("System.String", name);
}
public void AddParameter(string type, string name)
{
IParameter parameter = MockRepository.GenerateStub<IParameter>();
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);
}
}

Loading…
Cancel
Save