public void ResolveTie_SplitsTheResultsApproximatelyByExpectation() { // Arrange var tieBreaker = new RandomisingTwoWayTieBreaker(0.3); // Act var leftResultCount = 0; var rightResultCount = 0; for (var i = 0; i < 10000; i++) { switch (tieBreaker.ResolveTie()) { case TieResult.Left: leftResultCount++; break; case TieResult.Right: rightResultCount++; break; default: throw new ArgumentOutOfRangeException(); } } // Assert leftResultCount.Should().BeLessThan(4000).And.BeGreaterThan(2000); rightResultCount.Should().BeLessThan(8000).And.BeGreaterThan(6000); }
public void GivenLeftProbability_CreatesATieBreakerWithThatLeftProbability() { // Act const double leftProbability = 0.643; var tieBreaker = new RandomisingTwoWayTieBreaker(leftProbability); // Assert tieBreaker.LeftProbability.Should().Be(leftProbability); tieBreaker.RightProbability.Should().Be(1 - leftProbability); }