private void RemoveLocationsAndValidate(BinManager manager, List <MachineId> locations, int locationsToRemove) { for (var i = 0; i < locationsToRemove; i++) { var locationToRemove = locations[0]; var binsWithMachineAssigned = manager.GetBins(force: true) .Select((machines, bin) => (machines, bin)) .Where(t => t.machines.Contains(locationToRemove)) .Select(t => (uint)t.bin) .ToHashSet(); var chain = manager.EnumeratePreviousBins(0).Take(30).Select(b => (b, binsWithMachineAssigned.Contains(b))).ToList(); locations.Remove(locationToRemove); manager.RemoveLocation(locationToRemove); ValidateBalanced(manager, locations); foreach (var binWithMachineAssigned in binsWithMachineAssigned) { var assignedMachines = manager.GetDesignatedLocations(binWithMachineAssigned, includeExpired: false); var assignedMachinesWithExpired = manager.GetDesignatedLocations(binWithMachineAssigned, includeExpired: true); assignedMachines.Should().NotContain(locationToRemove); assignedMachinesWithExpired.Should().Contain(locationToRemove); } } }