public void ModeratorAwardsCandidates() { _moderator.BeginNextRound(); List <Candidate> candidates = _moderator.DealCandidates(2); SynchronizeAndQuiesce(); Offer offerAlan1 = MakeOffer(_alan, 3, candidates[0].Unique); Offer offerAlan2 = MakeOffer(_alan, 1, candidates[1].Unique); Offer offerFlynn1 = MakeOffer(_flynn, 2, candidates[0].Unique); Offer offerFlynn2 = MakeOffer(_flynn, 7, candidates[1].Unique); SynchronizeAndQuiesce(); _moderator.AwardCandidates(); SynchronizeAndQuiesce(); Assert.AreEqual(1, candidates[0].Offers.Count(offer => offer.Hires.Any())); Assert.AreEqual(1, candidates[1].Offers.Count(offer => offer.Hires.Any())); bool candidate1SelectedAlan = offerAlan1.Hires.Any(); bool candidate2SelectedAlan = offerAlan2.Hires.Any(); bool candidate1SelectedFlynn = offerFlynn1.Hires.Any(); bool candidate2SelectedFlynn = offerFlynn2.Hires.Any(); Assert.IsTrue(candidate1SelectedAlan ^ candidate1SelectedFlynn); Assert.IsTrue(candidate2SelectedAlan ^ candidate2SelectedFlynn); }