Browse Source

Implement EnvDTE.CodeProperty2.ReadWrite.

pull/28/head
Matt Ward 14 years ago
parent
commit
806ddd094f
  1. 9
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty.cs
  2. 14
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
  3. 3
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/vsCMPropertyKind.cs
  4. 36
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeProperty2Tests.cs
  5. 26
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/PropertyHelper.cs

9
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty.cs

@ -8,7 +8,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -8,7 +8,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeProperty : CodeElement
{
IProperty property;
CodeElements attributes;
public CodeProperty()
@ -18,22 +17,24 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -18,22 +17,24 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public CodeProperty(IProperty property)
: base(property)
{
this.property = property;
this.Property = property;
}
protected IProperty Property { get; private set; }
public virtual vsCMAccess Access {
get { return GetAccess(); }
set { }
}
public virtual CodeClass Parent {
get { return new CodeClass(property.ProjectContent, property.DeclaringType); }
get { return new CodeClass(Property.ProjectContent, Property.DeclaringType); }
}
public virtual CodeElements Attributes {
get {
if (attributes == null) {
attributes = new CodeAttributes(property);
attributes = new CodeAttributes(Property);
}
return attributes;
}

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

@ -17,12 +17,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -17,12 +17,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
}
public CodeElements Members {
get { throw new NotImplementedException(); }
public vsCMPropertyKind ReadWrite {
get { return GetPropertyKind(); }
}
public vsCMPropertyKind ReadWrite {
get { throw new NotImplementedException(); }
vsCMPropertyKind GetPropertyKind()
{
if (Property.CanSet && Property.CanGet) {
return vsCMPropertyKind.vsCMPropertyKindReadWrite;
} else if (Property.CanSet) {
return vsCMPropertyKind.vsCMPropertyKindWriteOnly;
}
return vsCMPropertyKind.vsCMPropertyKindReadOnly;
}
public CodeElements Parameters {

3
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/vsCMPropertyKind.cs

@ -7,7 +7,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -7,7 +7,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public enum vsCMPropertyKind
{
vsCMPropertyKindReadWrite = 0,
vsCMPropertyKindReadOnly = 1,
vsCMPropertyKindWriteOnly = 2
vsCMPropertyKindWriteOnly = 2,
}
}

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

@ -84,5 +84,41 @@ namespace PackageManagement.Tests.EnvDTE @@ -84,5 +84,41 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
[Test]
public void ReadWrite_PropertyHasGetterAndSetter_ReturnsReadWriteProperty()
{
helper.CreatePublicProperty("MyProperty");
helper.HasGetterAndSetter();
CreateCodeProperty2();
vsCMPropertyKind kind = property.ReadWrite;
Assert.AreEqual(vsCMPropertyKind.vsCMPropertyKindReadWrite, kind);
}
[Test]
public void ReadWrite_PropertyHasGetterOnly_ReturnsReadOnlyProperty()
{
helper.CreatePublicProperty("MyProperty");
helper.HasGetterOnly();
CreateCodeProperty2();
vsCMPropertyKind kind = property.ReadWrite;
Assert.AreEqual(vsCMPropertyKind.vsCMPropertyKindReadOnly, kind);
}
[Test]
public void ReadWrite_PropertyHasSetterOnly_ReturnsWriteOnlyProperty()
{
helper.CreatePublicProperty("MyProperty");
helper.HasSetterOnly();
CreateCodeProperty2();
vsCMPropertyKind kind = property.ReadWrite;
Assert.AreEqual(vsCMPropertyKind.vsCMPropertyKindWriteOnly, kind);
}
}
}

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

@ -50,5 +50,31 @@ namespace PackageManagement.Tests.Helpers @@ -50,5 +50,31 @@ namespace PackageManagement.Tests.Helpers
Property.Stub(p => p.IsPublic).Return(false);
Property.Stub(p => p.IsPrivate).Return(true);
}
public void HasGetterAndSetter()
{
HasGetter = true;
HasSetter = true;
}
public bool HasSetter {
set { Property.Stub(p => p.CanSet).Return(value); }
}
public bool HasGetter {
set { Property.Stub(p => p.CanGet).Return(value); }
}
public void HasGetterOnly()
{
HasGetter = true;
HasSetter = false;
}
public void HasSetterOnly()
{
HasGetter = false;
HasSetter = true;
}
}
}

Loading…
Cancel
Save