diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageProperty.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageProperty.cs
index 70becb99ee..5279e91ce9 100644
--- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageProperty.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageProperty.cs
@@ -67,19 +67,26 @@ namespace ICSharpCode.CodeCoverage
public static string GetPropertyName(CodeCoverageMethod method)
{
if (IsGetter(method) || IsSetter(method)) {
- return method.Name.Substring(4);
+ return GetMethodName(method).Substring(6);
}
return String.Empty;
}
+ static string GetMethodName(CodeCoverageMethod method)
+ {
+ int startIndex = method.Name.IndexOf("::");
+ int endIndex = method.Name.IndexOf('(', startIndex);
+ return method.Name.Substring(startIndex, endIndex - startIndex);
+ }
+
public static bool IsGetter(CodeCoverageMethod method)
{
- return method.Name.StartsWith("get_");
+ return method.Name.Contains("::get_");
}
public static bool IsSetter(CodeCoverageMethod method)
{
- return method.Name.StartsWith("set_");
+ return method.Name.Contains("::set_");
}
}
}
diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoveragePropertyCollection.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoveragePropertyCollection.cs
index 4e6f672abf..e2bbd4721d 100644
--- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoveragePropertyCollection.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoveragePropertyCollection.cs
@@ -32,7 +32,7 @@ namespace ICSharpCode.CodeCoverage
foreach (CodeCoverageProperty property in properties) {
if (propertyName == property.Name) {
property.AddMethod(method);
- added = true;
+ added = true;
}
}
diff --git a/src/AddIns/Analysis/CodeCoverage/Test/CodeCoverage.Tests.csproj b/src/AddIns/Analysis/CodeCoverage/Test/CodeCoverage.Tests.csproj
index ca2bf2593c..e1921fad40 100644
--- a/src/AddIns/Analysis/CodeCoverage/Test/CodeCoverage.Tests.csproj
+++ b/src/AddIns/Analysis/CodeCoverage/Test/CodeCoverage.Tests.csproj
@@ -93,6 +93,7 @@
+
diff --git a/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyCollectionWithGetterAndSetterTestFixture.cs b/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyCollectionWithGetterAndSetterTestFixture.cs
index 697f53f3b6..fff39aafd5 100644
--- a/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyCollectionWithGetterAndSetterTestFixture.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyCollectionWithGetterAndSetterTestFixture.cs
@@ -3,7 +3,10 @@
using System;
using System.Reflection;
+using System.Xml.Linq;
+
using ICSharpCode.CodeCoverage;
+using ICSharpCode.CodeCoverage.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Coverage
@@ -20,12 +23,24 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
CodeCoverageMethod setterMethod;
CodeCoverageProperty property;
+ XElement CreateSetterMethod(string methodSignature)
+ {
+ return CodeCoverageMethodXElementBuilder.CreateSetterMethod(methodSignature);
+ }
+
+ XElement CreateGetterMethod(string methodSignature)
+ {
+ return CodeCoverageMethodXElementBuilder.CreateGetterMethod(methodSignature);
+ }
+
[TestFixtureSetUp]
public void SetUpFixture()
{
properties = new CodeCoveragePropertyCollection();
- getterMethod = new CodeCoverageMethod("get_Count", "MyTests", MethodAttributes.SpecialName);
- setterMethod = new CodeCoverageMethod("set_Count", "MyTests", MethodAttributes.SpecialName);
+ XElement getterElement = CreateGetterMethod("System.Int32 MyTests::get_Count()");
+ getterMethod = new CodeCoverageMethod("MyTests", getterElement);
+ XElement setterElement = CreateSetterMethod("System.Void MyTests::set_Count(System.Int32)");
+ setterMethod = new CodeCoverageMethod("MyTests", setterElement);
properties.Add(getterMethod);
properties.Add(setterMethod);
diff --git a/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyTestFixture.cs b/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyTestFixture.cs
index cb1312cd92..711b4c9f53 100644
--- a/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyTestFixture.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Test/Coverage/CodeCoveragePropertyTestFixture.cs
@@ -4,7 +4,9 @@
using System;
using System.Collections.Generic;
using System.Reflection;
+using System.Xml.Linq;
using ICSharpCode.CodeCoverage;
+using ICSharpCode.CodeCoverage.Tests.Utils;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Coverage
@@ -18,8 +20,20 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
[SetUp]
public void Init()
{
- getter = new CodeCoverageMethod("get_Count", "MyTest", MethodAttributes.SpecialName);
- setter = new CodeCoverageMethod("set_Count", "MyTest", MethodAttributes.SpecialName);
+ XElement getterElement = CreateGetterElement("System.Int32 MyTest::get_Count()");
+ getter = new CodeCoverageMethod("MyTest", getterElement);
+ XElement setterElement = CreateSetterElement("System.Void MyTest::set_Count(System.Int32)");
+ setter = new CodeCoverageMethod("MyTest", setterElement);
+ }
+
+ XElement CreateGetterElement(string methodSignature)
+ {
+ return CodeCoverageMethodXElementBuilder.CreateGetterMethod(methodSignature);
+ }
+
+ XElement CreateSetterElement(string methodSignature)
+ {
+ return CodeCoverageMethodXElementBuilder.CreateSetterMethod(methodSignature);
}
[Test]
@@ -94,6 +108,6 @@ namespace ICSharpCode.CodeCoverage.Tests.Coverage
expectedMethods.Add(getter);
expectedMethods.Add(setter);
Assert.AreEqual(expectedMethods, property.GetMethods());
- }
+ }
}
}
diff --git a/src/AddIns/Analysis/CodeCoverage/Test/Gui/PropertiesInCodeCoverageTreeView.cs b/src/AddIns/Analysis/CodeCoverage/Test/Gui/PropertiesInCodeCoverageTreeView.cs
index 0897fd3b0d..1b8a47e1b4 100644
--- a/src/AddIns/Analysis/CodeCoverage/Test/Gui/PropertiesInCodeCoverageTreeView.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Test/Gui/PropertiesInCodeCoverageTreeView.cs
@@ -1,13 +1,16 @@
// 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 ICSharpCode.SharpDevelop.Gui;
-using ICSharpCode.CodeCoverage;
-using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Windows.Forms;
+using System.Xml.Linq;
+
+using ICSharpCode.CodeCoverage;
+using ICSharpCode.CodeCoverage.Tests.Utils;
+using ICSharpCode.SharpDevelop.Gui;
+using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests.Gui
{
@@ -27,16 +30,29 @@ namespace ICSharpCode.CodeCoverage.Tests.Gui
CodeCoverageMethod fooGetterMethod;
CodeCoverageMethod fooSetterMethod;
+ XElement CreateSetterMethod(string methodSignature)
+ {
+ return CodeCoverageMethodXElementBuilder.CreateSetterMethod(methodSignature);
+ }
+
+ XElement CreateGetterMethod(string methodSignature)
+ {
+ return CodeCoverageMethodXElementBuilder.CreateGetterMethod(methodSignature);
+ }
+
[TestFixtureSetUp]
public void SetUpFixture()
{
List modules = new List();
CodeCoverageModule fooModule = new CodeCoverageModule("Tests");
- fooSetterMethod = new CodeCoverageMethod("set_Count", "Tests.FooTest", MethodAttributes.SpecialName);
+ XElement setterMethod = CreateSetterMethod("System.Void Tests.FooTest::set_Count(System.Int32)");
+ fooSetterMethod = new CodeCoverageMethod("Tests.FooTest", setterMethod);
fooSetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 1, 2, 2, 3, 4, 2));
fooSetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 0, 3, 4, 4, 4, 1));
- fooGetterMethod = new CodeCoverageMethod("get_Count", "Tests.FooTest", MethodAttributes.SpecialName);
+
+ XElement getterMethod = CreateGetterMethod("System.Int32 Tests.FooTest::get_Count()");
+ fooGetterMethod = new CodeCoverageMethod("Tests.FooTest", getterMethod);
fooGetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 1, 1, 0, 2, 1, 1));
fooModule.Methods.Add(fooGetterMethod);
@@ -48,8 +64,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Gui
treeView.AddModules(modules);
fooModuleNode = (CodeCoverageModuleTreeNode)treeView.Nodes[0];
}
-
-
+
fooModuleNode.Expanding();
fooTestsNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooModuleNode.Nodes[0];
@@ -94,12 +109,14 @@ namespace ICSharpCode.CodeCoverage.Tests.Gui
}
[Test]
+ [Ignore("Visited length not implemented with OpenCover")]
public void PropertyTreeNodeVisitedCodeLength_CountPropertyTreeNode_ReturnsThree()
{
Assert.AreEqual(3, countPropertyTreeNode.VisitedCodeLength);
}
[Test]
+ [Ignore("Visited length not implemented with OpenCover")]
public void VisitedCodeLength_PropertyTreeNode_ReturnsThree()
{
int count = countPropertyTreeNode.VisitedCodeLength;
@@ -123,6 +140,6 @@ namespace ICSharpCode.CodeCoverage.Tests.Gui
public void MethodTreeNodeMethod_SetterTreeNode_ReturnsSetterMethod()
{
Assert.AreEqual(fooSetterMethod, fooSetterTreeNode.Method);
- }
+ }
}
}
diff --git a/src/AddIns/Analysis/CodeCoverage/Test/Utils/CodeCoverageMethodXElementBuilder.cs b/src/AddIns/Analysis/CodeCoverage/Test/Utils/CodeCoverageMethodXElementBuilder.cs
new file mode 100644
index 0000000000..8227cec1b8
--- /dev/null
+++ b/src/AddIns/Analysis/CodeCoverage/Test/Utils/CodeCoverageMethodXElementBuilder.cs
@@ -0,0 +1,63 @@
+// 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 System.Xml.Linq;
+
+namespace ICSharpCode.CodeCoverage.Tests.Utils
+{
+ public class CodeCoverageMethodXElementBuilder
+ {
+ public XElement MethodElement { get; private set; }
+
+ public CodeCoverageMethodXElementBuilder(string methodSignature)
+ {
+ MethodElement = new XElement(XName.Get("Method"));
+
+ var nameElement = new XElement(XName.Get("Name"));
+ nameElement.Value = methodSignature;
+ MethodElement.Add(nameElement);
+ }
+
+ public void MakePropertyGetter()
+ {
+ SetGetterAttribute(true);
+ }
+
+ void SetGetterAttribute(bool value)
+ {
+ SetBooleanAttribute("isGetter", value);
+ }
+
+ void SetBooleanAttribute(string name, bool value)
+ {
+ MethodElement.SetAttributeValue(name, value.ToString().ToLowerInvariant());
+ }
+
+ public void MakePropertySetter()
+ {
+ SetSetterAttribute(true);
+ }
+
+ void SetSetterAttribute(bool value)
+ {
+ SetBooleanAttribute("isSetter", value);
+ }
+
+ public static XElement CreateSetterMethod(string methodSignature)
+ {
+ var builder = new CodeCoverageMethodXElementBuilder(methodSignature);
+ builder.SetSetterAttribute(true);
+ builder.SetGetterAttribute(false);
+ return builder.MethodElement;
+ }
+
+ public static XElement CreateGetterMethod(string methodSignature)
+ {
+ var builder = new CodeCoverageMethodXElementBuilder(methodSignature);
+ builder.SetSetterAttribute(false);
+ builder.SetGetterAttribute(true);
+ return builder.MethodElement;
+ }
+ }
+}