Browse Source

The CodeCoverageMethod.GetChildNamespaces method now correctly identifies the child namespaces when there are two that start the same and match up to just before the dot character.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2750 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 18 years ago
parent
commit
de670165f9
  1. 3
      src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageMethod.cs
  2. 1
      src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj
  3. 63
      src/AddIns/Misc/CodeCoverage/Test/SimilarRootNamespaceTestFixture.cs

3
src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageMethod.cs

@ -166,7 +166,8 @@ namespace ICSharpCode.CodeCoverage
List<string> items = new List<string>(); List<string> items = new List<string>();
foreach (CodeCoverageMethod method in methods) { foreach (CodeCoverageMethod method in methods) {
string classNamespace = method.ClassNamespace; string classNamespace = method.ClassNamespace;
if (classNamespace.Length > parentNamespace.Length && classNamespace.StartsWith(parentNamespace)) { string dottedParentNamespace = parentNamespace + ".";
if (classNamespace.Length > parentNamespace.Length && classNamespace.StartsWith(dottedParentNamespace)) {
string ns = CodeCoverageMethod.GetChildNamespace(method.ClassNamespace, parentNamespace); string ns = CodeCoverageMethod.GetChildNamespace(method.ClassNamespace, parentNamespace);
if (!items.Contains(ns)) { if (!items.Contains(ns)) {
items.Add(ns); items.Add(ns);

1
src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj

@ -71,6 +71,7 @@
<Compile Include="CodeCoverageMarkersInvalidStartColumnTestFixture.cs" /> <Compile Include="CodeCoverageMarkersInvalidStartColumnTestFixture.cs" />
<Compile Include="CodeCoverageMarkersInvalidEndColumnTestFixture.cs" /> <Compile Include="CodeCoverageMarkersInvalidEndColumnTestFixture.cs" />
<None Include="Strings.resources" /> <None Include="Strings.resources" />
<Compile Include="SimilarRootNamespaceTestFixture.cs" />
<Compile Include="TreeViewAfterSelectTestFixture.cs" /> <Compile Include="TreeViewAfterSelectTestFixture.cs" />
<Compile Include="TreeViewSortingTestFixture.cs" /> <Compile Include="TreeViewSortingTestFixture.cs" />
<Compile Include="ZeroCodeCoverageTreeViewTestFixture.cs" /> <Compile Include="ZeroCodeCoverageTreeViewTestFixture.cs" />

63
src/AddIns/Misc/CodeCoverage/Test/SimilarRootNamespaceTestFixture.cs

@ -0,0 +1,63 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using ICSharpCode.CodeCoverage;
using NUnit.Framework;
namespace ICSharpCode.CodeCoverage.Tests
{
/// <summary>
/// If there are two namespaces that start the same and match up
/// to at least the start of the dot character then the
/// CodeCoverageMethod.GetChildNamespaces fails to correctly identify
/// child namespaces.
///
/// For example:
///
/// Root.Tests
/// RootBar
///
/// If we look for child namespaces using the string "Root" the
/// code should only return "Tests", but it will also return
/// "Bar" due to a bug matching only the start of the class namespace
/// without taking into account the dot character.
/// </summary>
[TestFixture]
public class SimilarRootNamespaceTestFixture
{
List<string> childNamespaces = new List<string>();
[TestFixtureSetUp]
public void SetUpFixture()
{
CodeCoverageModule module = new CodeCoverageModule("Root.Tests");
// Add two methods in namespaces that start with the
// same initial characters.
CodeCoverageMethod rootTestsMethod = new CodeCoverageMethod("RunThis", "Root.Tests.MyTestFixture");
module.Methods.Add(rootTestsMethod);
CodeCoverageMethod rootBarMethod = new CodeCoverageMethod("RunThis", "RootBar.MyTestFixture");
module.Methods.Add(rootBarMethod);
childNamespaces = CodeCoverageMethod.GetChildNamespaces(module.Methods, "Root");
}
[Test]
public void RootNamespaceHasOneChildNamespace()
{
Assert.AreEqual(1, childNamespaces.Count);
}
[Test]
public void RootNamespaceChildNamespaceIsTests()
{
Assert.AreEqual("Tests", childNamespaces[0]);
}
}
}
Loading…
Cancel
Save