Browse Source

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

pull/28/head
Matt Ward 13 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 @@ -14,7 +14,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public CodeElements PartialClasses {
get { throw new NotImplementedException(); }
get { return new CodeElementsList(); }
}
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 @@ -49,12 +49,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
// default is vsCMPart.vsCMPartWholeWithAttributes
public virtual TextPoint GetStartPoint()
{
throw new NotImplementedException();
return null;
}
public virtual TextPoint GetEndPoint()
{
throw new NotImplementedException();
return null;
}
public virtual vsCMInfoLocation InfoLocation { get; protected set; }

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

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

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

@ -8,9 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -8,9 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeFunction : CodeElement
{
IMethodOrProperty method;
public CodeFunction(IMethod method)
: base(method)
{
this.method = method;
}
public CodeFunction()
@ -26,5 +29,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -26,5 +29,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE
get { return GetAccess(); }
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 @@ -8,6 +8,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeVariable : CodeElement
{
IField field;
public CodeVariable()
{
}
@ -15,11 +17,22 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -15,11 +17,22 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public CodeVariable(IField field)
: base(field)
{
this.field = field;
}
public vsCMAccess Access {
get { return GetAccess(); }
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 @@ -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; @@ -6,7 +6,7 @@ using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public static class IReturnTypeExtensions
internal static class IReturnTypeExtensions
{
public static string GetFullName(this IReturnType returnType)
{

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

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// 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
{
@ -17,5 +18,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -17,5 +18,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
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 @@ -58,5 +58,29 @@ namespace PackageManagement.Tests.EnvDTE
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 @@ -39,6 +39,16 @@ namespace PackageManagement.Tests.EnvDTE
codeVariable = new CodeVariable(helper.Field);
}
void VariableStartsAtColumn(int column)
{
helper.VariableStartsAtColumn(column);
}
void VariableEndsAtColumn(int column)
{
helper.VariableEndsAtColumn(column);
}
[Test]
public void Access_PublicVariable_ReturnsPublic()
{
@ -58,5 +68,29 @@ namespace PackageManagement.Tests.EnvDTE @@ -58,5 +68,29 @@ namespace PackageManagement.Tests.EnvDTE
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 @@ -34,5 +34,22 @@ namespace PackageManagement.Tests.Helpers
Field.Stub(f => f.IsPublic).Return(false);
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 @@ -34,5 +34,17 @@ namespace PackageManagement.Tests.Helpers
Method.Stub(m => m.IsPublic).Return(false);
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