Skip to content

Commit a3936dc

Browse files
authored
Merge pull request #234 from tonyhallett/event-aggregator-report
Use event aggregator
2 parents 055f314 + b79256c commit a3936dc

25 files changed

+1397
-236
lines changed

FineCodeCoverage/FineCodeCoverage.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@
121121
<PackageReference Include="CliWrap">
122122
<Version>3.2.2</Version>
123123
</PackageReference>
124+
<PackageReference Include="EventAggregator.Net">
125+
<Version>1.2.0</Version>
126+
</PackageReference>
124127
<PackageReference Include="ExCSS">
125128
<Version>4.1.1</Version>
126129
</PackageReference>

FineCodeCoverage2022/FineCodeCoverage2022.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@
119119
<PackageReference Include="CliWrap">
120120
<Version>3.2.2</Version>
121121
</PackageReference>
122+
<PackageReference Include="EventAggregator.Net">
123+
<Version>1.2.0</Version>
124+
</PackageReference>
122125
<PackageReference Include="ExCSS">
123126
<Version>4.1.1</Version>
124127
</PackageReference>

FineCodeCoverageTests/Events/EventAggregator.cs

Lines changed: 565 additions & 0 deletions
Large diffs are not rendered by default.

FineCodeCoverageTests/FCCEngine_Tests.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@ public void SetUp()
3535
updatedMarginTags = true;
3636
};
3737

38-
39-
fccEngine.UpdateOutputWindow += (UpdateOutputWindowEventArgs e) =>
40-
{
41-
htmlContent = e.HtmlContent;
42-
};
4338
}
4439

4540
[Test]
@@ -104,7 +99,6 @@ public class FCCEngine_ReloadCoverage_Tests
10499
private FCCEngine fccEngine;
105100
private List<UpdateMarginTagsEventArgs> updateMarginTagsEvents;
106101
private List<List<CoverageLine>> updateMarginTagsCoverageLines;
107-
private List<UpdateOutputWindowEventArgs> updateOutputWindowEvents;
108102

109103
[SetUp]
110104
public void SetUp()
@@ -114,18 +108,12 @@ public void SetUp()
114108

115109
updateMarginTagsEvents = new List<UpdateMarginTagsEventArgs>();
116110
updateMarginTagsCoverageLines = new List<List<CoverageLine>>();
117-
updateOutputWindowEvents = new List<UpdateOutputWindowEventArgs>();
118111

119112
fccEngine.UpdateMarginTags += (UpdateMarginTagsEventArgs e) =>
120113
{
121114
updateMarginTagsEvents.Add(e);
122115
updateMarginTagsCoverageLines.Add(fccEngine.CoverageLines);
123116
};
124-
125-
fccEngine.UpdateOutputWindow += (UpdateOutputWindowEventArgs e) =>
126-
{
127-
updateOutputWindowEvents.Add(e);
128-
};
129117
}
130118

131119
[Test]
@@ -411,7 +399,6 @@ private void VerifyLogsReloadCoverageStatus(ReloadCoverageStatus reloadCoverageS
411399
private void VerifyClearUIEvents(int eventNumber)
412400
{
413401
Assert.Null(updateMarginTagsCoverageLines[eventNumber]);
414-
Assert.Null(updateOutputWindowEvents[eventNumber].HtmlContent);
415402
}
416403

417404
private async Task<(string reportGeneratedHtmlContent, List<CoverageLine> updatedCoverageLines)> RunToCompletion(bool noCoverageProjects)

FineCodeCoverageTests/FineCodeCoverageTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
<Compile Include="CoverageToolOutput_Tests\FccOutputExistenceCoverageToolOutputFolderSolutionProvider_Tests.cs" />
9595
<Compile Include="CoverageToolOutput_Tests\SolutionFolderProvider_Tests.cs" />
9696
<Compile Include="CoverageUtilManager_Tests.cs" />
97+
<Compile Include="Events\EventAggregator.cs" />
9798
<Compile Include="Test helpers\MefOrderAssertions.cs" />
9899
<Compile Include="ToolFolder_Tests.cs" />
99100
<Compile Include="ToolZipProvider_Tests.cs" />

FineCodeCoverageTests/ScriptManager_Tests.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Threading.Tasks;
2+
using FineCodeCoverage.Core.Utilities;
23
using FineCodeCoverage.Engine;
34
using FineCodeCoverage.Output;
45
using Moq;
@@ -11,13 +12,15 @@ public class ScriptManager_When_Called_Back_Window_External
1112
private ScriptManager scriptManager;
1213
private Mock<ISourceFileOpener> sourceFileOpener;
1314
private Mock<IProcess> mockProcess;
15+
private Mock<IEventAggregator> mockEventAggregator;
1416

1517
[SetUp]
1618
public void SetUp()
1719
{
1820
sourceFileOpener = new Mock<ISourceFileOpener>();
1921
mockProcess = new Mock<IProcess>();
20-
scriptManager = new ScriptManager(sourceFileOpener.Object, mockProcess.Object);
22+
mockEventAggregator = new Mock<IEventAggregator>();
23+
scriptManager = new ScriptManager(sourceFileOpener.Object, mockProcess.Object, mockEventAggregator.Object);
2124
}
2225

2326
[Test]
@@ -42,12 +45,10 @@ public void RateAndReview_Should_Open_Market_Place_Rate_And_Review()
4245
}
4346

4447
[Test]
45-
public void DocumentFocused_Should_Call_The_Focus_Callback()
48+
public void DocumentFocused_Should_Send_Message()
4649
{
47-
var calledCallback = false;
48-
scriptManager.FocusCallback = () => calledCallback = true;
4950
scriptManager.DocumentFocused();
50-
Assert.True(calledCallback);
51+
mockEventAggregator.Verify(e => e.SendMessage(It.IsAny<ReportFocusedMessage>(), null));
5152
}
5253

5354
[Test]

FineCodeCoverageTests/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<package id="AutoMoq" version="2.0.0" targetFramework="net472" />
44
<package id="Castle.Core" version="4.4.1" targetFramework="net472" />
55
<package id="CommonServiceLocator" version="1.3" targetFramework="net472" />
6+
<package id="EventAggregator.Net" version="1.2" targetFramework="net472" />
67
<package id="Microsoft.VisualStudio.TestWindow.Interfaces" version="11.0.61030" targetFramework="net472" />
78
<package id="Moq" version="4.16.0" targetFramework="net472" />
89
<package id="NUnit" version="3.13.1" targetFramework="net472" />

SharedProject/Core/CoverageUIEvents.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,5 @@ namespace FineCodeCoverage.Engine
55
internal class UpdateMarginTagsEventArgs : EventArgs {
66
}
77

8-
internal class UpdateOutputWindowEventArgs : EventArgs
9-
{
10-
public string HtmlContent { get; set; }
11-
}
12-
138
internal delegate void UpdateMarginTagsDelegate(UpdateMarginTagsEventArgs e);
14-
internal delegate void UpdateOutputWindowDelegate(UpdateOutputWindowEventArgs e);
159
}

SharedProject/Core/FCCEngine.cs

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.ComponentModel.Composition;
44
using System.Linq;
55
using System.Threading;
6-
using System.Windows;
76
using FineCodeCoverage.Core.Utilities;
87
using FineCodeCoverage.Engine.Cobertura;
98
using FineCodeCoverage.Engine.Model;
@@ -25,33 +24,10 @@ internal class FCCEngine : IFCCEngine
2524
private CancellationTokenSource cancellationTokenSource;
2625

2726
public event UpdateMarginTagsDelegate UpdateMarginTags;
28-
public event UpdateOutputWindowDelegate UpdateOutputWindow;
2927

3028
public string AppDataFolderPath { get; private set; }
3129
public List<CoverageLine> CoverageLines { get; internal set; }
3230

33-
private DpiScale dpiScale;
34-
public DpiScale Dpi
35-
{
36-
get => dpiScale;
37-
set
38-
{
39-
reportGeneratorUtil.DpiScale = value;
40-
dpiScale = value;
41-
UpdateReportWithDpiFontChanges();
42-
43-
}
44-
}
45-
private FontDetails environmentFontDetails;
46-
public FontDetails EnvironmentFontDetails {
47-
get => environmentFontDetails;
48-
set {
49-
environmentFontDetails = value;
50-
reportGeneratorUtil.EnvironmentFontDetails = value;
51-
UpdateReportWithDpiFontChanges();
52-
}
53-
}
54-
5531
private readonly ICoverageUtilManager coverageUtilManager;
5632
private readonly ICoberturaUtil coberturaUtil;
5733
private readonly IMsTestPlatformUtil msTestPlatformUtil;
@@ -64,7 +40,7 @@ public FontDetails EnvironmentFontDetails {
6440
private readonly ICoverageToolOutputManager coverageOutputManager;
6541
internal System.Threading.Tasks.Task reloadCoverageTask;
6642
private ISolutionEvents solutionEvents; // keep alive
67-
private bool hasGeneratedReport;
43+
private readonly IEventAggregator eventAggregator;
6844

6945
[ImportingConstructor]
7046
public FCCEngine(
@@ -77,10 +53,12 @@ public FCCEngine(
7753
IAppDataFolder appDataFolder,
7854
ICoverageToolOutputManager coverageOutputManager,
7955
ISolutionEvents solutionEvents,
80-
IAppOptionsProvider appOptionsProvider
56+
IAppOptionsProvider appOptionsProvider,
57+
IEventAggregator eventAggregator
8158
)
8259
{
8360
this.solutionEvents = solutionEvents;
61+
this.eventAggregator = eventAggregator;
8462
solutionEvents.AfterClosing += (s,args) => ClearOutputWindow(false);
8563
appOptionsProvider.OptionsChanged += (appOptions) =>
8664
{
@@ -132,14 +110,6 @@ private void ClearOutputWindow(bool withHistory)
132110
RaiseUpdateOutputWindow(reportGeneratorUtil.BlankReport(withHistory));
133111
}
134112

135-
private void UpdateReportWithDpiFontChanges()
136-
{
137-
if (hasGeneratedReport)
138-
{
139-
reportGeneratorUtil.UpdateReportWithDpiFontChanges();
140-
}
141-
}
142-
143113
public void StopCoverage()
144114
{
145115
if (cancellationTokenSource != null)
@@ -209,9 +179,7 @@ await coverageProject.StepAsync("Run Coverage Tool", async (project) =>
209179

210180
private void RaiseUpdateOutputWindow(string reportHtml)
211181
{
212-
UpdateOutputWindowEventArgs updateOutputWindowEventArgs = new UpdateOutputWindowEventArgs { HtmlContent = reportHtml};
213-
UpdateOutputWindow?.Invoke(updateOutputWindowEventArgs);
214-
hasGeneratedReport = true;
182+
eventAggregator.SendMessage(new NewReportMessage { Report = reportHtml });
215183
}
216184

217185
private void UpdateUI(List<CoverageLine> coverageLines, string reportHtml)
@@ -362,11 +330,6 @@ public void ReloadCoverage(Func<System.Threading.Tasks.Task<List<ICoverageProjec
362330
}, System.Threading.Tasks.TaskScheduler.Default);
363331

364332
}
365-
366-
public void ReadyForReport()
367-
{
368-
ClearOutputWindow(false);
369-
}
370333
}
371334

372335
}

SharedProject/Core/IFCCEngine.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Windows;
43
using FineCodeCoverage.Engine.Model;
54
using FineCodeCoverage.Impl;
6-
using FineCodeCoverage.Output;
75

86
namespace FineCodeCoverage.Engine
97
{
108
internal interface IFCCEngine
119
{
1210
event UpdateMarginTagsDelegate UpdateMarginTags;
13-
event UpdateOutputWindowDelegate UpdateOutputWindow;
1411
string AppDataFolderPath { get; }
1512
void Initialize(IInitializeStatusProvider initializeStatusProvider);
1613
void StopCoverage();
1714
void ReloadCoverage(Func<System.Threading.Tasks.Task<List<ICoverageProject>>> coverageRequestCallback);
1815

19-
DpiScale Dpi { get; set; }
20-
2116
void ClearUI();
2217
List<CoverageLine> CoverageLines { get; }
23-
FontDetails EnvironmentFontDetails { get; set; }
24-
25-
void ReadyForReport();
2618
}
2719

2820
}

0 commit comments

Comments
 (0)