public AllocateResult Allocate(AllocateSpec spec) { var businessUsage = AllocateBusinessOffers(spec.BusinessOffersDesc.ToList(), spec.BusinessSeats); var remainingFreeBusinessSeats = Math.Max(spec.BusinessSeats - businessUsage.Seats, 0); var economyUsage = AllocateEconomyOffers(spec.EconomyOffersDesc.ToList(), remainingFreeBusinessSeats, spec.EconomySeats); return(new AllocateResult { BusinessUsage = businessUsage, EconomyUsage = economyUsage }); }
public void AllocateTests(int businessSeats, int economySeats, AllocateResult expected) { // Arrange var offers = new[] { 374, 209, 155, 115, 101, 100, 99, 45, 23, 22 }; var spec = new AllocateSpec(offers, businessSeats, economySeats, 100); var allocationService = new AllocationService(); var comparer = new UsageEqualityComparer(); // Act var actual = allocationService.Allocate(spec); // Assert Assert.Equal(actual.BusinessUsage, expected.BusinessUsage, comparer); Assert.Equal(actual.EconomyUsage, expected.EconomyUsage, comparer); }