You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.4 KiB
99 lines
3.4 KiB
// <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 ICSharpCode.SharpDevelop.Tests.Utils; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.IO; |
|
using ICSharpCode.CodeCoverage; |
|
using ICSharpCode.Core; |
|
using ICSharpCode.SharpDevelop.Editor; |
|
using NUnit.Framework; |
|
|
|
namespace ICSharpCode.CodeCoverage.Tests.Highlighting |
|
{ |
|
[TestFixture] |
|
public class RemoveCodeCoverageMarkersTestFixture |
|
{ |
|
IDocument document; |
|
ITextMarkerService markerStrategy; |
|
|
|
[TestFixtureSetUp] |
|
public void SetUpTestFixture() |
|
{ |
|
try { |
|
string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); |
|
PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); |
|
} catch (Exception) {} |
|
|
|
document = MockTextMarkerService.CreateDocumentWithMockService(); |
|
markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; |
|
string code = "\t\t{\r\n" + |
|
"\t\t\tint count = 0;\r\n" + |
|
"\t\t}\r\n"; |
|
document.Text = code; |
|
|
|
string xml = "<PartCoverReport>\r\n" + |
|
"\t<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\"/>\r\n" + |
|
"\t<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" + |
|
"\t<Type name=\"Foo.Tests.FooTestFixture\" asmref=\"1\">\r\n" + |
|
"\t\t<Method name=\"SimpleTest\">\r\n" + |
|
"\t\t\t<pt visit=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" fid=\"1\" />\r\n" + |
|
"\t\t\t<pt visit=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" fid=\"1\" />\r\n" + |
|
"\t\t\t<pt visit=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" fid=\"1\" />\r\n" + |
|
"\t\t</Method>\r\n" + |
|
"\t</Type>\r\n" + |
|
"</PartCoverReport>"; |
|
CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); |
|
CodeCoverageMethod method = results.Modules[0].Methods[0]; |
|
CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); |
|
highlighter.AddMarkers(document, method.SequencePoints); |
|
|
|
// Add non-code coverage markers. |
|
markerStrategy.Create(0, 2); |
|
markerStrategy.Create(4, 5); |
|
} |
|
|
|
[Test] |
|
public void RemoveCodeCoverageMarkers() |
|
{ |
|
// Check that code coverage markers exist. |
|
Assert.IsTrue(ContainsCodeCoverageMarkers(markerStrategy)); |
|
|
|
// Remove code coverage markers. |
|
CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); |
|
highlighter.RemoveMarkers(document); |
|
|
|
// Check that code coverage markers have been removed. |
|
Assert.IsFalse(ContainsCodeCoverageMarkers(markerStrategy)); |
|
|
|
// Check that non-code coverage markers still exist. |
|
Assert.IsTrue(ContainsNonCodeCoverageMarkers(markerStrategy)); |
|
} |
|
|
|
static bool ContainsCodeCoverageMarkers(ITextMarkerService markerStrategy) |
|
{ |
|
foreach (ITextMarker marker in markerStrategy.TextMarkers) { |
|
if ((Type)marker.Tag == typeof(CodeCoverageHighlighter)) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
static bool ContainsNonCodeCoverageMarkers(ITextMarkerService markerStrategy) |
|
{ |
|
foreach (ITextMarker marker in markerStrategy.TextMarkers) { |
|
if ((Type)marker.Tag != typeof(CodeCoverageHighlighter)) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
} |
|
}
|
|
|