mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-06-21 21:46:27 +02:00
Version 3.0.312.
This commit is contained in:
parent
310ea37085
commit
fd0e63cf10
94 changed files with 3189 additions and 6352 deletions
|
@ -23,7 +23,7 @@ namespace TestTINKLib
|
|||
string stationId = null,
|
||||
string stationName = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
Func<DateTime> dateTimeProvider = null,
|
||||
IStateInfo stateInfo = null) : base(id, lockType, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
||||
{
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace TestTINKLib
|
|||
string stationId = null,
|
||||
string stationName = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
Func<DateTime> dateTimeProvider = null,
|
||||
IStateInfo stateInfo = null) : base(id, lockType, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
||||
{
|
||||
|
|
|
@ -346,9 +346,13 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
Assert.That(btBikeReserved.WheelType, Is.Null);
|
||||
Assert.AreEqual(DateTime.Parse("2021-07-04 17:46:36.237404+02"), btBikeReserved.State.From); // Sommer/ Winterzeit!
|
||||
Assert.That(btBikeReserved.State.Code, Is.EqualTo(string.Empty), "Not needed for bt bikes.");
|
||||
Assert.That(btBikeReserved.TariffDescription.FeeEuroPerHour, Is.EqualTo(3));
|
||||
Assert.That(btBikeReserved.TariffDescription.MaxFeeEuroPerDay, Is.EqualTo(10));
|
||||
Assert.That(btBikeReserved.TariffDescription.Number, Is.EqualTo(5494));
|
||||
Assert.That(
|
||||
btBikeReserved.TariffDescription.TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("3.00 €/hour"));
|
||||
Assert.That(
|
||||
btBikeReserved.TariffDescription.TariffEntries["3"].Value, // MaxFeeEuroPerDay
|
||||
Is.EqualTo("10.00 €/day"));
|
||||
Assert.That(btBikeReserved.TariffDescription.Id, Is.EqualTo(5494));
|
||||
Assert.That(btBikeReserved.TariffDescription.Name, Is.EqualTo("Tester Basic"));
|
||||
Assert.That(btBikeReserved.StationId, Is.EqualTo("FR_103"));
|
||||
Assert.That(btBikeReserved.LockInfo.Id, Is.EqualTo(2302373));
|
||||
|
@ -367,9 +371,13 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
Assert.That(btBikeRented.WheelType, Is.Null);
|
||||
Assert.AreEqual(DateTime.Parse("2020-10-12 08:38:30.401679+02"), btBikeRented.State.From); // Sommer/ Winterzeit!
|
||||
Assert.AreEqual(string.Empty, btBikeRented.State.Code, "Not needed for bt bikes.");
|
||||
Assert.That(btBikeRented.TariffDescription.FeeEuroPerHour, Is.EqualTo(2.5));
|
||||
Assert.That(btBikeRented.TariffDescription.MaxFeeEuroPerDay, Is.EqualTo(10));
|
||||
Assert.That(btBikeRented.TariffDescription.Number, Is.EqualTo(5494));
|
||||
Assert.That(
|
||||
btBikeRented.TariffDescription.TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("2.50 €/hour"));
|
||||
Assert.That(
|
||||
btBikeRented.TariffDescription.TariffEntries["3"].Value, // MaxFeeEuroPerDay
|
||||
Is.EqualTo("10.00 €/day"));
|
||||
Assert.That(btBikeRented.TariffDescription.Id, Is.EqualTo(5494));
|
||||
Assert.That(btBikeRented.TariffDescription.Name, Is.EqualTo("Tester Basic"));
|
||||
Assert.That(btBikeRented.StationId, Is.EqualTo("103"));
|
||||
Assert.That(btBikeRented.LockInfo.Id, Is.EqualTo(2200537));
|
||||
|
@ -860,20 +868,20 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
Is.EqualTo("Tester Basic"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().Number,
|
||||
tariffDescription.Create().Id,
|
||||
Is.EqualTo(5494));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.FromMinutes(90)));
|
||||
tariffDescription.Create().TariffEntries["1"].Value, // Free time per session
|
||||
Is.EqualTo("1.50 hour(s)/day")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FeeEuroPerHour,
|
||||
Is.EqualTo(10.5));
|
||||
tariffDescription.Create().TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("10.50 €/hour")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().AboEuroPerMonth,
|
||||
Is.EqualTo(920.99));
|
||||
tariffDescription.Create().TariffEntries["4"].Value, // Abo euro per month
|
||||
Is.EqualTo("920.99 €/month"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -906,7 +914,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().Number,
|
||||
tariffDescription.Create().Id,
|
||||
Is.EqualTo(5494));
|
||||
}
|
||||
|
||||
|
@ -923,8 +931,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.FromMinutes(90)));
|
||||
tariffDescription.Create().TariffEntries["1"].Value, // Free time per session
|
||||
Is.EqualTo("1.50 hour(s)/day")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -940,8 +948,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FeeEuroPerHour,
|
||||
Is.EqualTo(10.5));
|
||||
tariffDescription.Create().TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("10.50 €/hour")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -957,8 +965,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().AboEuroPerMonth,
|
||||
Is.EqualTo(920.99));
|
||||
tariffDescription.Create().TariffEntries["4"].Value, // Abo euro per month
|
||||
Is.EqualTo("920.99 €/month"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -979,7 +987,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().Number,
|
||||
tariffDescription.Create().Id,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
|
@ -990,8 +998,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.Zero));
|
||||
tariffDescription.Create().TariffEntries.ContainsKey("1"), // Free time per session
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1001,8 +1009,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FeeEuroPerHour,
|
||||
Is.NaN);
|
||||
tariffDescription.Create().TariffEntries.ContainsKey("2"), // FeeEuroPerHour
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1012,8 +1020,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().AboEuroPerMonth,
|
||||
Is.NaN);
|
||||
tariffDescription.Create().TariffEntries.ContainsKey("4"), // Abo euro per month
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1028,7 +1036,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_Number_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).Number,
|
||||
BikeInfoFactory.Create((TariffDescription)null).Id,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
|
@ -1036,24 +1044,24 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_FreeTimePerSession_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.Zero));
|
||||
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("1"), // Free time per session
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateTariffDescription_FeeEuroPerHour_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).FeeEuroPerHour,
|
||||
Is.NaN);
|
||||
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("2"), // FeeEuroPerHour
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateTariffDescription_AboEuroPerMonth_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).AboEuroPerMonth,
|
||||
Is.NaN);
|
||||
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("4"), // Abo euro per month
|
||||
Is.False);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1301,5 +1309,192 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
bookingFinished.MiniSurvey.Questions.Count,
|
||||
Is.EqualTo(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionEmpyJson()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<RentalDescription>(@"");
|
||||
|
||||
Assert.That(
|
||||
response.Create().Name,
|
||||
Is.Empty);
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries.Count,
|
||||
Is.EqualTo(0));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries.Count,
|
||||
Is.EqualTo(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescription()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""1"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
},
|
||||
""name"": ""REN E-Bike"",
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""8"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().Name,
|
||||
Is.EqualTo("REN E-Bike"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().Id,
|
||||
Is.EqualTo(1));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries.Count,
|
||||
Is.EqualTo(3));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["1"].Description,
|
||||
Is.EqualTo("Mietgebühr"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["1"].Value,
|
||||
Is.EqualTo("2,00 € / 1 Std"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["4"].Description,
|
||||
Is.EqualTo("Max. Gebühr"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["4"].Value,
|
||||
Is.EqualTo("40.00 € / Tag"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["6"].Description,
|
||||
Is.EqualTo("Gratis Mietzeit"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["6"].Value,
|
||||
Is.EqualTo("30 Min / Tag"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["8"].Key,
|
||||
Is.EqualTo("Tracking"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["8"].Value,
|
||||
Is.EqualTo("Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["9"].Key,
|
||||
Is.EqualTo("AGB"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["9"].Value,
|
||||
Is.EqualTo("Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionDupeTarifElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""6"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionDupeInfoElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""9"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries.Count,
|
||||
Is.EqualTo(1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionsNoTariffElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""rental_info"" : {
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries,
|
||||
Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionsNoInfoElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""rental_info"" : {
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries,
|
||||
Is.Not.Null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
192
TestShareeLib/Repository/Response/TestRentalDescription.cs
Normal file
192
TestShareeLib/Repository/Response/TestRentalDescription.cs
Normal file
|
@ -0,0 +1,192 @@
|
|||
using NUnit.Framework;
|
||||
using System.Linq;
|
||||
using TINK.Repository.Response;
|
||||
|
||||
namespace TestShareeLib.Repository.Response
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestRentalDescription
|
||||
{
|
||||
[Test]
|
||||
public void TestDeserialize()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""1"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
},
|
||||
""name"": ""REN E-Bike"",
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""8"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.id,
|
||||
Is.EqualTo("1"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.name,
|
||||
Is.EqualTo("REN E-Bike"));
|
||||
|
||||
var tariffEntires = tariffDescription.tarif_elements.OrderBy(x => x.Key).Select(x => x.Value).ToList();
|
||||
Assert.That(
|
||||
tariffEntires.Count,
|
||||
Is.EqualTo(3));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[0][0],
|
||||
Is.EqualTo("Mietgebühr"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[0][1],
|
||||
Is.EqualTo("2,00 € / 1 Std"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[1][0],
|
||||
Is.EqualTo("Max. Gebühr"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[1][1],
|
||||
Is.EqualTo("40.00 € / Tag"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[2][0],
|
||||
Is.EqualTo("Gratis Mietzeit"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[2][1],
|
||||
Is.EqualTo("30 Min / Tag"));
|
||||
|
||||
var rentalInfo = tariffDescription.rental_info.OrderBy(x => x.Key).Select(x => x.Value).ToList();
|
||||
Assert.That(
|
||||
rentalInfo.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[0][0],
|
||||
Is.EqualTo("Tracking"));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[0][1],
|
||||
Is.EqualTo("Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!"));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[1][0],
|
||||
Is.EqualTo("AGB"));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[1][1],
|
||||
Is.EqualTo("Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that missing elements are initialized correctly.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestDeserialize_Missing()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"" : ""5494"",
|
||||
""name"" : ""Tester Basic""
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.id,
|
||||
Is.EqualTo("5494"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.name,
|
||||
Is.EqualTo("Tester Basic"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.tarif_elements,
|
||||
Is.Null);
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.rental_info,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that unknown elemts in JSON to not lead to firing of exceptions.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestDeserialize_NewElement()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"" : ""5494"",
|
||||
""name"" : ""Tester Basic"",
|
||||
""FancyNewElement"" : ""Yeah""
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.id,
|
||||
Is.EqualTo("5494"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.name,
|
||||
Is.EqualTo("Tester Basic"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeserializeDuplicateKey()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""6"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
},
|
||||
""name"": ""REN E-Bike"",
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""8"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.tarif_elements.Count,
|
||||
Is.EqualTo(2),
|
||||
"Dupliate elements are supposed to be ignored.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -663,7 +663,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -740,7 +740,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -813,7 +813,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -889,7 +889,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -965,7 +965,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1039,7 +1039,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1098,7 +1098,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1280,7 +1280,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1342,7 +1342,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1405,7 +1405,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
Substitute.For<IUser>());
|
||||
|
||||
// Verify prerequisites.
|
||||
Assert.AreEqual("Open lock & continue renting", handler.ButtonText);
|
||||
Assert.AreEqual("Open lock", handler.ButtonText);
|
||||
Assert.IsTrue(handler.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", handler.LockitButtonText);
|
||||
Assert.IsTrue(handler.IsLockitButtonVisible);
|
||||
|
@ -227,7 +227,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Unknown" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -289,7 +289,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -347,7 +347,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Disconnected" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -793,7 +793,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -975,7 +975,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1037,7 +1037,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1100,7 +1100,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -229,7 +229,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Unknown" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -291,7 +291,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -349,7 +349,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Disconnected" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -666,7 +666,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -845,7 +845,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -907,7 +907,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -970,7 +970,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
using NUnit.Framework;
|
||||
using TINK.Model.Bikes.Bike;
|
||||
using TINK.ViewModel.Bikes.Bike;
|
||||
|
||||
namespace TestShareeLib.ViewModel.Bikes.Bike
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestTariffDescriptionViewModel
|
||||
{
|
||||
[Test]
|
||||
public void TestCtor()
|
||||
{
|
||||
var model = new RentalDescription
|
||||
{
|
||||
Name = "Fancy Tarif",
|
||||
Id = 47,
|
||||
TariffEntries = new System.Collections.Generic.Dictionary<string, RentalDescription.TariffElement>
|
||||
{
|
||||
{ "23", new RentalDescription.TariffElement { Value = "Max Gebühr", Description = "9.00 € / Tag"} },
|
||||
{ "24", new RentalDescription.TariffElement { Value = "Gratis Mietzeit", Description = "30 Min / Tag"} },
|
||||
},
|
||||
InfoEntries = new System.Collections.Generic.Dictionary<string, RentalDescription.InfoElement>
|
||||
{
|
||||
{ "15", new RentalDescription.InfoElement { Key = "Tracking", Value = "Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!" } },
|
||||
{ "22", new RentalDescription.InfoElement { Key = "AGB", Value ="Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"} }
|
||||
}
|
||||
};
|
||||
|
||||
var viewModel = new TariffDescriptionViewModel(model);
|
||||
|
||||
Assert.That(
|
||||
viewModel.Name,
|
||||
Is.EqualTo("Fancy Tarif"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TariffEntries.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
Assert.That(
|
||||
viewModel.InfoEntries.Count,
|
||||
Is.EqualTo(1));
|
||||
|
||||
Assert.That(
|
||||
viewModel.OperatorAgb,
|
||||
Is.EqualTo("Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry1.Value,
|
||||
Is.EqualTo("Max Gebühr"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry1.Description,
|
||||
Is.EqualTo("9.00 € / Tag"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry2.Value,
|
||||
Is.EqualTo("Gratis Mietzeit"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry2.Description,
|
||||
Is.EqualTo("30 Min / Tag"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry3.Value,
|
||||
Is.Empty);
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry3.Description,
|
||||
Is.Empty);
|
||||
|
||||
Assert.That(
|
||||
viewModel.InfoEntry1,
|
||||
Is.EqualTo("Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.InfoEntry2,
|
||||
Is.Empty);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -290,7 +290,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
Assert.AreEqual("Available.", bike1315.StateText);
|
||||
Assert.AreEqual("Available.", bike1543.StateText);
|
||||
Assert.AreEqual("Close lock", bike1545.LockitButtonText);
|
||||
Assert.AreEqual("Open lock & continue renting", bike1537.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", bike1537.LockitButtonText);
|
||||
Assert.AreEqual("DisposableDisconnected", bike1315.LockitButtonText);
|
||||
Assert.AreEqual("DisposableDisconnected", bike1543.LockitButtonText);
|
||||
|
||||
|
|
46
TestShareeLib/ViewModel/TestPollingTaskManager.cs
Normal file
46
TestShareeLib/ViewModel/TestPollingTaskManager.cs
Normal file
|
@ -0,0 +1,46 @@
|
|||
using NUnit.Framework;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.ViewModel;
|
||||
using TINK.Settings;
|
||||
|
||||
namespace UITest.Fixtures.ObjectTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestPollingTaskManager
|
||||
{
|
||||
[Test]
|
||||
public async Task TestStopUpdatePeriodiallyRepeated()
|
||||
{
|
||||
var l_oManger = new PollingUpdateTaskManager(() => Task.Delay(1000));
|
||||
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||
|
||||
l_oManger.StopUpdatePeridically().Wait();
|
||||
|
||||
// Should not lead to dead lock.
|
||||
l_oManger.StopUpdatePeridically().Wait();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestStartUpdatePeriodiallyRepeated()
|
||||
{
|
||||
var l_oManger = new PollingUpdateTaskManager(() => Task.Delay(1000));
|
||||
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||
|
||||
// Should not lead to dead lock.
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||
|
||||
l_oManger.StopUpdatePeridically().Wait();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestStopUpdatePeriodiallyNoStart()
|
||||
{
|
||||
var l_oManger = new PollingUpdateTaskManager(() => Task.Delay(1000));
|
||||
|
||||
// Should not lead to dead lock.
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||
}
|
||||
}
|
||||
}
|
45
TestShareeLib/ViewModel/TestPollingUpdateTask.cs
Normal file
45
TestShareeLib/ViewModel/TestPollingUpdateTask.cs
Normal file
|
@ -0,0 +1,45 @@
|
|||
using NUnit.Framework;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.ViewModel;
|
||||
|
||||
namespace TestTINKLib.Fixtures.ObjectTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestPollingUpdateTask
|
||||
{
|
||||
/// <summary>
|
||||
/// Verify that no exception is thrown when invoking Terminate.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task TestCtorPollingOff()
|
||||
{
|
||||
var task = new PollingUpdateTask(() => throw new System.Exception("This must not be called."), null);
|
||||
|
||||
await task.Terminate();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestCtorPollingOn()
|
||||
{
|
||||
int index = 0;
|
||||
var task = new PollingUpdateTask(() => index++, new System.TimeSpan(10));
|
||||
|
||||
System.Threading.SpinWait.SpinUntil(() => index > 2);
|
||||
|
||||
await task.Terminate();
|
||||
|
||||
Assert.That(index, Is.AtLeast(3), "Delegate which increments index must be called.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestTerminateRepeated()
|
||||
{
|
||||
var tasks = new PollingUpdateTask(async () => await Task.Delay(1000), new System.TimeSpan(0, 0, 2));
|
||||
|
||||
tasks.Terminate().Wait();
|
||||
|
||||
// Verify that calling terminate twice does not lead to hang of call.
|
||||
tasks.Terminate().Wait();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue