Skip to content

Commit 5269111

Browse files
committed
Implement Disposable for CodeMetricsViewModel
1 parent 0f1f57b commit 5269111

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

RetailCoder.VBE/Navigation/CodeMetrics/CodeMetricsViewModel.cs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,38 @@
88

99
namespace Rubberduck.Navigation.CodeMetrics
1010
{
11-
public class CodeMetricsViewModel : ViewModelBase
11+
public class CodeMetricsViewModel : ViewModelBase, IDisposable
1212
{
1313
private readonly RubberduckParserState _state;
14+
private readonly ICodeMetricsAnalyst _analyst;
1415

1516
public CodeMetricsViewModel(RubberduckParserState state, ICodeMetricsAnalyst analyst)
1617

1718
{
1819
_state = state;
19-
// FIXME deregister event on destruction
20-
_state.StateChanged += (_, change) =>
20+
_analyst = analyst;
21+
_state.StateChanged += OnStateChanged;
22+
}
23+
24+
private void OnStateChanged(object sender, ParserStateEventArgs e)
25+
{
26+
if (e.State == ParserState.Ready)
2127
{
22-
if (change.State == ParserState.Ready)
23-
{
24-
ModuleMetrics = analyst.ModuleMetrics(_state);
25-
}
26-
};
28+
ModuleMetrics = _analyst.ModuleMetrics(_state);
29+
}
2730
}
2831

2932
public void FilterByName(object projects, string text)
3033
{
3134
throw new NotImplementedException();
3235
}
36+
37+
public void Dispose()
38+
{
39+
_state.StateChanged -= OnStateChanged;
40+
}
3341

42+
3443
private IEnumerable<ModuleMetricsResult> _moduleMetrics;
3544
public IEnumerable<ModuleMetricsResult> ModuleMetrics {
3645
get => _moduleMetrics;

RubberduckTests/Mocks/MockParser.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public static RubberduckParserState ParseString(string inputCode, out QualifiedM
3030
var parser = Create(vbe.Object);
3131

3232
parser.Parse(new CancellationTokenSource());
33-
if (parser.State.Status == ParserState.Error) {
33+
if (parser.State.Status == ParserState.Error)
34+
{
3435
Assert.Inconclusive("Parser Error: {0}");
3536
}
3637
return parser.State;

0 commit comments

Comments
 (0)