84 lines
2.6 KiB
C#
84 lines
2.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Paca.Mobile.Core;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Core;
|
|
|
|
public class NetworkLatencyJitterGateTests
|
|
{
|
|
[Fact]
|
|
public void Gate365_NetworkLatencyJitter_EvaluatesExcellentHealth_OnLowLatency()
|
|
{
|
|
var samples = new List<LatencySample>
|
|
{
|
|
new(15.0, true),
|
|
new(18.0, true),
|
|
new(16.0, true),
|
|
new(17.0, true),
|
|
new(15.0, true)
|
|
};
|
|
|
|
var report = NetworkLatencyJitterProber.AnalyzeSamples(samples);
|
|
|
|
Assert.Equal(NetworkHealthRating.Excellent, report.Rating);
|
|
Assert.InRange(report.AverageRttMs, 16.0, 16.5);
|
|
Assert.True(report.JitterMs < 5.0);
|
|
Assert.Equal(0.0, report.PacketLossPercent);
|
|
Assert.Contains("초고속", report.Recommendation);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate366_NetworkLatencyJitter_DetectsPacketLoss_AndDegradesRating()
|
|
{
|
|
var samples = new List<LatencySample>
|
|
{
|
|
new(30.0, true),
|
|
new(0.0, false), // Lost
|
|
new(35.0, true),
|
|
new(40.0, true),
|
|
new(0.0, false) // Lost
|
|
};
|
|
|
|
// 2 out of 5 lost = 40% loss
|
|
var report = NetworkLatencyJitterProber.AnalyzeSamples(samples);
|
|
|
|
Assert.True(report.Rating == NetworkHealthRating.Degraded || report.Rating == NetworkHealthRating.Poor);
|
|
Assert.Equal(40.0, report.PacketLossPercent);
|
|
Assert.Contains("패킷 손실", report.Recommendation);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate367_NetworkLatencyJitter_EvaluatesPoor_OnHighJitterAndLatency()
|
|
{
|
|
var samples = new List<LatencySample>
|
|
{
|
|
new(450.0, true),
|
|
new(200.0, true),
|
|
new(550.0, true),
|
|
new(180.0, true)
|
|
};
|
|
|
|
var report = NetworkLatencyJitterProber.AnalyzeSamples(samples);
|
|
|
|
Assert.Equal(NetworkHealthRating.Poor, report.Rating);
|
|
Assert.True(report.AverageRttMs > 300.0);
|
|
Assert.True(report.JitterMs > 100.0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate368_NetworkLatencyJitter_HandlesEmptyOrTotalLossGracefully()
|
|
{
|
|
var empty = NetworkLatencyJitterProber.AnalyzeSamples(new List<LatencySample>());
|
|
Assert.Equal(NetworkHealthRating.Poor, empty.Rating);
|
|
Assert.Equal(100.0, empty.PacketLossPercent);
|
|
|
|
var totalLoss = NetworkLatencyJitterProber.AnalyzeSamples(new List<LatencySample>
|
|
{
|
|
new(0.0, false),
|
|
new(0.0, false)
|
|
});
|
|
Assert.Equal(NetworkHealthRating.Poor, totalLoss.Rating);
|
|
Assert.Equal(100.0, totalLoss.PacketLossPercent);
|
|
}
|
|
}
|