Browse Source

Implement Access property for all EnvDTE.CodeElement derived classes.

pull/28/head
Matt Ward 13 years ago
parent
commit
5b3354151a
  1. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeAttribute.cs
  2. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeAttribute2.cs
  3. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeAttributeArgument.cs
  4. 12
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeDelegate.cs
  5. 8
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  6. 15
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
  7. 8
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty.cs
  8. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
  9. 12
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeStruct.cs
  10. 10
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs
  11. 15
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs
  12. 3
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/vsCMAccess.cs
  13. 4
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  14. 41
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs
  15. 62
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeDelegateTests.cs
  16. 82
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
  17. 45
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeProperty2Tests.cs
  18. 62
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeStructTests.cs
  19. 82
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeVariableTests.cs
  20. 77
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectContentHelper.cs
  21. 23
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/PropertyHelper.cs

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

@ -12,6 +12,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -12,6 +12,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
IAttribute attribute;
static readonly string AttributeEndName = "Attribute";
public CodeAttribute()
{
}
public CodeAttribute(IAttribute attribute)
{
this.attribute = attribute;

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

@ -11,6 +11,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -11,6 +11,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
CodeAttributeArguments arguments;
IAttribute attribute;
public CodeAttribute2()
{
}
public CodeAttribute2(IAttribute attribute)
: base(attribute)
{

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

@ -10,6 +10,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -10,6 +10,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string name;
string value;
public CodeAttributeArgument()
{
}
public CodeAttributeArgument(string name, object value)
{
this.name = name;

12
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeDelegate.cs

@ -2,11 +2,19 @@ @@ -2,11 +2,19 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeDelegate : CodeElement
public class CodeDelegate : CodeType
{
public vsCMAccess Access { get; set; }
public CodeDelegate(IProjectContent projectContent, IClass c)
: base(projectContent, c)
{
}
public CodeDelegate()
{
}
}
}

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

@ -67,5 +67,13 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -67,5 +67,13 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return dte;
}
}
protected vsCMAccess GetAccess()
{
if (Entity.IsPublic) {
return vsCMAccess.vsCMAccessPublic;
}
return vsCMAccess.vsCMAccessPrivate;
}
}
}

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

@ -2,11 +2,24 @@ @@ -2,11 +2,24 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeFunction : CodeElement
{
public vsCMAccess Access { get; set; }
public CodeFunction(IMethod method)
: base(method)
{
}
public CodeFunction()
{
}
public vsCMAccess Access {
get { return GetAccess(); }
set { }
}
}
}

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

@ -16,14 +16,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -16,14 +16,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public CodeProperty(IProperty property)
: base(property)
{
this.property = property;
}
public virtual vsCMAccess Access { get; set; }
public virtual vsCMAccess Access {
get { return GetAccess(); }
set { }
}
public virtual CodeClass Parent {
get { throw new NotImplementedException(); }
get { return new CodeClass(property.ProjectContent, property.DeclaringType); }
}
public virtual CodeElements Attributes {

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

@ -8,6 +8,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -8,6 +8,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeProperty2 : CodeProperty
{
public CodeProperty2()
{
}
public CodeProperty2(IProperty property)
: base(property)
{

12
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeStruct.cs

@ -2,11 +2,19 @@ @@ -2,11 +2,19 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeStruct : CodeElement
public class CodeStruct : CodeType
{
public vsCMAccess Access { get; set; }
public CodeStruct()
{
}
public CodeStruct(IProjectContent projectContent, IClass c)
: base(projectContent, c)
{
}
}
}

10
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs

@ -10,6 +10,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -10,6 +10,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
CodeAttributes attributes;
/// <summary>
/// Note that projectContent may be different to the IClass.ProjectContent since the class
/// is retrieved from the namespace contents and could belong to a separate project or
/// referenced assembly.
/// </summary>
public CodeType(IProjectContent projectContent, IClass c)
: base(c)
{
@ -31,7 +36,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -31,7 +36,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
protected IClass Class { get; private set; }
public virtual vsCMAccess Access { get; set; }
public virtual vsCMAccess Access {
get { return GetAccess(); }
set { }
}
public virtual string FullName {
get { return Class.FullyQualifiedName; }

15
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs

@ -2,11 +2,24 @@ @@ -2,11 +2,24 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeVariable : CodeElement
{
public vsCMAccess Access { get; set; }
public CodeVariable()
{
}
public CodeVariable(IField field)
: base(field)
{
}
public vsCMAccess Access {
get { return GetAccess(); }
set { }
}
}
}

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

@ -7,6 +7,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -7,6 +7,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public enum vsCMAccess
{
vsCMAccessPublic = 1
vsCMAccessPublic = 1,
vsCMAccessPrivate = 2
}
}

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

@ -75,11 +75,15 @@ @@ -75,11 +75,15 @@
<Compile Include="Src\EnvDTE\CodeAttribute2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeAttributesTests.cs" />
<Compile Include="Src\EnvDTE\CodeClass2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeDelegateTests.cs" />
<Compile Include="Src\EnvDTE\CodeElementsInNamespaceTests.cs" />
<Compile Include="Src\EnvDTE\CodeFunctionTests.cs" />
<Compile Include="Src\EnvDTE\CodeModelTests.cs" />
<Compile Include="Src\EnvDTE\CodeNamespaceTests.cs" />
<Compile Include="Src\EnvDTE\CodeProperty2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeStructTests.cs" />
<Compile Include="Src\EnvDTE\CodeTypeTests.cs" />
<Compile Include="Src\EnvDTE\CodeVariableTests.cs" />
<Compile Include="Src\EnvDTE\NamespaceNameTests.cs" />
<Compile Include="Src\EnvDTE\SolutionTests.cs" />
<Compile Include="Src\Helpers\AttributeHelper.cs" />

41
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs

@ -25,13 +25,24 @@ namespace PackageManagement.Tests.EnvDTE @@ -25,13 +25,24 @@ namespace PackageManagement.Tests.EnvDTE
void CreateClass(string name)
{
fakeClass = helper.AddClassToProjectContent(name);
codeClass = new CodeClass2(helper.FakeProjectContent, fakeClass);
CreateClass();
}
void CreatePublicClass(string name)
{
fakeClass = helper.AddPublicClassToProjectContent(name);
CreateClass();
}
void CreateMSBuildClass(string name)
void CreatePrivateClass(string name)
{
fakeClass = MockRepository.GenerateStub<IClass>();
fakeClass.Stub(c => c.FullyQualifiedName).Return(name);
fakeClass = helper.AddPrivateClassToProjectContent(name);
CreateClass();
}
void CreateClass()
{
codeClass = new CodeClass2(helper.FakeProjectContent, fakeClass);
}
[Test]
@ -57,5 +68,27 @@ namespace PackageManagement.Tests.EnvDTE @@ -57,5 +68,27 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageVB, language);
}
[Test]
public void Access_PublicClass_ReturnsPublic()
{
CreateProjectContent();
CreatePublicClass("MyClass");
vsCMAccess access = codeClass.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPublic, access);
}
[Test]
public void Access_PrivateClass_ReturnsPrivate()
{
CreateProjectContent();
CreatePrivateClass("MyClass");
vsCMAccess access = codeClass.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
}
}

62
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeDelegateTests.cs

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
// 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 ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeDelegateTests
{
CodeDelegate codeDelegate;
ProjectContentHelper helper;
IClass fakeDelegate;
[SetUp]
public void Init()
{
helper = new ProjectContentHelper();
}
void CreatePublicDelegate(string name)
{
fakeDelegate = helper.AddPublicDelegateToProjectContent(name);
CreateDelegate();
}
void CreatePrivateDelegate(string name)
{
fakeDelegate = helper.AddPrivateDelegateToProjectContent(name);
CreateDelegate();
}
void CreateDelegate()
{
codeDelegate = new CodeDelegate(helper.FakeProjectContent, fakeDelegate);
}
[Test]
public void Access_PublicDelegate_ReturnsPublic()
{
CreatePublicDelegate("MyDelegate");
vsCMAccess access = codeDelegate.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPublic, access);
}
[Test]
public void Access_PrivateDelegate_ReturnsPrivate()
{
CreatePrivateDelegate("MyDelegate");
vsCMAccess access = codeDelegate.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
}
}

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

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
// 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 ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeFunctionTests
{
CodeFunction codeFunction;
IMethod method;
ProjectContentHelper helper;
[SetUp]
public void Init()
{
helper = new ProjectContentHelper();
}
void CreateMSBuildMethod(string name)
{
method = MockRepository.GenerateMock<IMethod, IEntity>();
method.Stub(m => m.ProjectContent).Return(helper.FakeProjectContent);
}
void CreateMSBuildPublicMethod(string name)
{
CreateMSBuildMethod(name);
method.Stub(m => m.IsPublic).Return(true);
}
void CreateMSBuildPrivateMethod(string name)
{
CreateMSBuildMethod(name);
method.Stub(m => m.IsPublic).Return(false);
method.Stub(m => m.IsPrivate).Return(true);
}
void CreatePublicFunction(string name)
{
CreateMSBuildPublicMethod(name);
CreateFunction();
}
void CreatePrivateFunction(string name)
{
CreateMSBuildPrivateMethod(name);
CreateFunction();
}
void CreateFunction()
{
codeFunction = new CodeFunction(method);
}
[Test]
public void Access_PublicFunction_ReturnsPublic()
{
CreatePublicFunction("MyFunction");
vsCMAccess access = codeFunction.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPublic, access);
}
[Test]
public void Access_PrivateFunction_ReturnsPrivate()
{
CreatePrivateFunction("MyFunction");
vsCMAccess access = codeFunction.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
}
}

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

@ -39,5 +39,50 @@ namespace PackageManagement.Tests.EnvDTE @@ -39,5 +39,50 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(1, attributes.Count);
Assert.AreEqual("Tests.TestAttribute", attribute.FullName);
}
[Test]
public void Name_PropertyCalledMyProperty_ReturnsMyProperty()
{
helper.CreateProperty("MyProperty");
CreateCodeProperty2();
string name = property.Name;
Assert.AreEqual("MyProperty", name);
}
[Test]
public void Parent_Class1ContainsProperty_ReturnsClass1()
{
helper.CreateProperty("MyProperty");
helper.AddParentClass("Tests.Class1");
CreateCodeProperty2();
CodeClass parentClass = property.Parent;
Assert.AreEqual("Tests.Class1", parentClass.FullName);
}
[Test]
public void Access_PublicProperty_AccessIsPublic()
{
helper.CreatePublicProperty("MyProperty");
CreateCodeProperty2();
vsCMAccess access = property.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPublic, access);
}
[Test]
public void Access_PrivateProperty_AccessIsPrivate()
{
helper.CreatePrivateProperty("MyProperty");
CreateCodeProperty2();
vsCMAccess access = property.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
}
}

62
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeStructTests.cs

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
// 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 ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeStructTests
{
CodeStruct codeStruct;
ProjectContentHelper helper;
IClass fakeStruct;
[SetUp]
public void Init()
{
helper = new ProjectContentHelper();
}
void CreatePublicStruct(string name)
{
fakeStruct = helper.AddPublicStructToProjectContent(name);
CreateStruct();
}
void CreatePrivateStruct(string name)
{
fakeStruct = helper.AddPrivateStructToProjectContent(name);
CreateStruct();
}
void CreateStruct()
{
codeStruct = new CodeStruct(helper.FakeProjectContent, fakeStruct);
}
[Test]
public void Access_PublicStruct_ReturnsPublic()
{
CreatePublicStruct("MyStruct");
vsCMAccess access = codeStruct.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPublic, access);
}
[Test]
public void Access_PrivateStruct_ReturnsPrivate()
{
CreatePrivateStruct("MyStruct");
vsCMAccess access = codeStruct.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
}
}

82
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeVariableTests.cs

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
// 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 ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeVariableTests
{
CodeVariable codeVariable;
IField field;
ProjectContentHelper helper;
[SetUp]
public void Init()
{
helper = new ProjectContentHelper();
}
void CreateMSBuildField(string name)
{
field = MockRepository.GenerateMock<IField, IEntity>();
field.Stub(f => f.ProjectContent).Return(helper.FakeProjectContent);
}
void CreateMSBuildPublicField(string name)
{
CreateMSBuildField(name);
field.Stub(f => f.IsPublic).Return(true);
}
void CreateMSBuildPrivateField(string name)
{
CreateMSBuildField(name);
field.Stub(f => f.IsPublic).Return(false);
field.Stub(f => f.IsPrivate).Return(true);
}
void CreatePublicVariable(string name)
{
CreateMSBuildPublicField(name);
CreateVariable();
}
void CreatePrivateVariable(string name)
{
CreateMSBuildPrivateField(name);
CreateVariable();
}
void CreateVariable()
{
codeVariable = new CodeVariable(field);
}
[Test]
public void Access_PublicVariable_ReturnsPublic()
{
CreatePublicVariable("MyVariable");
vsCMAccess access = codeVariable.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPublic, access);
}
[Test]
public void Access_PrivateVariable_ReturnsPrivate()
{
CreatePrivateVariable("MyVariable");
vsCMAccess access = codeVariable.Access;
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
}
}
}

77
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectContentHelper.cs

@ -50,11 +50,15 @@ namespace PackageManagement.Tests.Helpers @@ -50,11 +50,15 @@ namespace PackageManagement.Tests.Helpers
public IClass AddClassToProjectContent(string className)
{
IClass fakeClass = AddClassToProjectContentCommon(FakeProjectContent, className);
fakeClass.Stub(c => c.ClassType).Return(ClassType.Class);
SetClassType(fakeClass, ClassType.Class);
return fakeClass;
}
public void SetClassType(IClass fakeClass, ClassType classType)
{
fakeClass.Stub(c => c.ClassType).Return(classType);
}
public void AddClassToDifferentProjectContent(string className)
{
IProjectContent differentProjectContent = MockRepository.GenerateStub<IProjectContent>();
@ -84,7 +88,7 @@ namespace PackageManagement.Tests.Helpers @@ -84,7 +88,7 @@ namespace PackageManagement.Tests.Helpers
public IClass AddInterfaceToProjectContent(IProjectContent projectContent, string interfaceName)
{
IClass fakeClass = AddClassToProjectContentCommon(projectContent, interfaceName);
fakeClass.Stub(c => c.ClassType).Return(ClassType.Interface);
SetClassType(fakeClass, ClassType.Interface);
return fakeClass;
}
@ -152,5 +156,72 @@ namespace PackageManagement.Tests.Helpers @@ -152,5 +156,72 @@ namespace PackageManagement.Tests.Helpers
project.FileName = @"c:\projects\myproject.vbproj";
SetProjectForProjectContent(project);
}
public IClass AddPublicClassToProjectContent(string name)
{
IClass fakeClass = AddClassToProjectContent(name);
MakeClassPublic(fakeClass);
return fakeClass;
}
public IClass AddPrivateClassToProjectContent(string name)
{
IClass fakeClass = AddClassToProjectContent(name);
MakeClassPrivate(fakeClass);
return fakeClass;
}
public IClass AddPublicStructToProjectContent(string name)
{
IClass fakeStruct = AddStructToProjectContent(name);
MakeClassPublic(fakeStruct);
return fakeStruct;
}
public IClass AddStructToProjectContent(string name)
{
IClass fakeStruct = AddClassToProjectContentCommon(FakeProjectContent, name);
SetClassType(fakeStruct, ClassType.Struct);
return fakeStruct;
}
public IClass AddPrivateStructToProjectContent(string name)
{
IClass fakeStruct = AddStructToProjectContent(name);
MakeClassPrivate(fakeStruct);
return fakeStruct;
}
public IClass AddPublicDelegateToProjectContent(string name)
{
IClass fakeDelegate = AddDelegateToProjectContent(name);
MakeClassPublic(fakeDelegate);
return fakeDelegate;
}
public IClass AddDelegateToProjectContent(string name)
{
IClass fakeDelegate = AddClassToProjectContentCommon(FakeProjectContent, name);
SetClassType(fakeDelegate, ClassType.Delegate);
return fakeDelegate;
}
public void MakeClassPublic(IClass fakeClass)
{
fakeClass.Stub(c => c.IsPublic).Return(true);
}
public void MakeClassPrivate(IClass fakeClass)
{
fakeClass.Stub(c => c.IsPublic).Return(false);
fakeClass.Stub(c => c.IsPrivate).Return(true);
}
public IClass AddPrivateDelegateToProjectContent(string name)
{
IClass fakeDelegate = AddDelegateToProjectContent(name);
MakeClassPrivate(fakeDelegate);
return fakeDelegate;
}
}
}

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

@ -12,11 +12,15 @@ namespace PackageManagement.Tests.Helpers @@ -12,11 +12,15 @@ namespace PackageManagement.Tests.Helpers
{
public IProperty Property;
public List<IAttribute> Attributes = new List<IAttribute>();
public ProjectContentHelper ProjectContentHelper = new ProjectContentHelper();
public void CreateProperty(string name)
{
Property = MockRepository.GenerateMock<IProperty, IEntity>();
Property.Stub(p => p.Name).Return(name);
Property.Stub(p => p.FullyQualifiedName).Return(name);
Property.Stub(p => p.Attributes).Return(Attributes);
Property.Stub(p => p.ProjectContent).Return(ProjectContentHelper.FakeProjectContent);
}
public void AddAttribute(string fullName, string shortName)
@ -25,5 +29,24 @@ namespace PackageManagement.Tests.Helpers @@ -25,5 +29,24 @@ namespace PackageManagement.Tests.Helpers
attributeHelper.CreateAttribute(fullName, shortName);
Attributes.Add(attributeHelper.Attribute);
}
public void AddParentClass(string className)
{
IClass c = ProjectContentHelper.AddClassToProjectContent(className);
Property.Stub(p => p.DeclaringType).Return(c);
}
public void CreatePublicProperty(string name)
{
CreateProperty(name);
Property.Stub(p => p.IsPublic).Return(true);
}
public void CreatePrivateProperty(string name)
{
CreateProperty(name);
Property.Stub(p => p.IsPublic).Return(false);
Property.Stub(p => p.IsPrivate).Return(true);
}
}
}

Loading…
Cancel
Save