Change filter in the ansi request scenario.

This commit is contained in:
BDisp
2024-11-11 16:02:45 +00:00
parent 3425c5a30d
commit 644afa96d3
2 changed files with 35 additions and 21 deletions

View File

@@ -9,12 +9,11 @@ namespace UICatalog.Scenarios;
[ScenarioCategory ("Tests")]
public sealed class AnsiEscapeSequenceRequests : Scenario
{
private readonly List<DateTime> _sends = new ();
private readonly Dictionary<DateTime, AnsiEscapeSequenceRequest> _sends = new ();
private readonly object _lockAnswers = new ();
private readonly Dictionary<DateTime, string> _answers = new ();
private readonly object _lockErrors = new ();
private readonly Dictionary<DateTime, string> _errors = new ();
private readonly Dictionary<DateTime, AnsiEscapeSequenceRequest> _answers = new ();
private readonly Dictionary<DateTime, AnsiEscapeSequenceRequest> _errors = new ();
private GraphView _graphView;
@@ -117,7 +116,7 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
cbDar.ValueChanging += (s, e) =>
{
if (e.NewValue < 0 || e.NewValue > 20)
if (e.NewValue is < 0 or > 20)
{
e.Cancel = true;
}
@@ -327,7 +326,7 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
return "No requests sent yet";
}
string last = _answers.Last ().Value;
string last = _answers.Last ().Value.AnsiEscapeSequenceResponse!.Response;
int unique = _answers.Values.Distinct ().Count ();
int total = _answers.Count;
@@ -342,7 +341,7 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
return "No errors received yet";
}
string last = _errors.Last ().Value;
string last = _errors.Last ().Value.AnsiEscapeSequenceResponse!.Error;
int unique = _errors.Values.Distinct ().Count ();
int total = _errors.Count;
@@ -350,33 +349,34 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
return $"Last:{last} U:{unique} T:{total}";
}
private void HandleResponse (string response)
private void HandleResponse (AnsiEscapeSequenceRequest ansiRequest)
{
lock (_lockAnswers)
{
_answers.Add (DateTime.Now, response);
_answers.Add (DateTime.Now, ansiRequest);
}
}
private void HandleResponseError (string response)
private void HandleResponseError (AnsiEscapeSequenceRequest ansiRequest)
{
lock (_lockAnswers)
{
_errors.Add (DateTime.Now, response);
_errors.Add (DateTime.Now, ansiRequest);
}
}
private void SendDar ()
{
_sends.Add (DateTime.Now);
AnsiEscapeSequenceRequest ansiRequest = AnsiEscapeSequenceRequestUtils.CSI_SendDeviceAttributes;
if (Application.Driver!.TryWriteAnsiRequest (Application.MainLoop.MainLoopDriver, ref ansiRequest))
_sends.Add (DateTime.Now, ansiRequest);
if (Application.Driver!.TryWriteAnsiRequest (Application.MainLoop!.MainLoopDriver, ref ansiRequest))
{
HandleResponse (ansiRequest.AnsiEscapeSequenceResponse?.Response);
HandleResponse (ansiRequest);
}
else
{
HandleResponseError (ansiRequest.AnsiEscapeSequenceResponse?.Response);
HandleResponseError (ansiRequest);
}
}
@@ -398,19 +398,26 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
_graphView.GraphColor = new Attribute (Color.Green, Color.Black);
}
private int ToSeconds (DateTime t) { return (int)(DateTime.Now - t).TotalSeconds; }
private static Func<KeyValuePair<DateTime, AnsiEscapeSequenceRequest>, int> ToSeconds () { return t => (int)(DateTime.Now - t.Key).TotalSeconds; }
private void UpdateGraph ()
{
_sentSeries.Points = _sends
.GroupBy (ToSeconds)
.Where (
r => r.Value?.AnsiEscapeSequenceResponse is null
|| (r.Value?.AnsiEscapeSequenceResponse is { }
&& string.IsNullOrEmpty (r.Value?.AnsiEscapeSequenceResponse.Response)))
.GroupBy (ToSeconds ())
.Select (g => new PointF (g.Key, g.Count ()))
.ToList ();
_answeredSeries.Points = _answers.Keys
.GroupBy (ToSeconds)
.Select (g => new PointF (g.Key, g.Count ()))
.ToList ();
_answeredSeries.Points = _answers
.Where (
r => r.Value.AnsiEscapeSequenceResponse is { }
&& !string.IsNullOrEmpty (r.Value?.AnsiEscapeSequenceResponse.Response))
.GroupBy (ToSeconds ())
.Select (g => new PointF (g.Key, g.Count ()))
.ToList ();
// _graphView.ScrollOffset = new PointF(,0);
if (_sentSeries.Points.Count > 0 || _answeredSeries.Points.Count > 0)

View File

@@ -69,4 +69,11 @@ public class AnsiEscapeSequenceRequestsTests
Assert.NotNull (seqReqStatus);
Assert.Equal ("t", seqReqStatus.AnsiRequest.Terminator);
}
[Fact]
public void Request_Initialization_AnsiEscapeSequenceResponse_Is_Null ()
{
AnsiEscapeSequenceRequest ansiRequest = new () { Request = "\u001b[0c", Terminator = "c"};
Assert.Null (ansiRequest.AnsiEscapeSequenceResponse);
}
}