add unit tests
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
using SafelyYou;
|
||||
|
||||
namespace SafelyYouTests;
|
||||
|
||||
public class DeviceHeartBeatHistoryTests
|
||||
{
|
||||
private static readonly DateTimeOffset T0 = new(2024, 1, 1, 12, 0, 0, TimeSpan.Zero);
|
||||
private static readonly DateTimeOffset T1 = T0.AddMinutes(1);
|
||||
private static readonly DateTimeOffset T2 = T0.AddMinutes(2);
|
||||
|
||||
[Test]
|
||||
public void Add_FirstHeartbeat_SetsFirstLastAndCount()
|
||||
{
|
||||
var history = new DeviceHeartBeatHistory();
|
||||
|
||||
var result = history.Add(T0);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
Assert.That(history.NumberOfHeartBeats, Is.EqualTo(1));
|
||||
Assert.That(history.FirstHeartBeat, Is.EqualTo(T0));
|
||||
Assert.That(history.LastHeartBeat, Is.EqualTo(T0));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Add_LaterHeartbeat_UpdatesLastAndIncrementsCount()
|
||||
{
|
||||
var history = new DeviceHeartBeatHistory();
|
||||
history.Add(T0);
|
||||
|
||||
var result = history.Add(T1);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
Assert.That(history.NumberOfHeartBeats, Is.EqualTo(2));
|
||||
Assert.That(history.FirstHeartBeat, Is.EqualTo(T0));
|
||||
Assert.That(history.LastHeartBeat, Is.EqualTo(T1));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Add_SameTimestampAsLast_IsAccepted()
|
||||
{
|
||||
var history = new DeviceHeartBeatHistory();
|
||||
history.Add(T0);
|
||||
|
||||
var result = history.Add(T0);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
Assert.That(history.NumberOfHeartBeats, Is.EqualTo(2));
|
||||
Assert.That(history.FirstHeartBeat, Is.EqualTo(T0));
|
||||
Assert.That(history.LastHeartBeat, Is.EqualTo(T0));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Add_EarlierThanLast_ReturnsOutOfSequenceAndDoesNotMutate()
|
||||
{
|
||||
var history = new DeviceHeartBeatHistory();
|
||||
history.Add(T1);
|
||||
|
||||
var result = history.Add(T0);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.EqualTo(DeviceHeartBeatHistory.AddResult.OutOfSequence));
|
||||
Assert.That(history.NumberOfHeartBeats, Is.EqualTo(1));
|
||||
Assert.That(history.FirstHeartBeat, Is.EqualTo(T1));
|
||||
Assert.That(history.LastHeartBeat, Is.EqualTo(T1));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Add_MultipleInOrder_KeepsFirstAndAdvancesLast()
|
||||
{
|
||||
var history = new DeviceHeartBeatHistory();
|
||||
|
||||
Assert.That(history.Add(T0), Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
Assert.That(history.Add(T1), Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
Assert.That(history.Add(T2), Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(history.NumberOfHeartBeats, Is.EqualTo(3));
|
||||
Assert.That(history.FirstHeartBeat, Is.EqualTo(T0));
|
||||
Assert.That(history.LastHeartBeat, Is.EqualTo(T2));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Add_WithGap_StillCountsHeartbeat()
|
||||
{
|
||||
var history = new DeviceHeartBeatHistory();
|
||||
history.Add(T0);
|
||||
|
||||
var muchLater = T0.AddHours(1);
|
||||
var result = history.Add(muchLater);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(result, Is.EqualTo(DeviceHeartBeatHistory.AddResult.Added));
|
||||
Assert.That(history.NumberOfHeartBeats, Is.EqualTo(2));
|
||||
Assert.That(history.LastHeartBeat, Is.EqualTo(muchLater));
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user