public static List <CodeReviewPairing> GetCodeReviewPairs(IEnumerable <string> participantCollection) { var participants = participantCollection.ToList(); List <CodeReviewPairing> pairs = new List <CodeReviewPairing>(); if (participants == null || participants.Count < 2) { return(new List <CodeReviewPairing>()); } while (participants.Count > 1) { var reviewerIndex = Randomiser.GetRandomInt(0, participants.Count); var reviewer = participants[reviewerIndex]; participants.RemoveAt(reviewerIndex); var revieweeIndex = Randomiser.GetRandomInt(0, participants.Count); var reviewee = participants[revieweeIndex]; participants.RemoveAt(revieweeIndex); pairs.Add(new CodeReviewPairing(reviewer, reviewee)); } //Odd number so pick a reviewee to be a reviewer if (participants.Any()) { var reviewerIndex = Randomiser.GetRandomInt(0, pairs.Count); pairs.Add(new CodeReviewPairing(pairs[reviewerIndex].Reviewee, participants[0])); } return(pairs); }
public void ShouldReturnARandomNumberBetween1and10() { for (int i = 0; i < 1000; i++) { var ans = Randomiser.GetRandomInt(1, 10); Assert.True(ans >= 1 && ans <= 10); Console.WriteLine(ans); } }