sharee.bike-App/TestShareeLib/Model/State/TestStateRequestedInfo.cs

125 lines
4.6 KiB
C#
Raw Normal View History

2023-05-11 17:39:28 +02:00
using System;
2021-07-12 21:31:46 +02:00
using System.Collections.Generic;
2022-08-30 15:42:25 +02:00
using NUnit.Framework;
2021-07-12 21:31:46 +02:00
using TINK.Model.State;
namespace TestTINKLib
{
2022-08-30 15:42:25 +02:00
2022-09-06 16:08:19 +02:00
[TestFixture]
public class TestStateRequestedInfo
{
[Test]
public void TestConstruct_FromApp()
{
Assert.AreEqual(
InUseStateEnum.Reserved,
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20, 12, 1, 0), new DateTime(2017, 09, 20, 12, 0, 0), TimeSpan.FromMinutes(15), "a@b", null).Value);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
"a@b",
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20, 12, 1, 0), new DateTime(2017, 09, 20, 12, 0, 0), TimeSpan.FromMinutes(15), "a@b", null).MailAddress);
2022-09-06 16:08:19 +02:00
Assert.IsNull(
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20, 12, 1, 0), new DateTime(2017, 09, 20, 12, 0, 0), TimeSpan.FromMinutes(15), "a@b", null).Code);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
new DateTime(2017, 09, 20, 12, 0, 0),
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20, 12, 1, 0), new DateTime(2017, 09, 20, 12, 0, 0), TimeSpan.FromMinutes(15), "a@b", null).From);
2022-09-06 16:08:19 +02:00
Assert.IsTrue(
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20, 12, 1, 0), new DateTime(2017, 09, 20, 12, 0, 0), TimeSpan.FromMinutes(15), "a@b", null).GetIsStillReserved(out TimeSpan? l_oRemainigTime));
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
14,
2023-06-06 12:00:24 +02:00
l_oRemainigTime.Value.Minutes);
2022-09-06 16:08:19 +02:00
}
[Test]
public void TestConstruct_FromWebserver()
{
Assert.AreEqual(
InUseStateEnum.Reserved,
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20), new DateTime(2017, 09, 19), TimeSpan.FromMinutes(15), "a@b", "372").Value);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
"a@b",
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20), new DateTime(2017, 09, 19), TimeSpan.FromMinutes(15), "a@b", "372").MailAddress);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
"372",
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20), new DateTime(2017, 09, 19), TimeSpan.FromMinutes(15), "a@b", "372").Code);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
new DateTime(2017, 09, 19),
2023-06-06 12:00:24 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20), new DateTime(2017, 09, 19), TimeSpan.FromMinutes(15), "a@b", "372").From);
2022-09-06 16:08:19 +02:00
Assert.IsTrue(
2023-07-04 11:06:38 +02:00
new StateRequestedInfo(() => new DateTime(2017, 09, 20, 12, 12, 0), new DateTime(2017, 09, 20, 12, 0, 0), TimeSpan.FromMinutes(15), "a@b", "372").GetIsStillReserved(out TimeSpan? remainingTime));
2022-09-06 16:08:19 +02:00
Assert.AreEqual(
3,
2023-07-04 11:06:38 +02:00
remainingTime.Value.Minutes);
2022-09-06 16:08:19 +02:00
}
[Test]
public void TestTryUpdateOnTimeElapsed()
{
var l_oReservedAt = new DateTime(2017, 09, 20, 22, 01, 00);
var l_oDateTimeMock = new DateTimeMocker(new List<DateTime> {
l_oReservedAt.Add(new TimeSpan(0, 4, 0)), // Reserved for 4 mns
2021-07-12 21:31:46 +02:00
l_oReservedAt.Add(new TimeSpan(0, 16, 0)) // Time elapsed since booking 16 mns
});
2023-06-06 12:00:24 +02:00
var l_oReservedInfo = new StateRequestedInfo(l_oDateTimeMock.GetDateTime, l_oReservedAt, TimeSpan.FromMinutes(15), "a@b", null);
2022-09-06 16:08:19 +02:00
Assert.AreEqual("a@b", l_oReservedInfo.MailAddress);
Assert.AreEqual(new DateTime(2017, 09, 20, 22, 01, 00), l_oReservedInfo.From, "a@b");
// Invoke first update (after simulated 4mns)
2023-05-11 17:39:28 +02:00
Assert.IsTrue(l_oReservedInfo.GetIsStillReserved(out TimeSpan? remainingTime));
Assert.AreEqual(11, remainingTime.Value.Minutes);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(new DateTime(2017, 09, 20, 22, 01, 00), l_oReservedInfo.From, "a@b");
// Invoke second update (after simulated 16 mns)
2023-05-11 17:39:28 +02:00
Assert.IsFalse(l_oReservedInfo.GetIsStillReserved(out remainingTime));
Assert.IsNull(remainingTime);
2022-09-06 16:08:19 +02:00
Assert.AreEqual(new DateTime(2017, 09, 20, 22, 01, 00), l_oReservedInfo.From, "a@b");
}
2023-06-06 12:00:24 +02:00
[Test]
public void TestReservationTimeSpanCtor() =>
Assert.That(new StateRequestedInfo().MaxReservationTimeSpan, Is.EqualTo(TimeSpan.Zero));
[Test]
public void TestGetIsStillReserved() =>
Assert.That(new StateRequestedInfo(
() => new DateTime(2023, 5, 11, 14, 42, 0, 100), // one hundred millisecond after bike was reserved
new DateTime(2023, 5, 11, 14, 42, 0, 0),
TimeSpan.FromSeconds(1),
"a@b",
"").GetIsStillReserved(out _),
Is.True);
[Test]
public void TestGetIsStillReservedExpired() =>
Assert.That(new StateRequestedInfo(
() => new DateTime(2023, 5, 11, 14, 42, 0, 100), // one hundred millisecond after bike was reserved
new DateTime(2023, 5, 11, 14, 42, 0, 0),
TimeSpan.FromMilliseconds(50),
"a@b",
"").GetIsStillReserved(out _),
Is.False);
[Test]
public void TestGetIsStillReservedInvalidMaxReservationTimeSpan() =>
Assert.That(new StateRequestedInfo(
() => new DateTime(2023, 5, 11, 14, 42, 0, 1), // one hundred millisecond after bike was reserved
new DateTime(2023, 5, 11, 14, 42, 0, 0),
TimeSpan.Zero,
"a@b",
"").GetIsStillReserved(out _),
Is.False);
2022-09-06 16:08:19 +02:00
}
2021-07-12 21:31:46 +02:00
}