Browse Source

Implement EnvDTE.CodeElement.GetStartPoint() and GetEndPoint() for fields and methods.

pull/28/head
Matt Ward 14 years ago
parent
commit
9195ddeaab
  1. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeClass2.cs
  2. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs
  4. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
  5. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs
  6. 9
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/EditPoint.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/IReturnTypeExtensions.cs
  8. 11
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/TextPoint.cs
  9. 24
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
  10. 34
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeVariableTests.cs
  11. 17
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FieldHelper.cs
  12. 12
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodHelper.cs

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

@ -14,7 +14,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public CodeElements PartialClasses { public CodeElements PartialClasses {
get { throw new NotImplementedException(); } get { return new CodeElementsList(); }
} }
public static CodeClass2 CreateFromBaseType(IProjectContent projectContent, IReturnType baseType) public static CodeClass2 CreateFromBaseType(IProjectContent projectContent, IReturnType baseType)

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

@ -49,12 +49,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
// default is vsCMPart.vsCMPartWholeWithAttributes // default is vsCMPart.vsCMPartWholeWithAttributes
public virtual TextPoint GetStartPoint() public virtual TextPoint GetStartPoint()
{ {
throw new NotImplementedException(); return null;
} }
public virtual TextPoint GetEndPoint() public virtual TextPoint GetEndPoint()
{ {
throw new NotImplementedException(); return null;
} }
public virtual vsCMInfoLocation InfoLocation { get; protected set; } public virtual vsCMInfoLocation InfoLocation { get; protected set; }

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

@ -8,7 +8,7 @@ using System.Linq;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public abstract class CodeElementsList : CodeElements public class CodeElementsList : CodeElements
{ {
List<CodeElement> elements = new List<CodeElement>(); List<CodeElement> elements = new List<CodeElement>();

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

@ -8,9 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class CodeFunction : CodeElement public class CodeFunction : CodeElement
{ {
IMethodOrProperty method;
public CodeFunction(IMethod method) public CodeFunction(IMethod method)
: base(method) : base(method)
{ {
this.method = method;
} }
public CodeFunction() public CodeFunction()
@ -26,5 +29,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE
get { return GetAccess(); } get { return GetAccess(); }
set { } set { }
} }
public override TextPoint GetStartPoint()
{
return TextPoint.CreateStartPoint(method.Region);
}
public override TextPoint GetEndPoint()
{
return TextPoint.CreateEndPoint(method.BodyRegion);
}
} }
} }

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

@ -8,6 +8,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class CodeVariable : CodeElement public class CodeVariable : CodeElement
{ {
IField field;
public CodeVariable() public CodeVariable()
{ {
} }
@ -15,11 +17,22 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public CodeVariable(IField field) public CodeVariable(IField field)
: base(field) : base(field)
{ {
this.field = field;
} }
public vsCMAccess Access { public vsCMAccess Access {
get { return GetAccess(); } get { return GetAccess(); }
set { } set { }
} }
public override TextPoint GetStartPoint()
{
return TextPoint.CreateStartPoint(field.Region);
}
public override TextPoint GetEndPoint()
{
return TextPoint.CreateEndPoint(field.Region);
}
} }
} }

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

@ -11,9 +11,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
} }
public void ReplaceText(object pointOrCount, string text, int Flags) public void ReplaceText(object pointOrCount, string text, int flags)
{ {
throw new NotImplementedException(); ReplaceText((TextPoint)pointOrCount, text, (vsEPReplaceTextOptions)flags);
}
void ReplaceText(TextPoint point, string text, vsEPReplaceTextOptions textFormatOptions)
{
} }
} }
} }

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

@ -6,7 +6,7 @@ using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public static class IReturnTypeExtensions internal static class IReturnTypeExtensions
{ {
public static string GetFullName(this IReturnType returnType) public static string GetFullName(this IReturnType returnType)
{ {

11
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/TextPoint.cs

@ -2,6 +2,7 @@
// 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 ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
@ -17,5 +18,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
internal static TextPoint CreateStartPoint(DomRegion region)
{
return new TextPoint { LineCharOffset = region.BeginColumn };
}
internal static TextPoint CreateEndPoint(DomRegion region)
{
return new TextPoint { LineCharOffset = region.EndColumn };
}
} }
} }

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

@ -58,5 +58,29 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access); Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
} }
[Test]
public void GetStartPoint_FunctionStartsAtColumn3_ReturnsPointWithOffset3()
{
CreatePublicFunction("Class1.MyFunction");
helper.FunctionStartsAtColumn(3);
TextPoint point = codeFunction.GetStartPoint();
int offset = point.LineCharOffset;
Assert.AreEqual(3, offset);
}
[Test]
public void GetEndPoint_FunctionBodyAtColumn4_ReturnsPointWithOffset4()
{
CreatePublicFunction("Class1.MyFunction");
helper.FunctionBodyEndsAtColumn(4);
TextPoint point = codeFunction.GetEndPoint();
int offset = point.LineCharOffset;
Assert.AreEqual(4, offset);
}
} }
} }

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

@ -39,6 +39,16 @@ namespace PackageManagement.Tests.EnvDTE
codeVariable = new CodeVariable(helper.Field); codeVariable = new CodeVariable(helper.Field);
} }
void VariableStartsAtColumn(int column)
{
helper.VariableStartsAtColumn(column);
}
void VariableEndsAtColumn(int column)
{
helper.VariableEndsAtColumn(column);
}
[Test] [Test]
public void Access_PublicVariable_ReturnsPublic() public void Access_PublicVariable_ReturnsPublic()
{ {
@ -58,5 +68,29 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access); Assert.AreEqual(vsCMAccess.vsCMAccessPrivate, access);
} }
[Test]
public void GetStartPoint_VariableStartsAtColumn5_ReturnsTextPointWithLineCharOffset5()
{
CreatePublicVariable("MyVariable");
VariableStartsAtColumn(5);
TextPoint point = codeVariable.GetStartPoint();
int offset = point.LineCharOffset;
Assert.AreEqual(5, offset);
}
[Test]
public void GetEndPoint_VariableEndsAtColumn10_ReturnsTextPointWithLineCharOffset10()
{
CreatePublicVariable("MyVariable");
VariableEndsAtColumn(10);
TextPoint point = codeVariable.GetEndPoint();
int offset = point.LineCharOffset;
Assert.AreEqual(10, offset);
}
} }
} }

17
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FieldHelper.cs

@ -34,5 +34,22 @@ namespace PackageManagement.Tests.Helpers
Field.Stub(f => f.IsPublic).Return(false); Field.Stub(f => f.IsPublic).Return(false);
Field.Stub(f => f.IsPrivate).Return(true); Field.Stub(f => f.IsPrivate).Return(true);
} }
public void SetRegion(DomRegion region)
{
Field.Stub(f => f.Region).Return(region);
}
public void VariableStartsAtColumn(int column)
{
var region = new DomRegion(1, column);
SetRegion(region);
}
public void VariableEndsAtColumn(int column)
{
var region = new DomRegion(1, 1, 1, column);
SetRegion(region);
}
} }
} }

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

@ -34,5 +34,17 @@ namespace PackageManagement.Tests.Helpers
Method.Stub(m => m.IsPublic).Return(false); Method.Stub(m => m.IsPublic).Return(false);
Method.Stub(m => m.IsPrivate).Return(true); Method.Stub(m => m.IsPrivate).Return(true);
} }
public void FunctionStartsAtColumn(int column)
{
var region = new DomRegion(1, column);
Method.Stub(m => m.Region).Return(region);
}
public void FunctionBodyEndsAtColumn(int column)
{
var region = new DomRegion(1, 1, 1, column);
Method.Stub(m => m.BodyRegion).Return(region);
}
} }
} }

Loading…
Cancel
Save