Files
Terminal.Gui/Terminal.Gui.Analyzers.Tests/HandledEventArgsAnalyzerTests.cs
Thomas Nind 3a645191db Fixes #4170 - Added analyzer that flags when user does not have Handled=true (#4182)
* Added analyzer

* WIP - Trying to create tests, failing with bad dependencies

* Working test woo

* Tidy up

* Tidy up

* Fix integration tests failing on command line

* Use 4.11 compiler

* Fix expecting 'e' as param name

* Make analyzer come as part of Terminal.Gui

* Add docs

* Fix warnings
2025-07-07 09:14:43 -06:00

62 lines
2.1 KiB
C#

using Terminal.Gui.Input;
using Terminal.Gui.Views;
namespace Terminal.Gui.Analyzers.Tests;
public class HandledEventArgsAnalyzerTests
{
[Theory]
[InlineData("e")]
[InlineData ("args")]
public async Task Should_ReportDiagnostic_When_EHandledNotSet_Lambda (string paramName)
{
var originalCode = $$"""
using Terminal.Gui.Views;
class TestClass
{
void Setup()
{
var b = new Button();
b.Accepting += (s, {{paramName}}) =>
{
// Forgot {{paramName}}.Handled = true;
};
}
}
""";
await new ProjectBuilder ()
.WithSourceCode (originalCode)
.WithAnalyzer (new HandledEventArgsAnalyzer ())
.ValidateAsync ();
}
[Theory]
[InlineData ("e")]
[InlineData ("args")]
public async Task Should_ReportDiagnostic_When_EHandledNotSet_Method (string paramName)
{
var originalCode = $$"""
using Terminal.Gui.Views;
using Terminal.Gui.Input;
class TestClass
{
void Setup()
{
var b = new Button();
b.Accepting += BOnAccepting;
}
private void BOnAccepting (object? sender, CommandEventArgs {{paramName}})
{
}
}
""";
await new ProjectBuilder ()
.WithSourceCode (originalCode)
.WithAnalyzer (new HandledEventArgsAnalyzer ())
.ValidateAsync ();
}
}