70 lines
1.7 KiB
C#
70 lines
1.7 KiB
C#
namespace Transport.Test;
|
|
|
|
public sealed class TravelManagementTests : TestBase
|
|
{
|
|
[Fact]
|
|
public void Initialize_FileFound()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
[Fact]
|
|
public void Initialize_FileNotFound()
|
|
{
|
|
TravelManagement travelManagement = new();
|
|
|
|
travelManagement.InitializeFromFile("not-exists.xlsx")
|
|
.Should().BeFalse();
|
|
}
|
|
|
|
[Fact]
|
|
public void Rent_Car_Simple()
|
|
{
|
|
Init().RentVehicle<Car>("Hansi", 400D)
|
|
.Should().NotBeNull()
|
|
.And.Match<Car>(c => c.Id == 101 && !c.IsFree);
|
|
}
|
|
|
|
[Fact]
|
|
public void Rent_Car_Return()
|
|
{
|
|
var car = Init().RentVehicle<Car>("Hansi", 400D);
|
|
|
|
car.Should().NotBeNull()
|
|
.And.Match<Car>(c => c.Id == 101);
|
|
car?.EndRide()
|
|
.Should().Be((true, 421.8M));
|
|
car?.IsFree.Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public void Rent_Rickshaw_Simple()
|
|
{
|
|
var mgmt = Init();
|
|
|
|
mgmt.RentVehicle<Rickshaw>("Susi", 40D)
|
|
.Should().NotBeNull()
|
|
.And.Match<Rickshaw>(r => r.Id == 201, "newest avail. rickshaw");
|
|
mgmt.RentVehicle<Rickshaw>("Hansi", 25D)
|
|
.Should().NotBeNull()
|
|
.And.Match<Rickshaw>(r => r.Id == 204, "other rickshaw still en route");
|
|
}
|
|
|
|
[Fact]
|
|
public void Rent_DistanceTooHigh()
|
|
{
|
|
var mgmt = Init();
|
|
|
|
mgmt.RentVehicle<Rickshaw>("Hansi", 120D)
|
|
.Should().NotBeNull("car available")
|
|
.And.BeOfType<Car>("distance too high for rickshaw");
|
|
}
|
|
|
|
private static TravelManagement Init()
|
|
{
|
|
var mgmt = new TravelManagement();
|
|
mgmt.InitializeFromFile(Path).Should().BeTrue();
|
|
|
|
return mgmt;
|
|
}
|
|
}
|